簡單的說,容器是鏡像的一個運行實例。
#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