一、交互式启动容器
Docker 交互式启动有两种,一种是前台交互式、另一种是后台守护式
其中前台交互式启动适合ubuntu、Centos、nginx等,因为该类没有前台进程,如果使用后台守护式启动会导致容器立即自杀。
后台守护式启动适合Redis这些有前台进程的镜像,因容器不会自动挂掉,且若Redis使用前台交互式启动,会因使用人员不小心关掉终端,导致Redis挂掉产生一系列问题,所以适合后台守护式启动。
Docker可以以交互式方式运行镜像,达到启动容器目的,其中有如下一些常用参数:
–name=“容器新名称” 为容器指定一个名称
-d 后台运行容器并返回容器ID,意即启动守护式容器(后台运行)
-i 以交互式模式运行容器,通常与 -t 搭配同时使用
-t (tty) 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-P 大写P,代表随机端口映射
-p 小写p, 代表指定端口映射
例一:前台交互启动ubuntu
前台交互式启动ubuntu
[root@openstack ~]# docker pull ubuntu
[root@openstack ~]# docker images
[root@openstack ~]# docker ps -a
[root@openstack ~]# docker run -it ubuntu /bin/bash
例二:前台交互式启动Redis
前台交互式启动ubuntu
[root@openstack ~]# docker pull redis
[root@openstack ~]# docker images
[root@openstack ~]# docker run -it redis
此时,打开另一个会话,可以看到Redis进程,并可以连接Redis数据库。
当在执行前台交互式启动Redis的会话窗口执行Ctrl+C,就会将Redis挂掉,报如下信息:
此时,也无法再查看到Redis进程:
例三:后台守护式启动Redis
前台交互式启动ubuntu
[root@openstack ~]# docker run -td --name redis -p 6379:6379 redis
[root@openstack ~]# docker ps -a
[root@openstack ~]# ps -ef|grep redis
[root@openstack ~]# docker exec -it 84be3cb99c8f /bin/sh
二、退出容器方式
推出容器方式有两种。
exit:run进去容器,exit退出,容器停止
ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止
三、进入已运行容器
docker exec -it 容器ID /bin/bash
exec 是在容器中打开新的终端,并且可以启动新的进程,因为是新终端,用exit退出,不会导致容器的停止。
docker attach 容器ID
attach 直接进入容器启动命令的终端,不会启动新的进程
如果进入前台交互式启动容器,,用exit退出,会导致容器的停止。用ctrl+p+q,不会导致容器停止。如果进入后台守护式启动容器,不仅无法进行交互,并且ctrl+c会导致守护式进程停止。
通常使用 docker run -d image:tag /bin/bash启动容器,然后再使用 docker exec -it 容器ID /bin/bash




