1. 程式人生 > 其它 >第二章 : Docker操作命令

第二章 : Docker操作命令

Docker常用操作命令

1. 拉取映象

docker pull 映象名(:標籤)  # 從 docker.io/library 中拉取映象, 不指定tag標籤預設拉取最新版本

Docker 拉取映象時, 如果映象更新且本地已有基礎映象(Base Image), 每次只拉取增量部分, 不會全部都拉取



2. 推送映象

docker push 映象名:標籤
docker push a386303138/alpine:v3.14.1

Docker 推送映象時, 如果以基礎映象(Base Image)進行更改的, 每次只推送增量部分, 基礎映象不會推送到倉庫



3. 查詢映象

docker images / docker image ls
  # 查詢已有映象



4. 修改映象 Tag

docker tag 映象ID 映象名稱:標籤
docker tag 映象ID a386303138/alpine:v3.14.1



5. 搜尋映象

docker search 映象名



6. 查詢容器

docker ps # 查詢正在執行的容器
docker ps -a # 查詢全部容器



7. 執行映象

docker run -itd --rm --name 容器名 映象名:標籤 COMMAND
-i :表示啟動-一個可互動的容器, 並持續開啟標準輸入
-t :表示使用終端關聯到容器的標準輸入輸出上
-d :表示將容器放置後臺執行
--rm :退出後即刪除容器 --name :表示定義容器唯一名稱 IMAGE :表示要執行的映象 COMMAND :表示啟動容器時要執行的命令 docker run -itd --name a386303138/alpine:latest a386303138/alpine:latest /bin/bash



8. 進入容器

docker exec -it 容器名 COMMAND
exit : 退出容器



9. 啟動/停止/重啟容器

docker start/stop/restart 容器名/容器ID



10. 刪除容器

docker rm 容器名/容器ID # 需要先停止容器才能刪除, 或者新增引數 -f 強制刪除
docker 
rm `docker ps -a|grep -i exit|awk '{print $1}'` # 刪除所有停止執行的容器



11. 提交容器

docker run -d --name myalpine a386303138/alpine:latest /bin/sleep 300s # 執行一個容器
docker exec -it myalpine /bin/sh # 進入容器
echo "hello world" >1.txt # 寫入資料
exit # 退出

docker commit -p 容器名/容器ID 新映象名:新標籤 # -p 儲存到執行命令這一時刻的內容 之後更新的不會報錯
docker commit -p myalpine a386303138/alpine:v_1.txt

12. 匯入/匯出映象

匯出: docker save 映象名:標籤/映象ID > xxx.tar
docker save a386303138/alpine:v_1.txt > alpine:v_1.txt.tar # 匯入後帶tag標籤
docker save 021b3423115f > alpine:latest.tar # 匯入後不帶tag標籤

匯入: docker load -i xxx.tar 或 docker load < xxx.tar
docker load -i alpine\:v_1.txt.tar
或者
docker load < alpine\:v_1.txt.tar

tip: 如果你匯出的時候名稱用了: 記得匯入的時候用\轉義



13. 檢視容器日誌

docker logs 容器名/容器ID
-f : 持續追蹤日誌輸出



14. 重新命名容器

docker rename 舊容器名/容器ID 新容器名
docker rename myalpine hello_myalpine



15. 埠對映

docker run -p 主機埠:容器埠
docker run -d --name nginx -p 81:80 a386303138/nginx:v1.20.1

[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
175d636b6fd4 a386303138/nginx:v1.20.1 "/docker-entrypoint.…" 46 seconds ago Up 43 seconds 0.0.0.0:81->80/tcp bold_davinci



16. 檔案目錄掛載

docker run -v 主機目錄檔案:容器目錄檔案 映象名/映象ID
docker run -d --name nginx -p 81:80 -v /html:/usr/share/nginx/html a386303138/nginx:v1.20.1
[root@docker ~]# netstat -lntup | grep 81
tcp6 0 0 :::81 :::* LISTEN 4540/docker-proxy

17. 傳遞環境變數

docker run -e 環境變數鍵值對 映象名/映象ID

[root@docker ~]# docker run --rm -e E_OPTS=123456 alpine:latest printenv # 可新增多個環境變數 -e 鍵值對...-e ...
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=ff9e2a15e781
E_OPTS=123456
HOME=/root

--env-file # 批量傳遞環境變數, 將環境變數寫入一個檔案中 /root/env.txt
docker run --rm --env-file /root/env.txt alpine:latest printenv

18. 容器內下載軟體

docker exec -it nginx /bin/bash

apt-get update && apt-get install tree -y