Docker - 01 常用指令、引數配置速查表

會煮咖啡的貓發表於2018-08-14

docker

目錄

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 [容器名稱]:[容器內目錄] .
  • execattach 區別

在 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中了。

參考


© 會煮咖啡的貓咪

相關文章