Docker部署和命令

Docker安裝命令

安裝最新版本的Docker CE:

$ sudo apt-get install -y docker-ce

如果需要安裝某個(gè)指定版本的Docker CE,而不是最新版本,可用下面命令列出可用的版本列表信息:

$ sudo apt-cachemadison docker-ce

第一列是包名,第二列是版本字符串,第三列是存儲(chǔ)庫(kù)名稱(chēng),它標(biāo)識(shí)出包來(lái)自哪個(gè)存儲(chǔ)庫(kù),以及擴(kuò)展它的穩(wěn)定性級(jí)別。通一下命令安裝指定版本的包:

$ sudo apt-getinstall docker-ce=[版本字符串]

docker安裝驗(yàn)證:

sudo docker -v

啟動(dòng)Docker

查看docker服務(wù)是否啟動(dòng):

$ sudo systemctl status docker

如果Docker未啟動(dòng),則啟動(dòng)Docker:

$ sudo systemctl start docke

運(yùn)行Hello World,校驗(yàn)Docker是否安裝成功:

$ sudo docker run hello-world

運(yùn)行這個(gè)命令會(huì)下載一個(gè)hello-world的鏡像, 并且運(yùn)行在一個(gè)容器中。該容器運(yùn)行時(shí)會(huì)有如下輸出:

Docker鏡像常用命令

sudo docker search java

- NAME:鏡像倉(cāng)庫(kù)名稱(chēng)。

- DESCRIPTION:鏡像倉(cāng)庫(kù)描述。

- STARS:鏡像收藏?cái)?shù),表示該鏡像倉(cāng)庫(kù)的受歡迎程度,類(lèi)似于GitHub的Stars。

- OFFICAL:表示是否為官方倉(cāng)庫(kù),該列標(biāo)記為[OK]的鏡像均由個(gè)軟件的官方項(xiàng)目組創(chuàng)建和維護(hù)。由結(jié)果可知,java這個(gè)鏡像倉(cāng)庫(kù)是官方倉(cāng)庫(kù),而其他倉(cāng)庫(kù)都不是官方鏡像倉(cāng)庫(kù)。

- AUTOMATED:表示是否為自動(dòng)構(gòu)建鏡像倉(cāng)庫(kù)。

下載鏡像

使用docker pull命令即可從Docker Registry上下載鏡像,例如:

$ sudo docker pull java

執(zhí)行該命令后,Docker會(huì)從Docker Hub中的java倉(cāng)庫(kù)下載最新版本的java鏡像。若鏡像下載緩慢,可配置鏡像加速器。

該命令還可指定想要下載的鏡像標(biāo)簽以及Docker Registry地址,例如:

$ sudo docker pull reg.itmuch.com/java:8 這樣就可以從指定的Docker Registry中下載標(biāo)簽為8的Java鏡像。

列出本地鏡像,使用docker images命令即可列出一下載的本地鏡像列表。

該表格包含了5列,含義如下:

- REPOSITORY:鏡像所屬倉(cāng)庫(kù)名稱(chēng)

- TAG:鏡像標(biāo)簽。默認(rèn)是latest,表示最新。

- IMAGE ID:鏡像ID,表示鏡像唯一標(biāo)標(biāo)識(shí)

- CREATED:鏡像創(chuàng)建時(shí)間

- SIZE:鏡像大小

刪除本地鏡像:使用docker rmi命令即可刪除指定鏡像

sudo docker rmi hello-world

刪除所有鏡像

$ sudo docker rmi -f $(docker images)

-f 參數(shù)表示強(qiáng)制刪除

Docker容器常用命令

新建并啟動(dòng)容器

使用docker run命令即可新建并啟動(dòng)一個(gè)容器。

該命令是最常用命令,它有很挫選項(xiàng),下面將列舉一些常用選項(xiàng)。

- d 選項(xiàng):表示后臺(tái)運(yùn)行

- P 選項(xiàng):隨機(jī)端口映射

- p 選項(xiàng):指定端口映射,有一下四種格式

? ? - ip:hostPort:containerPort

? ? - ip::containerPort

? ? - hostPort:containerPort

? ? - containerPort

- network 選項(xiàng):指定網(wǎng)絡(luò)模式,該選項(xiàng)有一下可選參數(shù):

? ? - --network=bridge:默認(rèn)選項(xiàng),表示連接到默認(rèn)的網(wǎng)橋。

? ? - --network=host:容器使用宿主機(jī)的網(wǎng)絡(luò)。

? ? - --network=container:NAME_or_ID:告訴Docker讓新建的容器使用已有容器的網(wǎng)絡(luò)配置。

? ? - --network=none:不配置該容器的網(wǎng)絡(luò),用戶可自定義網(wǎng)絡(luò)配置。

示例1:

$ sudo docker run java /bin/echo 'Hello World'

這樣終端會(huì)打印Hello World的字樣,跟在本地直接執(zhí)行/bin/echo 'Hello World' 一樣。

示例2:

$ sudo docker run -d -p 91:80 nginx

這樣就能啟動(dòng)一個(gè)Nginx容器。在本例中,為docker run添加了兩個(gè)參數(shù),含義如下:

-d # 后臺(tái)運(yùn)行

-p 宿主機(jī)端口:容器端口 # 開(kāi)放容器端口到宿主機(jī)端口

列出本地容器

使用docker ps命令即可列出運(yùn)行中的本地容器,執(zhí)行該命令后,可以看到類(lèi)似與如下的表格:

如需要列所有容器(包括已停止的容器),可使用 -a 參數(shù)。

該表格包含了7列,含義如下:

- CONTAINER_ID:表示容器ID

- IMAGE:表示鏡像名稱(chēng)

- COMMAND:表示啟動(dòng)容器時(shí)運(yùn)行的命令

- CREATED:表示容器創(chuàng)建時(shí)間

- STATUS:表示容器運(yùn)行狀態(tài)。UP表示運(yùn)行中,Exited表示已停止。

- PORTS:表示容器對(duì)外的端口號(hào)

- NAMES:表示容器名稱(chēng),該名稱(chēng)默認(rèn)由Docker自動(dòng)生成,也可使用docker run命令的--name選項(xiàng)自定指定。

停止容器

使用docker stop命令,即可停止容器,例如:

$ sudo docker stop 2730ed88f8e5

其中 2730ed88f8e5 是容器ID,當(dāng)然也可以使用 docker stop 容器名稱(chēng) 來(lái)停止指定容器。

強(qiáng)制停止容器

可以使用docker kill 命令發(fā)送SINGKILL信號(hào)來(lái)強(qiáng)制停止容器。例如:

$ sudo docker kill 2730ed88f8e5

啟動(dòng)已停止的容器

使用docker run命令,即可新建并啟動(dòng)一個(gè)容器。對(duì)于已停止的容器,可以使用docker start命令來(lái)啟動(dòng)。例如:

$ sudo docker start 2730ed88f8e5

重啟容器

可使用docker restart命令來(lái)重啟容器。該命令實(shí)際上是先執(zhí)行了docker stop命令,然后再執(zhí)行了docker start命令。

進(jìn)入容器

某場(chǎng)景下,可能需要進(jìn)入運(yùn)行中的容器。

使用docker attach命令進(jìn)入容器。例如:

$ sudo docker attach 2730ed88f8e5

很多場(chǎng)景下,使用docker attach命令并不方便。當(dāng)多個(gè)窗口同時(shí)attach到同一個(gè)容器時(shí),所有窗口都會(huì)同步顯示。同理,如果某個(gè)窗口發(fā)生阻塞,其他窗口也無(wú)法執(zhí)行操作。

可以使用nsenter進(jìn)入容器。

nsenter工具包含在util-linux 2.23或更高版本中。為了連接到容器,需要找到容器第一個(gè)進(jìn)程的PID,可通過(guò)以下命令獲取:

$ sudo docker inspect --format "{{.State.Pid}}" $CONTAINER_ID

獲得PID后,就可使用nsenter命令進(jìn)入容器了:

$ sudo nsenter --target "$PID" --mount --uts --ipc --net --pid

下面給出一個(gè)完整的例子:

也可將以上兩條命令封裝成一個(gè)Shell,從而簡(jiǎn)化進(jìn)入容器的過(guò)程。

刪除容器

使用docker rm命令即可刪除指定容器。

例1:刪除指定容器

$ sudo docker rm 2730ed88f8e5

該命令只能刪除已停止的容器,如需要?jiǎng)h除正在運(yùn)行的容器,可使用-f參數(shù)。

例2:刪除所有容器

$ sudo docker rm -f $(docker ps -a -q)

參考資料:https://blog.csdn.net/yx_222/article/details/80936757

https://www.cnblogs.com/aspirant/p/8808809.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容