一、容器:
1.一、容器是Docker的另外一個核心概念。簡單來講,容器是鏡像的一個實例。所不一樣的是,鏡像是靜態的只讀文件,而容器帶有運行時須要的可寫文件層,同時,容器中的應用進程處於運行狀態。
1.二、若是認爲虛擬機是模擬運行的一整套操做系統(包括內核、應用運行態環境和其它系統環境)和跑在上面的應用。那麼Docker容器就是獨立運行的一個(或一組)應用。以及它們必須的運行環境。nginx二、建立容器:
2.一、使用docker [container] create 命令新建立一個容器;
2.1.一、基於centos 7.5.1804的鏡像建立一個新容器docker
cobbler@cobbler-docker:~$ sudo docker create -it centos:7.5.1804 cobbler@cobbler-docker:~$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 993f382831ef centos:7.5.1804 "/bin/bash" 16 seconds ago Created musing_hamilton
2.1.二、使用docker [container] create 命令新建的容器處於中止狀態,可使用docker [container] start 啓動剛建立好的容器,這裏基於容器的id號啓動json
cobbler@cobbler-docker:~$ sudo docker start 993f382831ef 993f382831ef 查看已啓動的容器 cobbler@cobbler-docker:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 993f382831ef centos:7.5.1804 "/bin/bash" 2 hours ago Up 2 hours musing_hamilton
2.1.三、新建和啓動容器一併操做了
用docker [container] run 建立並啓動容器時,Docker在後臺運行的標準操做包括:centos
一、檢查本地是否存在指定的鏡像,不存在就從Docker Hub倉庫下載; 二、利用鏡像建立一個容器,並啓動該容器; 三、分配一個文件系統給容器,並在只讀的鏡像層外面掛載一層可讀寫層; 四、從宿主機配置的網橋接口中橋接一個虛擬接口到容器中去; 五、從網橋的地址池配置一個IP地址給容器; 六、執行用戶指定的應用程序; 七、執行完畢後容器被自動終止; 指定一個bash終端啓動,能夠進行交互式操做。 cobbler@cobbler-docker:~$ sudo docker run -it --name test1 centos:7.5.1804 /bin/bash [root@aebfa755ad9d ~]# cd /usr/local/ [root@aebfa755ad9d local]# ls bin etc games include lib lib64 libexec sbin share src [root@aebfa755ad9d local]# exit exit 對於所建立的bash容器,當用戶使用exit命令退出bash進程以後,容器也會自動退出,這是由於對於容器來講,當其中的應用退出後,容器的使命完成,也就沒有繼續運行的必要了
2.1.四、守護態運行
要讓docker容器在後臺以守護態形式運行。此時,能夠經過添加-d選項來完成;bash
cobbler@cobbler-docker:~$ sudo docker run --name centos -d centos:7.5.1804 /bin/bash -c "while true;do echo hello world; sleep 1;done" b39568ae50aaeabda71288238ae7805e3894ad4b1c79930c669e2873a47c3f32 # 查看已運行容器信息: cobbler@cobbler-docker:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b39568ae50aa centos:7.5.1804 "/bin/bash -c 'while…" 2 minutes ago Up 2 minutes centos
2.1.五、查看容器日誌網絡
docker [container] logs 經常使用選項: -details:打印詳細信息; -f, -follow: 持續保持輸出; -since string: 輸出從某個時間開始的日誌; -tail string: 輸出最近的若干日誌 -t, -timestamps: 顯示時間戳信息; -until string: 輸出某個時間以前的日誌; # 查看centos容器的信息: cobbler@cobbler-docker:~$ sudo docker logs centos cobbler@cobbler-docker:~$ sudo docker logs --details centos cobbler@cobbler-docker:~$ sudo docker logs -f centos
三、中止容器
3.1.一、暫停容器docker pause container ide
cobbler@cobbler-docker:~$ sudo docker pause centos centos cobbler@cobbler-docker:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b39568ae50aa centos:7.5.1804 "/bin/bash -c 'while…" 13 minutes ago Up 13 minutes (Paused) centos
3.1.二、恢復容器使用docker unpause container 測試
cobbler@cobbler-docker:~$ sudo docker unpause centos centos cobbler@cobbler-docker:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b39568ae50aa centos:7.5.1804 "/bin/bash -c 'while…" 15 minutes ago Up 14 minutes centos
3.1.三、終止容器
使用docker container stop 終止運行中的容器、該命令首先向容器發送SIGTERM信號,等待一段超時後(默認爲10s),再發送SIGKILL信號來終止容器;ui
cobbler@cobbler-docker:~$ sudo docker stop centos centos
中止完以後,若是是測試環境的話可使用docker container prune 清除全部中止狀態的容器。(注意,此操做仍是當心爲妙!)spa
cobbler@cobbler-docker:~$ sudo docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: b39568ae50aaeabda71288238ae7805e3894ad4b1c79930c669e2873a47c3f32 ed66b56e02d0538571e6f72077ea2e46af675a405db25161fddd1455a8311a8b aebfa755ad9d22084baa954df4b2fa2c685c2f1bdedc9fbfec865e03f6143b8c Total reclaimed space: 48B cobbler@cobbler-docker:~$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
還能夠直接強制中止容器、docker [container] kill 直接發送SIGKILL信號來強行終止容器;
cobbler@cobbler-docker:~$ sudo docker kill centos centos
容器被中止以後,這時有的測試環境的容器還須要再次用到須要給啓動起來,就會用start來從新啓動
cobbler@cobbler-docker:~$ sudo docker start centos centos cobbler@cobbler-docker:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 742109f79dc9 centos:7.5.1804 "/bin/sh" 2 minutes ago Up 5 seconds centos
也可使用restart來重啓,它是先將一個運行的容器先中止,而後再從新啓動起來;
cobbler@cobbler-docker:~$ sudo docker restart centos centos cobbler@cobbler-docker:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 742109f79dc9 centos:7.5.1804 "/bin/sh" 6 minutes ago Up 22 seconds centos
四、進入容器內部
4.1.一、在運行一個容器時一般須要加上-d讓它運行在後臺,用戶看不到容器中的信息,也沒法進行操做,這時候要進入容器裏進行操做就要使用exec或attach命令,這裏只說exec命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Options: -d, --detach Detached mode: run command in the background --detach-keys string Override the key sequence for detaching a container -e, --env list Set environment variables -i, --interactive Keep STDIN open even if not attached --privileged Give extended privileges to the command -t, --tty Allocate a pseudo-TTY -u, --user string Username or UID (format: <name|uid>[:<group|gid>]) -w, --workdir string Working directory inside the container # 進入centos容器裏面,經過指定-it選項來保持標準輸入打開,並分配一個僞終端,經過exec命令對容器執行操做是爲常見的方式。 cobbler@cobbler-docker:~$ sudo docker exec -it centos /bin/bash [root@742109f79dc9 /]#
五、刪除容器
docker [container] rm 刪除容器 Options: -f, --force Force the removal of a running container (uses SIGKILL) -l, --link Remove the specified link -v, --volumes Remove the volumes associated with the container 示例: cobbler@cobbler-docker:~$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b25cf7e89f28 centos "/bin/bash" 5 seconds ago Exited (0) 3 seconds ago modest_agnesi 742109f79dc9 centos:7.5.1804 "/bin/sh" 23 minutes ago Up 17 minutes centos # 使用rm刪除的話,只能刪除已經處於中止或退出狀態的容器,已經在運行的容器刪不掉的,若是要刪除的須要加上-f選項 cobbler@cobbler-docker:~$ sudo docker rm b25cf7e89f28 b25cf7e89f28
六、導入和導出容器
6.1.一、導出容器:
docker export [OPTIONS] CONTAINER Options: -o, --output string Write to a file, instead of STDOUT 能夠經過-o選項指定導出的tar文件名,也能夠直接經過重定向來實現。 示例: cobbler@cobbler-docker:~$ sudo docker export -o centos-nginx.tar.gz centos cobbler@cobbler-docker:~$ ls Desktop Downloads Music Templates Pictures centos-nginx.tar.gz Dockerfile examples.desktop Documents images Public Videos
6.1.二、導入容器
docker container import 導入變成鏡像。
cobbler@cobbler-docker:~$ sudo docker import centos-nginx.tar.gz test/centos-nginx:v1.0 sha256:90bfdef73b8d3f1d868acd745c1555894ca3e185f27a8e49fd5252d4c23fa67f cobbler@cobbler-docker:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE test/centos-nginx v1.0 90bfdef73b8d 11 seconds ago 200MB
七、查看容器
7.1.一、查看容器詳情
docker container inspect [options] CONTAINER [CONTAINER....]子命令
查看centos容器的具體信息,結果是以json格式返回 cobbler@cobbler-docker:~$ sudo docker container inspect centos [ { "Id": "742109f79dc9fc41cc4e4452b37be0f560021208a863192353899f58fbe2ca7c", "Created": "2018-11-19T13:22:25.957033366Z", "Path": "/bin/sh", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 5199, "ExitCode": 0, "Error": "", "StartedAt": "2018-11-19T13:28:12.945203425Z", "FinishedAt": "2018-11-19T13:28:12.180988774Z" }, } .......... ]
7.1.二、查看容器內進程
docker [container] top [options] CONTAINER [CONTAINER...]
相似於Linux中的top命令,會打印出容器內的進程信息,包括pid、用戶、時間、命令等
# 查看centos容器內的進程信息: cobbler@cobbler-docker:~$ sudo docker top centos UID PID PPID C STIME TTY TIME CMD root 5199 5177 0 21:28 pts/0 00:00:00 /bin/sh
7.1.三、查看統計信息
docker [container] stats [options] [CONTAINER..],能夠顯示CPU、內存、存儲、網絡等使用狀況的統計信息
cobbler@cobbler-docker:~$ sudo docker stats centos CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 742109f79dc9 centos 0.00% 1.977MiB / 1.924GiB 0.10% 4.47kB / 0B 7.28MB / 0B 1