简单的说,容器是镜像的一个运行实例。
#1.建立容器
使用命令docker create 镜像名,就能够建立一个容器。以下docker
[root@localhost /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE panda30/test latest ace789a750cc 28 hours ago 129.5 MB test latest ace789a750cc 28 hours ago 129.5 MB docker.io/ubuntu latest f49eec89601e 5 weeks ago 129.5 MB [root@localhost /]# docker create test WARNING: IPv4 forwarding is disabled. Networking will not work. 7db543feb4ad4c7ae9f730247630925cc0427b4e9376e60bba396b47929e111a [root@localhost /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7db543feb4ad test "/bin/bash" 26 seconds ago Created tiny_goodall 8dfe0092b0d5 ubuntu "/bin/bash" 28 hours ago Exited (0) 28 hours ago peaceful_shannon [root@localhost /]#
使用docker create建立的容器,处于中止状态,可使用docker start来启动它,以下ubuntu
[root@localhost /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7db543feb4ad test "/bin/bash" 26 seconds ago Created tiny_goodall 8dfe0092b0d5 ubuntu "/bin/bash" 28 hours ago Exited (0) 28 hours ago peaceful_shannon [root@localhost /]# docker start 8dfe0092b0d5 8dfe0092b0d5 [root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8dfe0092b0d5 ubuntu "/bin/bash" 28 hours ago Up 4 seconds peaceful_shannon [root@localhost /]#
启动容器有两种方式:
1.基于镜像新建一个容器并启动。
2.将终止状态的容器启动。 docker run命令等价于先执行docker create命令,再执行docker start命令。bash
[root@localhost /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE panda30/test latest ace789a750cc 29 hours ago 129.5 MB test latest ace789a750cc 29 hours ago 129.5 MB docker.io/ubuntu latest f49eec89601e 5 weeks ago 129.5 MB [root@localhost /]# docker run -it test WARNING: IPv4 forwarding is disabled. Networking will not work. root@0ee8b3307faf:/# exit
利用docker run来建立并启动容器时,docker在后台执行的操做包括
1.检查本地是否存在指定镜像,不存在就从公有仓库下载。
2.利用镜像建立并启动一个容器。
3.在镜像层外挂载一个可读写层。
4.从宿主机中配置的网桥接口中 桥接一个虚拟接口到容器中。
5.分配一个ip给容器。
6.执行用户指定的应用程序。
7.执行完毕后容器被终止。ui
[root@localhost /]# docker run -it test WARNING: IPv4 forwarding is disabled. Networking will not work. root@0ee8b3307faf:/# exit
-i 选项,让容器的标准输入保持打开。
-t 选项,让docker分配一个终端并绑定到容器的标准输入上。
在交互模式下,用户能够经过终端来输入命令,以下code
[root@localhost /]# docker run -it test WARNING: IPv4 forwarding is disabled. Networking will not work. root@56e2ed11db5c:/# pwd / root@56e2ed11db5c:/# ps PID TTY TIME CMD 1 ? 00:00:00 bash 9 ? 00:00:00 ps root@56e2ed11db5c:/#
在容器内使用ps命令查看进程,能够看到只运行了bash应用。
咱们能够输入exit命令来退出容器,以下接口
root@56e2ed11db5c:/# exit exit [root@localhost /]#
#2.中止/启动容器进程
[root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8dfe0092b0d5 ubuntu "/bin/bash" 2 weeks ago Exited (0) 25 seconds ago peaceful_shannon [root@localhost /]# docker start 8dfe0092b0d5 8dfe0092b0d5 [root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8dfe0092b0d5 ubuntu "/bin/bash" 2 weeks ago Up 4 seconds peaceful_shannon [root@localhost /]# docker stop 8dfe0092b0d 8dfe0092b0d [root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost /]#
#3.进入容器ip
[root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8dfe0092b0d5 ubuntu "/bin/bash" 2 weeks ago Up 4 seconds peaceful_shannon [root@localhost /]# docker exec -it 8dfe0092b0d5 /usr/bin/docker-current: "exec" requires a minimum of 2 arguments. See '/usr/bin/docker-current exec --help'. Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Run a command in a running container [root@localhost /]# docker exec -it 8dfe0092b0d5 /bin/bash root@8dfe0092b0d5:/#
#4.删除容器
可使用 docker rm [参数] 容器 [参数] 命令
参数:-f,强制终止并删除一个运行中的容器it
[root@localhost /]# docker exec -it 8dfe0092b0d5 /bin/bash root@8dfe0092b0d5:/# exit exit [root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8dfe0092b0d5 ubuntu "/bin/bash" 2 weeks ago Up 11 minutes peaceful_shannon [root@localhost /]# docker rm -f 8dfe0092b0d5