目錄
Docker - 01 常用指令、引數配置速查表
Centos7 安裝 Docker
阿里映象安裝
官方repo地址被牆,所以我用阿里
# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 新增軟體源資訊
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新並安裝 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啟Docker服務
sudo systemctl start docker
複製程式碼
加速
國內映象慢,所以我用阿里
sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
複製程式碼
命令速查表
常用度排序
映象操作
功能 | 命令 |
---|---|
拉取映象 | docker pull [映象名稱:版本] |
映象列表 | docker images |
刪除映象 | docker rmi [映象名稱:版本] |
映象操作記錄 | docker history [映象名稱:版本] |
給映象設定新的倉庫 | docker tag [映象名稱:版本] [新映象名稱:新版本] |
檢視映象詳細 | docker inspect [映象名稱:版本] |
搜尋映象 | docker search [關鍵字] |
倉庫登入 | docker login |
docker tag 指令得到了一個新的,和原來的映象一模一樣的映象。後續文談到私倉非常有用。
容器操作
功能 | 命令 |
---|---|
啟動容器並進入 | docker run -ti --name [容器名稱] [映象名稱:版本] bash |
容器列表 | docker ps -a |
容器提交為新的映象 | docker commit [容器名稱] my_image:v1.0 |
容器後臺執行 | docker run -d --name [容器名稱] [映象名稱:版本] bash -c "echo hello world" |
容器結束後自動刪除 | docker run --rm --name [容器名稱] [映象名稱:版本] bash -c "echo hello world" |
刪除容器 | docker rm [容器名稱] |
進入容器 exec | docker exec -ti [容器名稱] bash |
進入容器 attach | docker attach [容器名稱] |
停止容器 | docker stop [容器名稱] |
Docker 日誌 | docker logs [容器名稱] |
檢視容器詳細 | docker inspect [容器名稱] |
檢視容器最近一個程式 | docker top [容器名稱] |
繼續執行被停止的容器 | docker restart [容器名稱] |
暫停一個容器程式 | docker pause [容器名稱] |
取消暫停 | docker unpause [容器名稱] |
終止容器 | docker kill [容器名稱] |
埠對映 | docker run -ti --name [容器名稱] -p 8080:80 [映象名稱:版本] bash |
容器互聯 | docker run -ti --name [容器名稱] --link [被互聯容器名稱]:[容器內名稱] net:v1.0 bash |
複製容器檔案到宿主 | docker cp [容器名稱]:[容器內目錄] . |
exec
與attach
區別
在 exec 裡面執行 exit 命令,你只是關掉了 exec 命令新開的程式,而主程式依舊在執行,所以容器並不會停止 在 attach 裡面執行 exit 命令,你實際是終止了主程式,所以容器也就隨之被停止了
-p
配置
-p hostPort:containerPort 對映所有 IP 地址上的指定埠到容器內部 -p ip:hostPort:containerPort 對映指定 IP 地址上的指定埠到容器內部 -p ip::containerPort 對映指定 IP 地址上的任意埠到容器內部
記憶體限制
引數 | 簡介 |
---|---|
-m, - -memory | 記憶體限制,格式:數字+單位,單位可以是b, k, m, g,最小4M |
-- -memory-swap | 記憶體和交換空間總大小限制,注意:必須比-m引數大 |
CPU限制
引數 | 簡介 |
---|---|
-- -cpuset-cpus="" | 允許使用的CPU集 |
-c,- -cpu-shares=0 | CPU共享權值 |
-- -cpu-quota=0 | 限制CPU CFS配額,必須不小於1ms,即>=1000 |
cpu-period=0 | 限制CPU CFS排程週期,範圍是100ms~1s,即[1000, 1000000] |
sudo docker run -ti --cpuset-cpus="1,3" --name cpuset [映象名稱:版本] bash
複製程式碼
比如下面的指令指定容器程式可以在 CPU1 和 CPU3 上執行
資料卷
功能 | 命令 |
---|---|
建立一個卷 | docker run -ti --name [容器名稱] -v /[資料卷名稱] [映象名稱:版本] bash |
刪除一個資料卷 | docker rm -v [資料卷名稱] |
掛載宿主目錄 | docker run -ti --name [容器名稱] -v [宿主目錄]:[容器內目錄] [映象名稱:版本] bash |
資料卷容器 | docker run -ti -d -v /[資料卷名稱] --name [資料卷容器名稱] [映象名稱:版本] |
使用資料卷容器 | docker run -ti --volumes-from [資料卷容器名稱] --name [新容器名稱] [映象名稱:版本] bash |
清除所有 | docker volume prune |
備份資料卷 1 - 建立容器 | docker run -it --name vol_simple -v /data ubuntu /bin/bash |
備份資料卷 2 - 備份 | docker run --rm --vloumes-from vol_simple -v$(pwd):/backup ubuntu tar cvf /backup/data.tar /data |
恢復資料卷 1 - 建立目標容器 | docker run -it --name vol_bck -v /data ubuntu /bin/bash |
恢復資料卷 2 - 解壓 | docker run --rm --volumes-from vol_bck -v $(pwd):/backup ubuntu tar xvf /backup/data.tar -C / |
備份資料卷: 指令啟動了一個臨時的容器,這個容器掛載了兩個volume,第一個volume與要備份的volume共享,第二個volume將宿主機的當前目錄掛載到容器的/backup下。容器執行後將要備份的內容(/data資料夾)備份到/backup/data.tar,然後刪除容器,備份後的data.tar就留在了當前目錄。
恢復資料卷: 首先執行了一個新容器作為資料恢復的目標。第二行指令啟動了一個臨時容器,這個容器掛載了兩個volume,第一個volume與要恢復的volume共享,第二個將宿主機的當前目錄掛載到容器的/backup下。由於之前備份的data.tar在當前目錄下,那麼它在容器中的/backup也能訪問到,容器啟動後將這個存檔檔案中的/data恢復到跟目錄下,然後刪除容器,恢復後的資料在vol_bck的volume中了。
參考
© 會煮咖啡的貓咪