Docker常用命令

一、幫助命令

查看docker版本信息命令

docker version

查看docker相關信息命令

docker info

docker幫助命令

docker --help

二、鏡像命令

一個鏡像可以生成多個容器

1、列出本地主機上的鏡像

docker images

在這裏插入圖片描述
同一個倉庫源可以有多個TAG,代表這個倉庫源的不同的版本,我們使用REPOSITORY:TAG來定義不同的鏡像。如果不指定一個鏡像的版本標籤,默認使用最新版本的鏡像。例如使用ubuntu,docker會默認使用ubuntu:lastest鏡像。

該命令後面可以加參數,例如

(1)列出本地所有的鏡像(包含中間映像層)

docker images -a

(2)只顯示正在運行的鏡像ID

docker images -q

(3)顯示鏡像的摘要信息

docker images --digests

(4)顯示完整的鏡像信息

docker images --no-trunc

以上參數可組合使用

2、查找鏡像

命令如下:

docker search xxx

其中“xxx”代表鏡像名稱

執行該命令,docker會從https://hub.docker.com上面查找你搜索的鏡像
在這裏插入圖片描述
該命令後面可以加一些參數

docker search --no-trunc

在這裏插入圖片描述
上圖命令會顯示更多的鏡像信息。

(2)列出收藏數(STARS)不小於指定值的鏡像

docker search -s

在這裏插入圖片描述
上圖該命令表示查找STARS數不小於30的鏡像

(3)只列出automated build類型的鏡像

docker search --automated

3、下載鏡像

docker pull xxx

其中“xxx”代表鏡像名字,默認拉取的是最新版本的鏡像

若想拉取某個版本的鏡像,可以用下面的命令

docker pull [IMAGES_NAME]:[TAG]

比如拉取tomcat7.0版本的鏡像,可以用這個命令

docker pull tomcat:7.0

4、刪除鏡像

docker rmi [IMAGES_NAME]

(1)刪除單個鏡像

docker rmi -f [IMAGE_ID]

(2)刪除多個鏡像

docker rmi -f 鏡像名1:TAG 鏡像名2:TAG

(3)刪除全部鏡像

docker rmi -f $(docker images -qa)

注:參數“-f”代表強制

5、提交鏡像

提交容器副本使之成爲一個新的鏡像

docker commit -m="提交的描述信息" -a="作者" 容器ID 目標鏡像名:[標籤名]

案例:

(1)從hub上下載tomcat鏡像到本地併成功運行

docker run -it -p 8080:8080 tomcat

其中“-p”代表主機端口:docker容器端口

-P:隨機分配端口
-i:交互
-t:終端

(2)故意刪除上一步鏡像生產tomcat容器的文檔

(3)即當前的tomcat運行實例是一個沒有文檔內容的容器,以它爲模板commit一個沒有doc的tomcat新鏡像“atguigu/mytomcat”
在這裏插入圖片描述
此時新commit的鏡像沒有doc文件

三、容器命令

1、新建並啓動容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

其中OPTIONS說明如下:

–name:“容器新名字”:爲容器指定一個名稱(別稱);

-d:後臺運行容器,並返回容器ID,即啓動守護式容器;

-i:以交互模式運行容器,通常與-t同時使用;

-t:爲容器重新分配一個僞輸入終端,通常與-i同時使用;

-P:隨機端口映射;

-p:指定端口映射,有以下四種格式:

​ ip:hostPort:containerPort

​ ip::containerPort

​ hostPort:containerPort

​ containerPort

(1)啓動交互式容器

docker run -it IMAGE_NAME /bin/bash

可通過echo $SHELL查看系統當前使用的shell

(2)啓動守護式容器

docker run -d IMAGE_NAME /bin/bash

運行該命令後,再執行docker ps -a進行查看,會發現容器已經退出。

這就涉及到docker的運行機制了,docker容器後臺運行,就必須有一個前臺進程。

容器運行的命令如果不是通過一直掛起的命令(如top,tail命令)執行,則容器就會自動退出。

比如web容器,以nginx爲例,正常情況下,我們配置啓動服務只需要啓動響應的service即可(service nginx start),但這樣做,nginx爲後臺進程模式運行,就導致docker前臺沒有運行的應用,這樣容器後臺啓動後,會立即自殺。所以最佳的解決方案是,將你要運行的程序以前臺進程的形式運行。

2、列出當前所有正在運行的容器

docker ps [OPTIONS]

OPTIONS參數說明:

-a:列出當前所有正在運行的容器 + 歷史上運行過的容器

-l:顯示最近創建的容器

-n:顯示最近n個創建的容器

-q:靜默模式,只顯示容器編號

–no-trunc:不截斷輸出

3、退出容器

退出容器有兩種方式

(1)容器停止退出

exit

(2)容器不停止退出

ctrl + P + Q

4、啓動容器

docker start 容器ID或容器名

5、重啓容器

docker restart 容器ID或容器名

6、停止容器

docker stop 容器ID或容器名

7、強制停止容器

docker kill 容器ID或容器名

8、刪除已停止的容器

docker rm 容器ID或容器名

一次性刪除多個容器(下面兩條命令都可以,隨便選一條執行就行)

docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

9、查看容器日誌

docker logs -f -t --tail 5 容器ID

其中參數-t代表加入時間戳,-f代表跟隨最新的日誌打印,–tail代表數字顯示最後幾條

10、查看容器內運行的進程

docker top 容器ID

11、查看容器內部的細節

docker inspect 容器ID

12、進入正在運行的容器並以命令行交互

(1)exec進入

docker exec -it 容器ID bashShell

在這裏插入圖片描述
(2)attach進入

docker attach 容器ID

(3)上述兩者的區別

attach:直接進入容器啓動命令的終端,不會啓動新的進程

exec:是在容器中打開新的終端,並且可以啓動新的進程

13、從容器內拷貝文件到主機上

docker cp 容器ID:容器內路徑 目的主機路徑

四、容器數據卷

1、概念

docker容器產生的數據,如果不通過docker commit生成新的鏡像,使得數據作爲鏡像的一部分保存下來,那麼當容器刪除後,數據自然也就沒了。爲了在docker中能保存數據,我們使用卷。

容器數據卷可以讓容器中的數據持久化,容器間繼承並共享數據。

卷就是目錄或文件,存在於一個或多個容器中,由docker掛載到容器,但不屬於聯合文件系統,因此能夠繞過Union File System提供一些用於持久存儲或共享數據的特性。

卷的設計目的就是數據的持久化,完全獨立於容器的生存週期,因此docker不會在容器刪除時刪除其掛載的數據卷。

2、數據卷的特點:

(1)數據卷可在容器之間共享或重用數據

(2)卷中的更改可以直接生效

(3)數據卷中的更改不會包含在鏡像的更新中

(4)數據卷的生命週期一直持續到沒有容器使用它爲止

3、容器內添加數據卷

直接命令添加

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名

在這裏插入圖片描述
若想加讀寫權限限制,可以用下面命令執行

docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名

其中“ro”代表只讀模式

4、容器與宿主機之間數據共享

在這裏插入圖片描述

5、容器停止退出後,主機修改數據會同步到容器中

在這裏插入圖片描述

五、本地鏡像發佈到阿里雲

1、本地鏡像發佈到阿里雲流程

在這裏插入圖片描述

2、鏡像生成的方法

從容器創建一個新的鏡像(docker commit命令)
在這裏插入圖片描述

3、將本地鏡像推送到阿里雲

(1)準備好本地鏡像
在這裏插入圖片描述
(2)創建阿里雲鏡像倉庫

訪問阿里雲容器鏡像服務,地址:https://cr.console.aliyun.com/cn-shanghai/instances/repositories

在默認實例中選擇鏡像倉庫,點擊創建鏡像倉庫,在彈出的窗口中,填寫相關信息

然後選擇下一步,選擇本地倉庫,最後點擊創建鏡像倉庫

在這裏插入圖片描述

4、將鏡像推送到阿里雲registry

sudo docker login --username="阿里雲賬號" registry.cn-hangzhou.aliyuncs.com
sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/"命名空間"/"倉庫名稱":[鏡像版本號]
sudo docker push registry.cn-hangzhou.aliyuncs.com/"命名空間"/"倉庫名稱":[鏡像版本號]

根據實際鏡像信息替換示例中的[ImageId]和[鏡像版本號]參數。

5、從阿里雲Registry中拉取鏡像

sudo docker pull registry.cn-hangzhou.aliyuncs.com/"命名空間"/"倉庫名稱":[鏡像版本號]

注:以上命令中的"命名空間"和"倉庫名稱"根據自己的賬號填寫。

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