Docker 容器是鏡像的運行實例。以下是常用的 Docker 容器命令及其示例:
1. 運行容器
docker run [選項] <鏡像名> [命令]
常用選項:
-d
:后臺運行(守護模式)-it
:交互式終端--name
:指定容器名稱-p
:端口映射(主機端口:容器端口)-v
:卷掛載(主機目錄:容器目錄)--rm
:容器退出后自動刪除-e
:設置環境變量
示例:
# 運行Nginx容器并映射端口
docker run -d -p 8080:80 --name my-nginx nginx# 運行交互式Ubuntu容器
docker run -it --name my-ubuntu ubuntu bash# 運行帶有環境變量的容器
docker run -e MYSQL_ROOT_PASSWORD=123456 --name mysql -d mysql
2. 查看容器列表
docker ps [選項]
常用選項:
-a
:顯示所有容器(包括停止的)-q
:只顯示容器ID--filter
:過濾條件--format
:自定義輸出格式
示例:
docker ps -a
docker ps --filter "status=running"
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
3. 啟動/停止/重啟容器
docker start <容器名或ID>
docker stop <容器名或ID>
docker restart <容器名或ID>
示例:
docker start my-nginx
docker stop my-nginx
docker restart my-nginx
4. 暫停/恢復容器
docker pause <容器名或ID>
docker unpause <容器名或ID>
5. 刪除容器
docker rm [選項] <容器名或ID>
常用選項:
-f
:強制刪除(運行中的容器)-v
:同時刪除關聯的卷
示例:
docker rm my-nginx
docker rm -f $(docker ps -aq) # 刪除所有容器
6. 進入運行中的容器
docker exec [選項] <容器名或ID> <命令>
常用選項:
-it
:交互式終端
示例:
docker exec -it my-nginx bash
docker exec my-nginx ls /etc/nginx
7. 查看容器日志
docker logs [選項] <容器名或ID>
常用選項:
-f
:實時跟蹤日志--tail N
:顯示最后N行-t
:顯示時間戳
示例:
docker logs my-nginx
docker logs -f --tail 100 my-nginx
8. 查看容器詳情
docker inspect <容器名或ID>
示例:
docker inspect my-nginx | grep IPAddress
9. 查看容器進程
docker top <容器名或ID>
10. 查看容器資源使用情況
docker stats [容器名或ID]
示例:
docker stats
docker stats my-nginx
11. 容器與主機文件復制
# 從容器復制到主機
docker cp <容器名或ID>:<容器路徑> <主機路徑># 從主機復制到容器
docker cp <主機路徑> <容器名或ID>:<容器路徑>
示例:
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf
docker cp config.json my-nginx:/app/config.json
12. 提交容器變更為新鏡像
docker commit [選項] <容器名或ID> [倉庫名:標簽]
示例:
docker commit my-nginx my-nginx:v2
13. 導出容器文件系統
docker export <容器名或ID> > container.tar
14. 容器網絡相關
# 查看容器網絡
docker network ls# 創建網絡
docker network create my-network# 將容器連接到網絡
docker network connect my-network my-nginx
實際使用示例
- 運行并管理Web應用容器:
docker run -d -p 5000:5000 --name webapp my-webapp:v1
docker logs -f webapp
docker exec -it webapp bash
- 數據庫容器管理:
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /data/mysql:/var/lib/mysql mysql:5.7
docker exec -it mysql mysql -uroot -p123456
- 開發環境調試:
docker run -it --rm -v $(pwd):/app -p 3000:3000 node:14 bash
# 在容器內
cd /app
npm install
npm start
- 批量操作容器:
# 停止所有容器
docker stop $(docker ps -aq)# 刪除所有已停止的容器
docker container prune# 更新所有容器
docker ps -q | xargs -I {} docker restart {}