Docker 入門學習(2)
1. Docker基本命令
- 查看Docker程序是否正常
$ sudo docker info
返回所有容器和鏡像的數量、Docker使用的執行驅動和存儲驅動,以及Docker的基本配置。
- 創建容器
$ sudo docker run -i -t ubuntu /bin/bash
-i:保證容器中STDIN是開啓的;-t:爲創建的容器提供一個僞tty終端。查看docker run所有標誌:
$ docker help run
- 檢查容器主機名
root@...:/# hostname
- 檢查容器的/etc/hosts文件
root@...:/# cat /etc/hosts
- 檢查容器的網絡接口
root@.../# ifconfig
- 檢查容器的進程
root@.../# ps -aux
- 第一個容器中安裝軟件包
root@.../#apt-get update && apt-get install vim
- 退出容器
root@.../#exit
-
列出容器
- 列出正在運行的容器
$ docker ps
- 列出所有容器
$ docker ps -a
- 顯示最後x個容器,無論正在運行還是停止
$ docker ps -n x
輸出包括:
ID、用於創建容器的鏡像、容器最後執行的命令、創建時間以及退出狀態。
2. 管理Docker容器
- 創建命名Docker
$ sudo docker run --name wtt_docker1 -i -t ubuntu /bin/bash
- 刪除容器
$ docker rm <ID/NAMES>
- 一次性刪除所有容器
$ sudo docker rm 'sudo docker ps -a -q'
-
重新啓動已停止的容器
- 通過NAMES啓動停止運行的容器
$ sudo docker start <NAMES>
- 通過ID啓動已經停止運行的容器
$ sudo docker start <ID>
- 使用restart
$ docker restart <NAMES/ID>
-
終止正在運行的容器
$ sudo docker stop <NAMES/ID>
- 暫停容器
$ sudo docker pause <NAMES/ID>
- 恢復已暫停容器
$ sudo docker unpause <NAMES/ID>
- 清除容器
清除處於停止狀態的容器
$ sudo docker prune <NAMES/ID>
- 強制終止
$ sudo docker kill <NAMES/ID>
- 進入容器
使用-d
參數時候,容器啓動會進入後臺,無法看到容器內信息,也無法進行操作,需要進入容器可以:
- 重新附着容器會話
Docker容器重啓時,會沿用docker run命令指定的參數運行,使用docker attach
可以重新附着容器會話。
$ sudo docker attach <NAMES/ID>
exec
命令(推薦)
可以在容器內執行任意命令
$ sudo docker exec -it <ID> /bin/bash
指定-it
會保持標準輸入打開,並分配一個僞終端。
- 自動重啓容器
$ sudo docker run --restart=always --name wtt_long_time -d ubuntu /bin/sh -c "while true;do echo hello;sleep 1;done"
--restart
被設置成always
,無論容器的退出代碼是什麼,Docker都會重啓容器。
或者:
--restart=on-failure:5
當容器退出代碼非0時,Docker會自動重啓該容器,最多重啓5次。
3. 守護式容器
守護式容器沒有交互式會話,適合運行應用程序和服務。
- 創建長期運行的容器
$ sudo docker run --name wtt_long_time -d ubuntu /bin/sh -c "while true;do echo hello;sleep 1;done"
-d:Docker會將容器放到後臺運行。
- 獲取守護式容器的日誌
$ sudo docker logs <NAMES/ID>
- 跟蹤日誌
$ sudo docker logs -ft <NAMES/ID>
-f:跟蹤日誌;-t:爲每條日誌加上時間戳。
- 查看容器內的進程
$ sudo docker top <NAMES/ID>
- Docker統計信息
$ docker stats
輸出:
守護式容器列表、CPU、內存、網絡I/O及存儲I/O的性能和指標。
- 容器內部運行進程
$ sudo docker exec -d wtt_long_time touch /etc/new_config_file
-d:運行一個後臺進程。touch /etc/new_config_file:創建空文件。
- 容器內部運行交互命令
$ sudo docker exec -t -i wtt_long_time /bin/bash
4. 容器遷移
- 導出容器
導出一個已經創建的容器到一個文件
$ sudo docker export -o test.tar wtingting/apache2
或者
$ sudo docker export wtingting/apache2 > test.tar
- 導入容器快照
$ sudo docker import test.tar -test/ubuntu:v1.0
容器快照與鏡像存儲文件區別:
容器快照將丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),可以重新指定標籤等元數據信息;
鏡像存儲文件將保存完整記錄,體積更大。
5. 其他容器命令
- 複製文件
在容器和主機之間複製文件。
$ sudo docker cp <文件路徑> <容器NAMES>:/tmp/
- 查看變更
查看容器內文件的變更
$ sudo docker diff <容器NAMES>
- 查看端口映射
$ sudo docker port <容器NAMES>
- 更新配置
更新容器的一些運行時配置,主要是一些資源限制份額。
$ sudo docker update <OPTIONS> <容器NAMES>