Docker常用指令
阿新 • • 發佈:2020-11-27
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映象