1.docker run 命令时创建容器时启动容器;
docker exec是针对已经创建好的容器执行启动操作;
2.exec -i: --interactive(相互作用的) Keep STDIN open even if not attached(即使没有连接,也要保持STDIN打开);
exec -t: --tty Allocate a pseudo-TTY(分配一个 冒充的终端设备);
如果只用-i时,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令 返回值都可以正确获取,加上-t就有了console的界面,交互能力更好。
如果只使用-t参数,则可以看到一个console窗口,但是执行命令会发现由于没有获得stdin 的输出,无法看到命令执行情况。
3.-attach 直接进入容器 进入已经存在的命令 的终端,不会启动新的进程,如果退出,则会终止整个docker 容器的进程。
-exec 则是在容器中打开新的终端,并且可以启动新的进程,直接退出也不会影响docker容器的进程。
一般-exec参数用的较多。
4.当以exec进入docker容器时后,输入“exit”(Ctrl + D)或者按键“Ctrl + C”退出container时,这个container仍然在后台运行。
5. docker run
: 从镜像启动一个容器,即创建一个新的容器。
docker start
: 运行已停止的容器。
tips:
①-d 参数
在后台执行一个进程。可以看出,如果一个命令需要长时间进程,使用-d参数会很快返回。
程序在后台运行。
②查看docker容器端口的映射信息
docker container port container_name