docker 容器
容器是透過 image 建立的程式。
映象(Image)和容器(Container)的關係,就像是物件導向程式設計中的 類 和 例項 一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立、啟動、停止、刪除、暫停等。
新建並啟動容器
下面的命令的含義:透過 Ubuntu:18.04 這個 image 建立一個容器並執行 /bin/echo ‘Hello world’,完成後停止該容器。
$ docker run ubuntu:18.04 /bin/echo 'Hello world'
Hello world
使用 docker run 命令,後臺實際上執行的內容為:
檢查本地是否存在指定的映象,不存在就從公有倉庫下載
利用映象建立並啟動一個容器
分配一個檔案系統,並在只讀的映象層外面掛載一層可讀寫層(後面會學)
從宿主主機配置的網橋介面中橋接一個虛擬介面到容器中去(後面會學)
從地址池配置一個 ip 地址給容器(後面會學)
執行使用者指定的應用程式
執行完畢後容器被終止
上面的示例執行完以後會終止,但是一般我們在使用一個提供服務的容器的時候,不想讓它停止,那麼可以使用 -d 引數,使容器保持在後臺執行。但是需要注意——容器是否會長久執行,是和 docker run 指定的命令有關,和 -d 引數無關
如下命令執行完後,容器依然會停止
$ docker run -d ubuntu
而如下命令執行完後,容器則在後臺保持執行
$ docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
進入容器
attach 命令
$ docker run -dit ubuntu
ffff9516c6151ef3b436df1bccc70ba9da2d0f57bbec5afe19353fe481e12702
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ffff9516c615 ubuntu "/bin/bash" 7 seconds ago Up 6 seconds elegant_hypatia
$ docker attach ffff9516c615
root@ffff9516c615:/#
注意: 如果從這個 stdin 中 exit,會導致容器的停止。
exec 命令(推薦使用,一般配合 -it 引數)
$ docker run -dit ubuntu
15fc4d97c1b4ea25d76e568fb4e695d5b48d7f13ebbb6d718a80b86a4764a005
// 只用 -i 引數時,由於沒有分配偽終端,介面沒有我們熟悉的 Linux 命令提示符,但命令執行結果仍然可以返回。
$ docker exec -i 15fc4d97c1b4ea25 bash
ls
bin
boot
dev
etc
...
//當 -i -t 引數一起使用時,則可以看到我們熟悉的 Linux 命令提示符。
$ docker exec -it 15fc4d97c1b4ea25 bash
root@15fc4d97c1b4:/#
注意:如果從這個 stdin 中 exit,不會導致容器的停止。
容器常用命令
docker container ls –all 檢視當前系統中的所有(執行中、已停止的)容器
docker container start XXX 把已經停止的 XXX 容器啟動
docker container stop XXX 把執行總的 XXX 容器停止
docker container restart XXX 重新啟動執行中的 XXX 容器
docker container prune 刪除所有處於停止狀態的容器
本作品採用《CC 協議》,轉載必須註明作者和本文連結