1. docker run 命令
docker run
命令的作用是通过镜像(image)创建一个docker容器。如果本地没有相关镜像会自动从远程仓库拉取(镜像)到本地,再进行创建容器。
2. -idt参数说明
简写的参数一般都是英文单词的简写,理解了单词的意思会加强记忆。使用的过程
- -i,--interactive,以交互模式运行容器,并保持终端激活。 注:交互就是用户输入命令,机器执行命令,并提供返回结果。那么在哪里输入命令呢?得有一个终端吧,所以这个命令必须与
-a
或-t
命令配合使用。-a
选项用于指定将容器的标准输出连接到终端。使用-t
选项创建的容器会分配一个伪终端,并将容器的标准输入、输出和错误连接到该终端。 - -t,--tty:为容器分配一个伪终端。
- -d,--detach:以后台模式运行容器,并返回容器ID 如果在
docker run -it
不使用-d
那么启动容器后如果你使用ctrl+c
或exit
退出交互模式,docker容器会停止运行。
3. docker run 什么情况下使用-itd
-d 使用场景
一般创建的docker容器都需要使用
-d
,除非你想创建一个前台运行的容器,操作完成后就想让它停止。但停止运行的docker容器并不会销毁。一般情况下你想使用一个一次性的容器,也就是使用完让它自己销毁,你可以使用
--rm
命令,如:
docker run --rm
显然,**
--rm
** 选项不能与
-d
同时使用(或者说同时使用没有意义)。一般
--rm
会用在自动部署,使用完自动销毁。
即使使用了-d命令,一旦容器执行的命令执行结束,容器也会自己关闭,停止运行
-it 使用场景
根据上面的解释,
-it
一般会同时使用。
- 有启动命令:有些镜像在制作时指定了容器启动的命令
[cmd]
,即:docker容器运行时需要执行的命令,这样的镜像使用docker run
生成容器时不需要再指定容器初始运行的命令。 如: 使用nginx的(未指定版本默认为latest
版本,即nginx:latest
,如果指定版本:nginx:1.19
)镜像生成一个docker容器:docker run -d nginx
- 没有启动命令:有些未指定容器启动命令的需要在生成容器时指定命令,如果不指定则会报错:
Error response from daemon: No command specified.
,是说没有指定执行命令。需要指定,如:docker run -d test_image:2.0 /bin/bash
,这种情况因为启动命令是/bin/bash。这个容器启动后会立马退出,这是因为/bin/bash命令是一个交互式命令,它需要与用户进行交互并等待用户输入命令。在后台运行时,没有用户与容器进行交互,因此bash进程在启动后立即退出。这种情况可以修改为docker run -id test_image:2.0 /bin/bash
或docker run -td test_image:2.0 /bin/bash
或docker run -itd test_image:2.0 /bin/bash
4. docker exec 中 -it
docker exec
命令用于在运行中的容器中执行命令,必须在容器启动的情况下执行。
有时不需要使用交互式执行命令就直接不使用
-it
,一般这种是自动部署或更新容器内程序时直接在宿主机操作的命令。如删除容器内的文件:
docker exec nginx rm -rf /var/logs/nginx.log
。
docker exec 中的 -it 参数和 docker run 中相同。==
docker exec
中的
-it
不会受
docker run
的参数影响。他们是两个工具,只要
docker run
把容器启动了,
docker exec
执行什么命令是它的事 ==
5. docker run 的其他常用命令
- -a, --attach: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项。
- -p, --publish:发布容器端口到主机端口。常用:端口映射到宿主机
- -v, --volume:绑定容器挂载点到主机目录。常用:文件(夹)映射到宿主机
- -e, --env:设置环境变量。
- -w, --workdir:设置容器的工作目录。
docker exec -it
进入容器后的默认目录 - --name:为容器指定一个名称。
- --net:指定容器的网络连接类型。
- --link:将容器链接到另一个容器。
- --expose:开放一个端口或一组端口。
- --dns:指定容器使用的DNS服务器。
- --rm:容器停止后自动删除。自动打包、编译部署,或自动测试时很常用
点击查看公众号更多文章
更新精彩文章请关注公众号:大胡几哥哥
版权归原作者 pillar04 所有, 如有侵权,请联系我们删除。