1. 程式人生 > 實用技巧 >Docker常用指令

Docker常用指令

1. 執行主機

docker run 

一般執行主機時會-it組合使用,用以建立一個可在終端互動的容器,比如:docker run -it --name local_nginx nginx:latest /bin/bash

2. 列出正在執行的主機

docker ps

3. 切換到指定的主機上

docker attach  container_id/container_name

4. 從遠端拉下指定的容器

docker pull container

此處可以先用docker search secret_key選定具體的容器後再拉到本地

5. 列出下載到本地的容器

docker images  

6. 啟動已停止的容器

docker start  container_id/container_name

7. 啟動容器並命名

docker run -d --name test_name ubuntu /bin/bash

8. 從容器中建立新的映象

docket commit  container_id/container_name gaofeifiy/ubuntu-base

9. 刪除容器/映象

rm container_id/cpntainer_name#刪除容器
rmi image_id#刪除映象

容器和映象

容器和映象的關係類似於java中的方法與類之間的關係,一個映象可以構建出多個容器,映象之間也可以相互繼承,具體內容可參考文件

10. 檢視映象的構建流程

docker history id

11. 檢視docker的更多指令

docker run --help

12. 在容器中執行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

引數

  • -i保持stdin開啟
  • -t分配一個偽終端(tty)
  • -d後臺執行
  • -w容器內的工作目錄
  • /bin/bash執行容器中的 /bin/bash 指令碼
  • 這裡的 CONTAINER 可以是容器ID也可以是容器名字
  • 命令最後的 /bin/bash 不是必須這麼填, 而是執行的容器中的指令碼, 如果你的映象是 alpine版的就是 sh, 因為這個版本中就沒有 bash 這個命令

進入容器中感覺其實和進入一個虛擬機器一樣, 但是容器和虛擬機器本質上是完全不一樣的東西

13. 關閉容器

docker stop container_id/container_name

14. 宿主機和容器的埠繫結(-p引數)

繫結多個埠就設定多個對映

docker run -d -p 8088:80 -p 4433:443 nginx:latest
  • 不寫本地埠, docker 將幫你自動分配:docker run -d -p :80 -p :443 nginx:latest
  • 加上 ip 就綁本地指定的 ip:docker run -d -p 127.0.0.1:8088:80 -p :443 nginx:latest
  • 不寫本地埠就隨機分配:docker run -d -p 127.0.0.1::80 -p :443 nginx:latest

15. 快速移除映象

prune 大殺器:這一手還是慎用,一些情況下可造成 rm -rf /* 的效果

  • 移除所有未使用的映象
    docker image prune
  • 移除所有未執行的容器
    docker container prune
  • 移除所有未使用的本地卷
    docker volume prune
    ......

16. Dockerfile中的context

這個 ./的路徑指的是構建文字流(context)的路徑, 而不是 Dockerfile的檔案路徑, 在 Dockerfile 中用的各種相對路徑都是基於 context 的,並不是Dockerfile的路徑即是上下文路徑,我們完全可以用-f引數指定其他檔案作為Dockerfile,因為我們build一個映象時,其實並非在本地構建,而是在服務端,也就是 Docker 引擎中構建的,當構建的時候,使用者會指定構建映象上下文的路徑,docker build 命令得知這個路徑後,會將路徑下的所有內容打包,然後上傳給 Docker 引擎。這樣 Docker 引擎收到這個上下文包後,展開就會獲得構建映象所需的一切檔案。

資源搜尋網站大全 https://www.renrenfan.com.cn

17. 案例

啟動一個nginx容器並繫結埠和自定義容器名字

docker run -d -p 8080:80 --name local_nginx nginx

指令解釋

  • -d啟動 docker 守護程序
  • -p 8080:80將本地的 8080 埠繫結到容器的 80 埠上
  • --name local_nginx分配一個容器名,用容器名字比容器ID更簡單方便
  • nginx指定執行的映象名,如果沒有指定標籤則預設是 latest, 這裡其實是啟動nginx:latest映象