Docker容器操做
容器是鏡像的一個運行實例。所不一樣的是,鏡像是靜態的只讀文件,而容器帶有運行時須要的可寫文件層。若是認爲虛擬機是模擬運行的一整套操做系統(包括內核、應用運行態環境和其餘系統環境)和跑在上面的應用,那麼Docker容器就是獨立運行的一個(或一組)應用,以及它們必需的運行環境。web
建立容器docker
對容器進行操做就跟直接操做應用同樣簡單、快速。Docker容器實在過輕量級了,用戶能夠隨時建立或刪除容器。bash
1.新建容器tcp
可使用docker create命令新建一個容器,例如:ide
$ docker create -it 鏡像名:標籤 //基於鏡像建立容器,默認是沒有運行的spa
$ docker ps -a //查看全部容器操作系統
使用docker create命令新建的容器處於中止狀態,可使用docker start命令來啓動它。3d
2 啓動容器orm
使用docker start命令來啓動一個已經建立的容器:blog
docker start 容器ID //開啓容器
docker stop 容器ID //關閉容器
這裏要注意的是:docker start 後面加的是容器的ID
啓動之後狀態變爲Up啓動狀態。
docker容器的狀態:
up 開啓狀態
Exited 終止狀態
Create 建立狀態
(Paused) 暫停狀態
狀態沒有 中止狀態docker pause/unpause 容器ID //暫停docker容器與取消暫停docker容器
刪除:docker rm -f 容器名(ID)
新建並啓動容器
除了建立容器後經過start命令來啓動,也能夠直接新建並啓動容器。所須要的命令主要爲docker run,等價於先執行docker create命令,再執行docker start命令。
docker run 容器名 /bin/bash -c ls /
//建立容器的同時啓動並運行相關程序,命令完成容器就中止。
啓動一個bash終端,容許用戶進行交互:
docker run -it 鏡像ID:標籤 /bin/bash
其中,-t選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上,-i則讓容器的標準輸入保持打開。
更多的命令選項能夠經過man docker-run命令來查看。在交互模式下,用戶能夠經過所建立的終端來輸入命令。
守護態運行
更多的時候,須要讓Docker容器在後臺以守護態(Daemonized)形式運行。此時,能夠經過添加-d參數來實現。
下面的命令會在後臺運行容器:
docker run -d 鏡像ID /bin/sh -c "while true; do echo hello world; sleep 1; done"
進入運行中的容器中,對容器作各類操做:
docker exec -it 容器id /bin/bash 進入容器中
退出方法:
一、輸入exit
二、Ctrl+p, Ctrl+q鍵返回主機控制檯
鏈接到容器的會話
docker attach 容器id號注:鏈接的前提是你要有這個容器
//將容器導出成文件
docker export ed2e7380ef05 > httpd
將指定容器導出成名爲httpd的文件,該文件爲docker鏡像文件
//將容器文件生成鏡像
docker import 文件名 鏡像名:標籤
//刪除容器
docker rm 容器ID 指定刪除某個容器
docker rm -f 容器ID 強制刪除運行中的容器,不建議
docker container prune 刪除全部中止的容器
docker rm $(docker ps -qf status=exited) 刪除指定狀態的容器
//查看容器的詳細信息
docker inspect 容器ID
這裏要知道的是:
假設: 你須要查看容器的IP地址或者一些其餘信息 能夠採用inspect 過濾
我 "NetworkSettings": {
"Bridge": "",
"SandboxID": "59749f7b612c0dea54dd92962ca38d0b7b822b72099c36e5403dc42b6ba4a5c5",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": null
},
"SandboxKey": "/var/run/docker/netns/59749f7b612c",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "d59586ccdb378dcca52dc0c141732e325833740cb1575aaf41efa8c0c80886d6",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "271a491425a1f921004e6de6c03d77873a8e11da916bca36a8efc21ca49eb712",
"EndpointID": "d59586ccdb378dcca52dc0c141732e325833740cb1575aaf41efa8c0c80886d6",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
}
}
]