Docker系列(二)---容器

創建容器

新建容器

方法一:

[root@docker1home]# docker run -it centos:6 echo "hello"

hello

方法二:

[root@docker1home]# docker create -it centos:6 echo "hello"

c97b4ca48ce2f2065230398c57955c9ab9a31a3af9301217a626a16471697451

wKiom1Wf0sWTFaaHAADdTzpexes405.jpg

使用方法二創建的容易處於停止狀態,使用docker start來啓動它。docker run相當於先docker createdocker run

[root@docker1home]# docker start c97

c97

wKioL1Wf1Jih3ZiHAAEEXpZHcpg972.jpg

當使用run命令來創建並啓動容器時,docker在後臺會運行如下標準操作:

1、檢查本地是否存在指定的鏡像,沒有就從公有倉庫下載;

2、利用鏡像創建並啓動一個容器;

3、分配一個filesystem,並在只讀的鏡像層外面掛載一個可讀寫層;

4、從宿主機配置的網橋接口中橋接一個虛擬接口到容器中去;

5、從地址池分配一個ip地址給容器;

6、執行用戶指定的應用程序;

7、指定完成後容器被終止。

 

啓動一個bash終端,允許用戶進行交互操作:

[root@docker1home]# docker run -it centos:6 /bin/bash

wKiom1Wf0sXg_xO6AAGstGhsMzs474.jpg

-tdocker分配一個僞終端並綁定到容器的標準輸入上

-i讓容器的終端保持打開

 

在容器中使用ps –ef 查看發現容器中只運行了bash應用,沒有其他進程。

使用exitctrl+D退出容器,退出之後該容器就出於終止狀態

 wKioL1Wf1JiQq_z3AAFBAErVknk781.jpg

守護態運行容器

[root@docker1home]# docker run -d centos:6 /bin/bash -c "while true;do echo hello;sleep1;done"

wKiom1Wf0sXxs1rEAAEtReTqfm0022.jpg

使用-d參數來實現守護態運行,會輸出一個唯一的ID

[root@docker1home]# docker logs fb8

wKioL1Wf1o-CaK9DAAA7Le1TE_8179.jpg

在守護態運行時可以使用dockerlogs查看容器的輸出信息

 

終止容器

[root@docker1~]# docker stop fb8

當一個容器中的應用結束時,它就會自動終止,docker stop終止容器時會先發送一個SIFTEAM信號,默10秒後再發送一個SIGKILL信號。

[root@docker1 ~]# docker ps -a -q

wKiom1Wf0sWzjDh6AACu-lbs_oI032.jpg

docker ps -a –q命令只顯示容器的ID信息。

出於終止狀態的容器當然也可以使用docker start命令來重新啓動。

 

進入容器

可以使用docker attachdocker exec命令或nsenter工具進入容器

[root@docker1~]# docker attach fae

wKiom1Wf1H6RIaSDAABDjIrN2GM508.jpg

[root@docker1~]# docker exec -it fae /bin/bash

wKioL1Wf1JjjJtGKAAGhVoo3UBE941.jpg

下面使用nsenter命令進入容器,使用此命令先要獲得容器的pid,具體操作方法如下:

[root@docker1~]# PID=$(docker inspect --format "` `.`State`.`Pid `" fae)

[root@docker1~]# echo $PID

2013

[root@docker1~]# nsenter --target $PID --mount --uts --ipc --net --pid

[root@fae7382a0306/]#

 

刪除容器

使用docker命令刪除一個處於終止狀態的容器,要刪除一個在運行的容器,使用-f參數,Docker會發送一個SIGKILL信號給容器。

wKioL1Wf1cGyvXq0AAMZVT6BUM4408.jpg

wKiom1Wf0-6iGcaTAAIFNeIdJKw561.jpg

-f:強制刪除運行中的容器;

-l:刪除容器的鏈接,但保留容器;

-v:刪除容器掛載的數據卷。

 

導入和導出容器

使用docker export命令可以導出某個容器

[root@docker1~]# docker export fb8 > firstexport.tar

wKioL1Wf1hawCbrvAADJ-wLGDJ4782.jpg

使用docker import命令可以導入某個容器

[root@docker1~]# cat testexport.tar |docker import - jutest/centos:v6

14a8da86fb1e97cc3e73ffd93ba205ab4c231cb4312256e187ab68dacb29595c


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章