二、Docker相關命令 2.1、Docker 服務相關命令 systemctl命令是系統服務管理器指令 2.1.1、啟動docker服務 命令 systemctl start docker 2.1.2、停止docker服務 命令 systemctl stop docker 2.1.3、重啟dock ...
二、Docker相關命令
2.1、Docker 服務相關命令
systemctl命令是系統服務管理器指令
2.1.1、啟動docker服務
- 命令
systemctl start docker
2.1.2、停止docker服務
- 命令
systemctl stop docker
2.1.3、重啟docker服務
- 命令
systemctl restart docker
2.1.4、查看docker服務狀態
- 命令
systemctl status docker
2.1.5、設置開機啟動docker服務
- 命令
systemctl enable docker
- 同樣的,也可以設置開機不啟動docker服務
systemctl disable docker
2.1.6、查看docker概要信息
- 命令
docker info
2.1.7、查看docker幫助文檔
- 命令
docker --help
2.2、Docker 鏡像相關命令
2.2.0、鏡像介紹
- Docker鏡像是由文件系統疊加而成(是一種文件的存儲形式),是docker中的核心概念,可以認為鏡像就是對某些軟體運行的環境以及軟體安裝包。tomcat鏡像文件=tomcat的運行環境+tomcat的軟體安裝包
- 用戶可以從docker倉庫中下載基礎鏡像到本地,比如開發人員可以從docker倉庫下載一個只包含centos7系統的基礎鏡像,把基礎鏡像運行成為一個容器(容器相當於操作系統),然後在這個容器中安裝jdk、mysql、Tomcat、部署war包,最後將容器打成一個新的鏡像
- 開發人員將這個新的鏡像提交給測試人員進行測試,測試人員只需要在測試環境下運行這個鏡像成一個容器就可以了,這樣就可以保證開發環境和測試環境完全一致
2.2.1、查看鏡像
-
命令
-
docker images
-
PS:這些鏡像是我提前拉取的;新安裝的docker應該是一個空列表,只有表頭
-
-
參數說明
- REPOSITORY: 鏡像名稱
- TAG: 鏡像標簽 ,鏡像版本號 (預設是可以省略的,也就是latest)
- IMAGE ID: 鏡像ID
- CREATED: 鏡像的創建日期(不是獲取該鏡像的日期)
- SIZE: 鏡像大小
-
註意事項
- tag版本號如果是latest為最新版,安裝的時候不需要帶版本號,如果不是latest這種的版本,安裝的時候必須帶上版本號
2.2.2、搜索鏡像
- 如果需要從網路中查找需要的鏡像,可以通過如下命令搜索
docker search 鏡像名稱
- NAME: 鏡像名稱
- DESCRIPTION: 鏡像描述
- STARS: 用戶評價,反應一個鏡像的受歡迎程度
- OFFICIAL: 是否官方
- AUTOMATED: 自動構建,表示該鏡像由Docker Hub自動構建流程創建的
- 當然也可以去官網直接搜索,然後按照它的命令直接複製拉取
2.2.3、拉取鏡像
- 拉取鏡像就是從Docker倉庫下載鏡像到本地,鏡像名稱格式為
名稱:版本號
,如果版本號不指定則是最新的版本,命令如下docker pull 鏡像名稱[:版本號]
- 這裡以拉取centos7為例
docker pull centos:7
- 拉取centos最新版本
docker pull centos:latest
- 這裡就不演示了,按照命令拉取即可
2.2.4、刪除鏡像
-
按照鏡像id刪除鏡像,或者鏡像名稱:版本號
docker rmi 鏡像ID | 鏡像的名稱:版本號
-
刪除所有鏡像(謹慎操作)
-
docker rmi `docker images -q`
-
-
這裡也不演示了
2.3、Docker 容器相關命令
2.3.1、查看容器
- 查看正在運行的容器
docker ps
- 查看所有容器
docker ps -a
- 查看最後一次運行的容器
docker ps -l
- 因為現在還沒創建容器,所有這裡不會有顯示
2.3.2、創建與運行容器
-
基於已有的鏡像來創建容器,創建與運行使用如下命令
docker run
-
參數說明
-
參數 意義 -i
表示運行容器 -t
表示容器啟動後會進入其命令行。加入這兩個參數後,容器創建就能登錄進去。即分配一個偽終端/bin/bash --name
為創建的容器命名(名稱必須唯一) -v
表示目錄映射關係(前者是宿主機目錄,後者是容器的目錄),可以使用多個-v做多個目錄或文件映射。註意:最好做目錄映射,在宿主機上做修改,然後共用到容器上 -d
在run後面加上-d參數, 則會創建一個守護式容器在後臺運行(這樣創建容器後不會自動登錄容器,如果只加-i -t兩個參數,並指定終端,創建後就會自動進去容器) -p
表示埠映射,前者是宿主機埠,後者是容器內的映射埠。可以使用多個-p做多個埠映射
-
創建互動式容器
- 以互動式方式創建並運行容器,啟動完成後,會直接進入當前容器。使用exit命令退出容器。以此種方式創建並啟動容器,如果退出容器,則容器會變成停止狀態
- ①、先拉取一個鏡像;這一步不是每次啟動容器都要做的,如果沒有該鏡像再拉取
docker pull centos:7
- ②、創建並啟動名稱為 mycentos 的互動式容器
docker run -it --name=mycentos centos:7 /bin/bash
-it
:創建容器併進入容器指定命令行--name
:指定容器名稱(唯一)centos:7
:指定鏡像文件(可以是鏡像名稱或者鏡像ID)/bin/bash
:進入容器命令行的指令
- ①、先拉取一個鏡像;這一步不是每次啟動容器都要做的,如果沒有該鏡像再拉取
創建式守護式容器
- 對於一個需要長期運行的容器來說,退出之後也不會關閉容器,我們可以創建一個守護式容器,命令如下(容器名稱不能重覆),創建守護容器並不會馬上進入到容器裡面
- ①、創建並啟動守護式容器
docker run -di --name=mycentos2 centos:7
- ②、進入容器(exit退出的時候,容器不會停止)
docker exex -it mycentos2 /bin/bash
- ①、創建並啟動守護式容器
- PS:守護式容器是一直運行的,退出只是退出終端,它還是在後臺運行
2.3.3、停止或啟動容器
- 停止正在運行的容器
docker stop 容器名稱 | 容器ID
- 啟動已運行過的容器
docker start 容器名稱 | 容器ID
2.3.4、重啟容器
- 重啟正在運行的容器
docker restart 容器名稱 | 容器ID
2.3.5、查看容器信息(包括ip)
- 查看容器信息的原因
- 我們可以通過以下命令查看容器運行的各種數據
- 在Linux宿主機下查看 mycentos2 的ip
docker inspect 容器名稱 | 容器ID
docker inspect mycentos2
容器之間在一個區域網內,linux宿主機器可以與容器進行通信;但是外部的伺服器是不能與容器直接通信的,如果需要則需要通過宿主機器埠的代理
2.3.6、刪除容器
刪除一個容器的前提是容器必須是關閉狀態
-
刪除指定的容器
docker rm 容器名稱 | 容器ID
docker rm mycentos2
-
刪除所有容器
-
docker rm `docker ps -a -q`
-
2.4、Docker 容器文件拷貝
2.4.1、向內拷貝
-
將Linux宿主機中的文件拷貝到容器內可以使用命令
-
docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄
-
具體操作如下所示
-
# 1、創建一個文件cpTest.txt touch cpTest.txt # 2、複製該該文件到 mycentos 容器的 / 目錄下 # 格式:docker cp 源文件 容器名稱:路徑 docker cp cpTest.txt mycentos2:/ # 3、進入 mycentos 容器 docker exec -it mycentos /bin/bash # 4、查看容器 ~ 目錄下的文件是否存在cpTest.txt ls -l
-
2.4.2、向外拷貝
-
將文件從容器內拷貝出來到Linu宿主機可以使用如下命令
-
# docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄 # 1、進入容器後創建文件cpTest2.txt # 2、退出容器 # 3、在Linux宿主機執行複製,將容器 mycentos 的/cpTest2.txt文件複製到宿主機的/root目錄下 # 格式:docker cp 容器名稱:文件路徑 linux系統的路徑 docker cp mycentos:/cpTest2.txt /root
-
PS:停止狀態的容器也是可以進行文件拷貝的,向內向外都可以
2.5、Docker 容器目錄掛載
-
可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器
-
創建容器時添加-v參數,後邊為宿主機目錄:容器目錄,例如
docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7
- PS:如果要進行目錄掛載必須要在創建容器的時候完成目錄掛載,已經存在的容器不能掛載
-
執行如下命令
-
# 創建linux宿主機器要掛載的目錄 (不創建也可以,虛擬機會自動創建) mkdir /root/test # 創建並啟動容器mycentos2 # 並掛載 linux中的/roor/test目錄到容器的/usr/local/test # 也就是在 linux中的/root/test中操作相當於對容器相應目錄操作 docker run -di -v /root/test:/usr/local/test --name=mycentos2 centos:7 # 在linux宿主機下創建文件 touch /root/test.java # 進入容器 docker exec -it mycentos2 /bin/bash ls /usr/local/test
-
PS:: 如果你共用的是多級的目錄,可能會出現許可權不足的提示。 這是因為CentOS7中的安全模塊selinux把許可權禁掉了,需要添加參數 --privileged=true 來解決掛載的目錄沒有許可權的問題