一、启动容器
#运行容器执行一个简单的命令 [root@localhost ~]# docker run ubuntu:16.04 /bin/echo "hello" #进入到容器中 [root@localhost ~]# docker run -it ubuntu:16.04 /bin/bash #-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上 #-i 则让容器的标准输入保持打开
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
启动已终止的容器:
#停止容器
docker stop 容器id
#启动已停止的容器
docker start 容器id
后台运行容器:
使用-d参数运行容器,容器是否关闭主要看启动容器时的命令,容器的命令都运行在前台,如果前台命令一直执行,容器在正常情况下就会一直运行
[root@localhost ~]# docker run -itd ubuntu:16.04
进入到已启动的容器中(exec)
[root@localhost ~]# docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40f0218f7907 ubuntu:16.04 "/bin/bash" 3 minutes ago Up 3 minutes peaceful_albattani c7a2a75a5536 nginx "nginx -g 'daemon of" 21 hours ago Up 21 hours 0.0.0.0:80->80/tcp webserver ce4ccea0bde8 ansible/centos7-ansible "bash" 42 hours ago Up 42 hours web3 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40f0218f7907 ubuntu:16.04 "/bin/bash" 4 minutes ago Up 4 minutes peaceful_albattani c7a2a75a5536 nginx "nginx -g 'daemon of" 21 hours ago Up 21 hours 0.0.0.0:80->80/tcp webserver ce4ccea0bde8 ansible/centos7-ansible "bash" 42 hours ago Up 42 hours web3 [root@localhost ~]# docker exec -it 40f0218f7907 bash root@40f0218f7907:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
导出和导入容器
导出容器快照
docker export 容器ID > /opt/ubuntu.tar.gz
导入容器快照
docker import /opt/ubuntu.tar.gz ubuntu:v2
删除容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 40f0218f7907 ubuntu:16.04 "/bin/bash" 3 hours ago Up 3 hours peaceful_albattani c7a2a75a5536 nginx "nginx -g 'daemon of��" 24 hours ago Up 24 hours 0.0.0.0:80->80/tcp webserver ce4ccea0bde8 ansible/centos7-ansible "bash" 44 hours ago Up 44 hours web3 [root@localhost ~]# docker rm -f 40f02
清理所有处于终止状态的容器
用 docker container ls -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量太
$ docker container prune
多要一个个删除可能会很麻烦,用下面的命令可以清理掉所有处于终止状态的容器。