Docker 常用命令

一、Docker鏡像操作基礎命令

[root@localhost ~]# docker search 鏡像名稱 //搜索鏡像(在docker hub官網上進行查找)
[root@localhost ~]# docker pull 鏡像名稱 //下載鏡像(如果不指定鏡像標籤默認下載最新版的鏡像)
[root@localhost ~]# docker push 倉庫名稱/倉庫賬號/鏡像名稱 //上傳鏡像
[root@localhost ~]# docker images //查詢本地下載的所有鏡像
[root@localhost ~]# docker images 鏡像名稱 //查詢指定的鏡像
[root@localhost ~]# docker inspect 容器名稱或容器ID //查詢鏡像的詳細信息
[root@localhost ~]# docker tag 原本的鏡像名稱及標籤 生成以後的鏡像名稱及標籤 //爲本地鏡像起一個新的名稱、標籤(源鏡像還存在)
[root@localhost ~]# docker rmi 鏡像名或鏡像ID //刪除本地鏡像
[root@localhost ~]# docker rmi 鏡像名或鏡像ID //強制刪除本地鏡像
//注意:強制的這種方式適用於有容器正在使用這個鏡像
//這種方式容器如果在運行時也是無法刪除的,容器停止後刪除的話,容器依然可以使用
[root@localhost ~]# docker save > 通過鏡像生成的文件 鏡像名稱
[root@localhost ~]# docker save -o 通過鏡像生成的文件 鏡像名稱 //通過鏡像生成新的鏡像文件
[root@localhost ~]# docker load < 鏡像文件
[root@localhost ~]# docker load --i 鏡像文件 //將本地的鏡像文件生成爲鏡像
//建議:“>”和“<”號成對使用、“i”和“o”成對使用
[root@localhost ~]# docker history 鏡像名稱
//查看生成鏡像執行的歷史命令

二、Docker容器操作基礎命令

[root@localhost ~]# docker create -it --name 容器名稱 使用的鏡像 /bin/bash
//使用指定的鏡像生成一個容器,並指定一個shell
常用選項解釋如下:
-i:採用交互式的方式;
-t:分配一個僞終端;
-d:後臺運行;
--name:指定容器名稱
--restart=always:始終保持容器運行(隨着docker的啓動而啓動)
[root@localhost ~]# docker ps //查詢本機正在運行的容器
[root@localhost ~]# docker ps -a //查詢本機所有的容器,不管容器是否在運行
[root@localhost ~]# docker start 容器名稱或容器ID //啓動容器
[root@localhost ~]# docker stop 容器名稱或容器ID //停止容器
[root@localhost ~]# docker restart 容器名稱或容器ID //重新啓動容器
[root@localhost ~]# docker exec -it 容器名稱或容器ID /bin/bash //進入容器並分配一個可用的shell
[root@localhost ~]# docker attach dhcp //也是進入容器
//如果是attach進入容器,使用exit退出的話這個容器也會關閉。
//使用ctrl+p ctrl+q退出容器,並不會關閉這個容器,會保持容器的運行狀態。
[root@localhost ~]# docker cp docker宿主機文件 docker容器的目錄 //從本地上傳文件到容器中
[root@localhost ~]# docker cp docker容器名稱:文件 docker宿主機文件 //將容器中的文件下載到本地
[root@localhost ~]# docker commit 容器名稱 鏡像名稱及標籤
//通過容器生成鏡像
[root@localhost ~]# docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2
//-p:端口映射(前面是宿主機端口:後面是容器暴露的端口)
//-v:掛載目錄(前面是宿主機的目錄:後面的是容器的目錄)自動創建宿主機的目錄
[root@localhost ~]# docker run -itd --name nginx 192.168.1.1:5000/centos:nginx nginx -g "daemon off;"
//創建容器,不進入容器即開啓容器中的服務
[root@localhost ~]# docker logs 容器名稱會容器ID
//查看容器的日誌,可以在後面加“-f”選項,動態輸出
//如果沒有內容輸出則表示容器正常沒有錯誤
[root@localhost ~]# docker inspect 容器名稱
//查看容器的詳細信息
exec和attach兩者的區別:
使用exec的方式進入容器,使用“exit”的方式退出容器後容器並不會停止;
使用attach的方式進入容器,使用“exit”的方式退出容器後容器便會停止;可以使用Ctrl + p 或者 Ctrl + q 組合鍵的方式退出容器後,並不會關閉這個容器;
exec方式:進入容器是會產生新的進程;
attach方式:進入容器不會產生新的進程;
以下方式生產環境不建議使用:
[root@localhost ~]# docker ps -a -q | xargs docker start //啓動本機所有容器
[root@localhost ~]# docker ps -a -q | xargs docker stop //停止本機所有容器
[root@localhost ~]# docker ps -a -q | xargs docker restart //重新啓動本機所有容器

[root@localhost ~]# docker pa -a -q | xargs docker rm -f //刪除所有容器,相當於“rm -rf /*”
[root@localhost ~]# docker rm 容器名稱或容器ID //刪除容器(容器是停止的狀態)
[root@localhost ~]# docker rm 容器名稱或容器ID -f //強制刪除容器(容器是運行的狀態)

三、docker Swarm羣集常用命令

[root@node02 ~]# docker swarm leave
//那個節點想推出swarm羣集,就在那臺節點上執行這條命令
//節點自動退出swarm羣集(相當於辭職)
[root@node01 ~]# docker node rm 節點名稱
//由manager主動刪除節點(相當於開除)
[root@node01 ~]# docker node promote 節點名稱
//將節點升級
[root@node01 ~]# docker node demote 節點名稱
//將節點降級
[root@node01 ~]# docker node ls
//查看swarm羣集的信息(只可以在manager角色的主機上查看)
[root@node01 ~]# docker node update --availability drain 節點名稱
//調整節點不參加工作
[root@node01 ~]# docker swarm join-token worker
//查看加入swarm羣集的令牌(可以是worker也可以是manager)
[root@node01 ~]# docker service scale web=4
//擴容、收縮swarn羣集servie的數量(取決與羣集原本的數量)
//比原本羣集數量多,就是擴容,反之、收縮
[root@node01 ~]# docker service ls
//查看創建的service
[root@node01 ~]# docker service ps service的名稱
//查看創建的service運行在那些容器上
[root@node01 ~]# docker service create --replicas 6 --name web -p 80:80 nginx
//指定運行的service副本數量
[root@node01 ~]# docker service create --replicas 3 --constraint node.hostname==node03 --name test nginx
//指定node節點,創建名爲test的容器
[root@node01 ~]# docker node update --label-add mem=max node02
//以鍵值對的方式給docker02主機打上標籤“mem=max”,等號兩邊的內容是可以自定義的
[root@node01 ~]# docker service create --name test1 --replicas 3 --constraint 'node.labels.mem==max' nginx
//基於nginx鏡像在標籤爲“mem==max”的主機上運行3個名爲test1的服務
[root@node01 ~]# docker node inspect node02
//標籤相關的信息,在Spec{ }中有顯示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章