第二章 : Docker操作命令
阿新 • • 發佈:2021-10-04
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