1、docker run怎么后台启动容器,而不是ctrl+c就停掉了
docker run -itd [image:tag]
- -i : --interactive , Keep STDIN open even if not attached
- -t : --tty , Allocate a pseudo-TTY
- -d : --detach , Run container in background and print container ID
注: 查看参数:docker run --help
2、docker run -rm … 是何含义
表示:关闭容器就删除该容器。
- –rm , Automatically remove the container when it exits
3、容器启动后的操作
3.1、docker run [image:tag] 没有指定容器启动后的操作,为什么有的容器会自动启动某一程序(脚本或命令)
在构建镜像时通过Dockerfile中指定 CMD
或 ENTRYPOINT
来设置通过该镜像启动的容器启动后要执行的命令。
3.2、那么问题来了,不用CMD
和ENTRYPOINT
,怎么指定容器启动后的命令?
docker run [image:tag] [cmd]
如:
docker run [image:tag] echo helloworld
3.3、那么问题又来了,怎么看一个镜像所(有没有)设置的CMD
和ENTRYPOINT
呢?
docker inspect -f '{{.Config.Cmd}}' [image:tag]
docker inspect -f '{{.Config.Entrypoint}}' [image:tag]
注: 想查其他配置也可以照猫画虎试试。
3.4、那么问题再次来了,CMD
和ENTRYPOINT
的区别呢?
简单来说:
- CMD : 默认的容器启动后执行的命令,
可以被覆盖
,以下情况将被覆盖:- 配置多个,只有最后一个生效
docker run [image:tag]
后面指定了命令- 同时有配
ENTRYPOINT
,则所配CMD
将作为ENTRYPOINT
所配命令的参数
- ENTRYPOINT : 才是正统地用于定义容器启动以后的执行体的,其实我们从名字也可以理解,这个是容器的“入口”