docker中的命令参数(小白常用)

1 docker run

run是最常用的命令,他是docker creat和docker start命令的组合,创建容器并启动它。run的参数比较难理解的是-i 和-t 以及-d,分别说说这三个。

-i

-i 参数是keep STDIN open even if not attached,意思就是会把交互界面保留着。但是要看容器的PID1,或者说看容器的CMD是什么,有些CMD程序并不会理会任何输入,也就是说它就没有等着你输入命令,这时候你输入什么都是无效的。并且,因为linux对pid1的特殊处理,它也不会理会信号,所以你只能按ctrl+p + ctrl+q,把程序放到后台。(但通常都要run -it一起使用才有效)

-t

allocate a pseudo-TTY.作用是分配一个虚拟的终端,我的理解就是,有了-t参数,这个docker就会被分配一个终端,在docker中启动bash就会有提示符。不过,-it总是一起出现的。

-d

run container in background and print container ID,就是在后台运行容器。相当于进去之后,按了ctrl+p + ctrl+q。所以可以docker attch回去。在后台运行的容器,只能通过网络和它交互了。

-a

可以定义到底是attach STDIN、STDOUT\STDERR,如果没有定义,则默认是 attach to both stdout and stderr

--rm

容器退出后,自动删除容器

--name

为容器取一个名字

--p hostport:containerport

设置端口转发

总结

要启动一个容器,这个容器的pid1应用是一个不需要与用户命令行交互的,比如一个什么web应用服务,那么就用-d参数,然容器运行在后台,好好服务。比如:

docker run --name mywebserver -d -p 80:80 my_image nginx -g ‘daemon off;‘

要启动一个容器并且用这个容器来做命令操作,他的pid1进程是一个和用户交互的程序,比如启动一台busybox(pid1是bash),那么用 -it。比如:

 docker run -a stdin -a stdout -i -t ubuntu /bin/bash

或者

 docker run --name myubuntu -it ubuntu /bin/bash

如果要工作后即焚毁,那么就带上--rm就好了。

注意

如果容器要从管道中获取输入,就不允许带-t了。比如:

$ echo test | docker run -i busybox cat

2 docker start

start是启动一个已经存在的容器,他有两个参数-a 和-i。

-a

attach STDOUT/STDERR。 -a参数带上了的话,那么会把pid1程序的输出都带到终端上

-i

attach container‘s STDIN。 -i参数是为了让容器相应输入,作用其实和run中的-i一样。

总结

启动一个容器作为服务,就什么参数都不要带,让他运行在后台。

启动一个容器作为交互应用,就带上-i。

3 docker attach

attach命令把一个后台运行的容器搞到前台来,这样你就可以看到他们的输出,并且使用输入了。

--no-stdin

关闭输入,这样你就不能使用输入了

--sig-proxy

信号转发,默认开启,这样DMD进程就可以收到你的信号了。

总结

把后台边前台,基本上就是一种单一的用法docker attach container_name了。

注意

(1)因为attach是进入了和CMD程序交互,但是CMD程序未必就会相应你的输入(一般程序都不会相应你的输入吧,因为他有没有动标准流中读取什么东西),所以不要以为程序死了。

(2)因为linux对PID1程序的特殊照顾,所以它本身不会相应任何信号,除非程序自己定义了相应信号的处理方案。也就是说,你按ctrl+c可能没什么反应哦。

(3)因为attach对stdout和stderr做了1M的缓存,如果缓存占满了,输出就会有卡顿感,所以如果程序有大量的输出,就不要用attach去看,而应该用docker logs去看log哦。

(4)如果容器建立的时候是tty-enabled container (i.e.: launched with -t),那么就不允许重定向输入哦。

attach的退出码是容器退出后的退出码。

4 docker exec

这个命令是用已经运行的容器执行命令。需要注意的是,如果容器关闭后再次运行,那么用exec命令执行的命令是不会自己再次执行的。

-d

让命令在后台执行。

-e

设置环境变量

-i -t

运行交互命令的时候用

-u -w

分别设置命令运行的用户和work directory。

总结

你要运行交互的程序,那么就用-it。否则,就什么参数都不带

你要改变用户或者工作目录,则使用-u或-w。

原文地址:https://www.cnblogs.com/JMLiu/p/10277482.html

时间: 2024-08-30 02:30:10

docker中的命令参数(小白常用)的相关文章

linux中touch命令参数修改文件的时间戳(转)

linux中touch命令参数不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件,以下是linux中touch命令参数的使用方法: touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名) example: touch file1.txt 更新file1.txt的存取和修改时间 touch -c file1.txt 如果file1.txt不存在,不创建文件 touch -r ref_file file1.t

Linux中top命令参数详解

top命令用法top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况. top的使用方式 top [-d number] | top [-bnp] 参数解释: -d:number代表秒数,表示top命令显示的页面更新一次的间隔.默认是5秒. -b:以批次的方式执行top. -n:与-b配合使用,表示需要进行几次top命令的输出结果. -p:指定特定的pid进程号进行观察. 在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的

mysql常用命令大全 mysql常用命令总结

本文介绍下,mysql中常用的一些命令,包括创建与修改数据库.数据库中的表,mysql的权限管理命令grant.revoke等的用法. 创建与管理mysql数据库的常用命令:1,使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES; 2,创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA; 3,选择创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时

MySql常用命令集Mysql常用命令5

九. 交叉查询 交叉查询可以对数据进行总和,平均,计数或其他总和计算法的计算,这些数据通过 两种信息进行分组:一个显示在表的左部,另一个显示在表的顶部. Microsoft Jet SQL 用TRANSFROM语句创建交叉表查询语法: TRANSFORM aggfunction Select 语句 GROUP BY 子句 PIVOT pivotfield[IN(value1 [,value2[,-]]) ] Aggfounction指SQL聚积函数, Select语句选择作为标题的的字段, GR

docker 的简介、安装以及常用命令

docker 的简介.安装以及常用命令 一.docker 是什么 docker 是一个开源的应用容器引擎,基于 go 语言,开发者可以打包他们的应用以及依赖到一个可移植的容器中,这个容器可以发布到任何装有 docker 软件的 linux 机器上. docker 有 4 个组成部分 docker 客户端(client) docker 守护进程(daemon) docker 镜像(image) docker 容器(container) 二.为什么要使用 docker (1) 快速部署. 上面说到了

[转帖]linux中systemctl详细理解及常用命令

linux中systemctl详细理解及常用命令 2019年06月28日 16:16:52 思维的深度 阅读数 30 https://blog.csdn.net/skh2015java/article/details/94012643 一.systemctl理解 Linux 服务管理两种方式service和systemctl systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动. systemd对应的进程管理命令是sy

常用的 ls 命令参数

ls 命令采用两种格式的命令行参数: 单字母参数 全字参数 如果需要,也可以一次使用多个参数.多个双破折线参数必须分开输入,而多个单破折线可以组合成一个字符串跟在一个单破折号后面 一些常用的 ls 命令参数: 单字母 全字 描述 -a --all 输出包括以"."打头的隐藏文件 -A --almost-all 不要输出"."和".."文件 --author 输出每个文件的作者 -b --escape 输出不可打印字符的八进制值 --block-s

<Docker>01 命令参数解析

最近Docker1.0稳定版发布了,这给paas注入新鲜的血液. Docker是一个功能强大的自动化分布式系统:大规模的Web部署.数据库集群.持续部署系统.私有PaaS.面向服务的体系结构等. Docker是一种增加了高级API的LinuX Container(LXC)技术,提供了能够独立运行Unix进程的轻量级虚拟化解决方案. 它提供了一种在安全.可重复的环境中自动部署软件的方式. 关于Docker运行在Centos的操作,下面由cantgis进行讲解. Cantgis的实验环境都是在Cen

nginx常用命令参数

命令行参数: 常用命令: -c filename:设置配置文件. -t :不运行,而仅仅测试配置文件.nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件. -s :传递一个信号,stop快速关闭,quit从容关闭,reopen重新打开日志文件.用于切换日志文件,reload重载配置文件. -v :显示nginx的版本. -V:显示nginx的版本,编译器版本和配置参数 [[email protected] /]# alias nginx='/usr/local/ngin