docker 容器相關命令使用
阿新 • • 發佈:2021-01-12
一,容器概述
容器時指docker對外提供服務的一個例項,容器要想啟動必須滿足至少有一個程序執行在前臺(容器內部的前臺)。
二、啟動容器
格式: docker run [引數] [映象名稱|ID] [指定的容器執行命令(如果不設定則使用預設命令)] 流程: 1、執行一個docker run 2、檢查本地是否存在所需映象,如果沒有則去遠端映象倉庫下載。 3、按照映象和引數啟動一個容器 示例: [root@docker ~]# docker run -d nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9 Status: Downloaded newer image for nginx:latest 22b601ab6f9f7010221440f1158e0ece348768e4df1b133690f1c503ed012e4d [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 22b601ab6f9f nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp interesting_banach 引數: -d : 只以守護程序的模式執行一個容器 -i : 開啟標準輸出 -t : 建立一個視窗(偽終端) -p(小寫的p字母) : 指定對映埠 docker run -d -p 30080:80 nginx;docker ps -P(大寫的P字母) : 隨機對映埠 docker run -d -P nginx; docker ps -v : 指定掛載卷(將本機的目錄對映到容器內部) 作用: 1、將本機目錄"軟連結"容器內部 2、可以持久化容器內部資料 示例: docker run -d -P -v /root/test:/usr/share/nginx/html nginx:latest --name : 指定容器的名稱 作用: 1、指定容器名稱 2、將名稱解析到docker dns上 示例: docker run -d --name nginx nginx --link : 將一個容器的網路連線到另外一個容器 格式: --link 容器名稱:連線別名 示例: docker run -d --name test_nginx nginx docker run -it --link test_nginx:test_nginx centos --rm : 當容器的生命週期結束時,自動刪除容器 示例: docker run -d --rm centos sleep 10 --network : 連線網橋(同一個網橋內的所有容器網路互通) 示例: docker network create chenyang docker run -d --network chenyang nginx
三、停止容器
停止容器,並沒有刪除容器。
格式:
docker stop [容器ID及名稱]
示例:
docker stop agitated_newton
[root@docker ~/test]# docker ps -a | grep agitated_newton
d4b2a919cb7f nginx "/docker-entrypoint.…" 21 minutes ago Exited (0) 28 seconds ago agitated_newton
四、啟動容器
格式: docker start [容器ID及名稱] 示例: [root@docker ~/test]# docker start agitated_newton agitated_newton [root@docker ~/test]# docker ps -a | grep agitated_newton d4b2a919cb7f nginx "/docker-entrypoint.…" 23 minutes ago Up 2 seconds 80/tcp agitated_newton
五、刪除容器
格式:
docker rm [容器ID及名稱]
示例:
[root@docker ~/test]# docker rm laughing_hopper
laughing_hopper
引數:
-f : 強制刪除
六、查詢容器
docker ps 預設查詢正在執行的容器 格式: docker ps [引數] 示例: [root@docker ~/test]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4b2a919cb7f nginx "/docker-entrypoint.…" 26 minutes ago Up 3 minutes 80/tcp agitated_newton 引數: -a : 查詢本機上所有的容器(包括已經停止了的) -q : 只顯示容器ID 列表引數: CONTAINER ID:容器ID IMAGE :映象ID COMMAND :啟動容器執行的命令 CREATED :容器建立的時間 STATUS :狀態(Up:啟動狀態 Exitd:停止狀態) PORTS :埠對映 NAMES :容器名稱
七、檢視容器的詳細資訊
格式:
docker inspect [容器ID或名稱]
示例:
[root@docker ~/test]# docker inspect 22b601ab6f9f
[
{
"Id": "22b601ab6f9f7010221440f1158e0ece348768e4df1b133690f1c503ed012e4d",
"Created": "2021-01-12T09:29:07.881750107Z",
"Path": "/docker-entrypoint.sh",
"Args": [
"nginx",
"-g",
"daemon off;"
],
...
引數:
-f : 指定使用golang語言模板
示例:
[root@docker ~/test]# docker inspect -f '{{ .State.Status }}' d4b2a919cb7f
running
八、複製命令
格式:
第一種:複製到容器內
docker cp [宿主主機的路徑] [容器ID]:[容器內的路徑]
第二種:複製到容器外
docker cp [容器ID]:[容器內的路徑] [宿主主機的路徑]
示例:
[root@docker ~]# docker cp test/demo.html f50bb42dd583:/usr/share/nginx/html
[root@docker ~]# docker cp f50bb42dd583:/usr/share/nginx/html/50x.html .
[root@docker ~]# ll
total 3284696
-rw-r--r-- 1 root root 494 Dec 15 21:59 50x.html
九、進入容器
exec(推薦)
解釋:
exec不是進入容器的命令,而是碰巧有這種功能。其功能是在容器外向容器內執行一條命令的命令。
格式:
docker exec [引數] [容器的ID或名稱] [命令]
示例:
[root@docker ~]# docker exec -i -t ead6cdefcd01 bash
attach
解釋:
進入容器。通過一個管道連線到容器的頂級程序。
缺點:當attach退出是,順帶把頂級程序也帶走了。
格式:
docker attach [容器ID或名稱]
示例:
[root@docker ~]# docker attach mystifying_kirch
nsenter
解釋:建立兩個程序之間的互通管道
格式:
nsenter --target $( docker inspect -f {{.State.Pid}} nginxv1 ) --mount --uts --ipc --net --pid
ssh
解釋:通過ssh隧道連線
格式:
ssh [email protected]