官方repo地址被牆,因此我用阿里html
# 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
國內鏡像慢,因此我用阿里linux
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
功能 | 命令 |
---|---|
拉取鏡像 | 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參數大 |
參數 | 簡介 |
---|---|
-- -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中了。json
© 會煮咖啡的貓咪ubuntu