Docker常用命令

啟動容器

# 后臺啟動容器,-d 為開啟后臺模式(守護進程)
docker run -d 鏡像名稱
# 注意點:
# docker容器使用后臺運行時,必須要有一個前臺進程,不然docker發現沒有應用,就會自動停止

# 用完就刪除,一般用來測試
docker run --rm 鏡像名稱


退出容器

# 退出并停止容器
exit

# 退出但不停止容器
Ctrl + P + Q


刪除容器

# 刪除指定容器,但不能刪除正在運行中的容器,可以用rm -f參數強行刪除
docker rm 容器id

# 刪除所有容器
docker rm -f $(docker ps -aq)


啟動和停止容器

# 啟動容器
docker start 容器id

# 重啟容器
docker restart 容器id

# 停止當前正在運行的容器
docker stop 容器id

# 強制停止當前容器
docker kill 容器id


進入當前正在運行的容器

# 方式一:進入容器后開啟一個新的終端(或會話),可以在里面操作(常用!!!)
docker exec -it 容器id /bin/bash

# 方式二:進入容器正在執行的終端(或會話),不會啟動新的進程
docker attach 容器id


從容器內拷貝文件到宿主機上

docker cp 容器id:容器內路徑 宿主機目的路徑

# 注意點:
# 拷貝文件,不需要容器處于運行中,即時處于停止狀態,只要文件存在,都可以拷貝
# 拷貝是一個手動的過程,可以通過-v掛在目錄,實現文件自動同步


查看鏡像變更歷史(鏡像構建步驟)

# 可通過該命令學習借鑒好的鏡像的構建過程!!!
docker history 鏡像id


提交鏡像

# 提交容器成為一個新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目標鏡像名稱:[TAG]


使用數據卷

# 方式一:直接使用命令來掛載
docker run -it -v 宿主機目錄:容器內目錄
docker run -it -v 掛載名稱(不帶斜杠):容器內目錄
docker run -it -v 容器內目錄

# 方式二:Dockerfile
# FROM centos
# VOLUME ["volume01", "volume02"]
# CMD echo "----end----"

# 查看容器卷掛載情況(通過容器鏡像元數據查看)
docker inspect 容器id

# 查看所有的 volume 的情況
docker volume ls

# 查看卷的詳細情況
docker volume inspect 卷名

# 注意點:
# 通常docker卷在沒有指定目錄的情況下,都是在/var/lib/docker/volumes/xxx/_data

# 如何確定是具名還是匿名掛載,還是指定路面掛載?
# -v 容器內路徑 => 匿名掛載
# -v 卷名(不帶斜杠):容器內路徑 => 具名掛載
# -v 宿主機路徑(帶斜杠):容器內路徑 => 指定路徑掛載


# 數據卷拓展
docker run -d 具名:容器內路徑:ro nginx
docker run -d 具名:容器內路徑:rw nginx

# 只讀,表明該路徑只能通過宿主機來操作,容器內部是無法操作的!!!
ro => readonly
# 可讀可寫(默認)
rw => readwrite

# 注意點:
# 一旦設置了容器權限,容器對掛載出來的內容就有了限定


數據卷容器(實現不用容器之間的數據共享)

# 使用 --volumes-form
docker run -d -p 3310:3306 \
-v /etc/mysql/conf.d \
-v /var/lib/mysql \
-e MYSQL_ROOT_PQSSWORD=123456 \
--name mysql01 mysql:5.7

docker run -d -p 3311:3306 \
-e MYSQL_ROOT_PQSSWORD=123456 \
--name mysql02 \
--volumes-form mysql01 mysql:5.7

# 運行完后,兩個容器數據同步(數據通過拷貝的形式完成同步,每個容器都有一個副本!!!)


導入導出

# 鏡像導出(當前命令執行路徑即為鏡像導出目錄)
docker save 鏡像id > XXX.tar

# 鏡像導入
docker load < XXX.tar

# 鏡像導出(可解決鏡像load后沒有名稱和標簽的問題)
docker save -o XXX.tar 鏡像名稱:鏡像標簽

# 鏡像重命名
docker tag 鏡像id 鏡像名稱:鏡像標簽

# 容器導出
docker export 容器id > XXX.tar

# 容器導入
docker import XXX.tar


其他命令

# 查看日志
docker logs -f -t --tail 顯示條數 容器id
docker logs -f 容器id

# 查看容器中進程信息
docker top 容器id

# 查看鏡像元數據
docker inspect 容器id/鏡像id

# 刪除所有無名稱的鏡像(懸空鏡像)
docker rmi $(docker images -f "dangling=true" -q)

# 查看 docker run運行命令
history | grep 'docker run'
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容