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