Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發布到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。Docker 是一個用於開發,交付和運行應用程式的開放平臺。Docker 使您能夠將應用程式與基礎架構分開,從而可以快速交付軟體。
藉助 Docker,您可以與管理應用程式相同的方式來管理基礎架構。通過利用 Docker 的方法來快速交付,測試和部署代碼,您可以大大減少編寫代碼和在生產環境中運行代碼之間的延遲。Docker解決開發和生產環境不一致的問題、多用戶操作Linux系統相互影響的問題、用戶量暴增導致運維成本過高的問題、安裝軟體成本高等問題。
一、下載、安裝、測試Docker
1.1:下載Docker的依賴環境:
yum -y install yum-utils device-mapper-persistent-data lvm2
1.2:設置下載Docker 的鏡像源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3:安裝Docker
(1)yum makecache fast
(2)yum -y install docker-ce
1.4:啟動並設置為開機自動啟動,測試
(1)啟動Docker服務:systemctl start docker
(2)設置開機自動啟動:systemctl enable docker
(3)測試:docker run hello-world
二、Docker容器的操作
2.1:運行容器:docker run 鏡像的標識 | 鏡像名稱 [:tag]
(1)docker run -d -p 宿主機埠:容器埠 --name 容器名稱 鏡像的標識 | 鏡像名稱 [:tag]
-d:後臺運行容器
-p:宿主機埠:容器埠為了映射當前Linux和容器的埠
--name:指定容器的名稱
2.2:查看正在運行的容器:docker ps [-qa]
(1)-a:查看包括沒有運行的全部容器
(2)-q:只查看容器得到標識
2.3:查看容器的日誌:docker logs -f 容器id
(1)-f:滾動查看日誌的最後幾行
2.4:進入到容器內部:docker exec -it 容器id bash (execute)
2.5:刪除容器:docker rm 容器id(刪除容器前需要停止容器)
(1)停止指定的容器:docker stop 容器id
(2)停止全部的容器:docker stop $(docker ps -qa)
(3)刪除指定的容器:docker rm 容器id
(4)刪除全部的容器:docker rm $(docker ps -qa)
2.6:啟動容器:docker start 容器id
三、Docker的中央倉庫、鏡像操作
3.1:Docker官方的中央倉庫,鏡像最全,下載速度較慢。
3.2:國內鏡像網站:網易蜂巢、daoCloud。
3.3:公司內部採取私服的方式拉取鏡像。
3.4:鏡像的操作:docker pull 鏡像名稱 [:tag]
(1)docker pull daocloud.io/library/tomcat:8.5.16-jre8
3.5:查看全部本地的鏡像:docker images
3.6:刪除本地鏡像:docker rmi 鏡像的標識(IMAGE ID)
3.7:鏡像的導入導出(不規範):
(1)將本地的鏡像導出:docker save -o 導出的路徑 鏡像id
(2)加載本地的鏡像文件:docker load -i 鏡像文件
(3)修改鏡像名稱:docker tag 鏡像id 新鏡像名稱:版本
3.8:創建一個Dockerfile文件,指定自定義鏡像信息。
3.9:Dockerfile文件中常用的內容:
(1)from:指定當前自定義鏡像依賴的環境
(2)copy:將相對路徑下的內容複製到自定義鏡像中
(3)workdir:聲明鏡像的默認工作目錄
(4)cmd:需要執行的命令
3.10:將Dockerfile和相應文件拖拽到Linu系統中,通過Docker命令製作鏡像:docker build -t 鏡像名稱 [:tag]
四、數據卷的使用
4.1:為部署SSM工程,使用cp命令將宿主機內的ssm.war複製到容器內部使用。不推薦在容器內部文件進行修改操作。
4.2:數據卷:將宿主機的目錄映射到容器的一個目錄中。
4.3:在宿主機中操作目錄內容,容器內映射的文件也隨之改變。
4.4:創建數據卷:docker volume create 數據卷名稱
(1)創建數據卷之後,默認目錄存放在 /var/lib/docker/volumes/數據卷名稱/_data
4.5:查看數據卷的詳細信息:docker volume inspect 數據卷名稱
4.6:查看全部數據卷:docker volume ls
4.7:刪除數據卷:docker volume rm 數據卷名稱
4.8:應用數據卷
(1)當映射的數據卷不存在時,Docker會自動創建:docker run -v 數據卷名稱:容器內部的路徑 鏡像id。
(2)指定一個路徑作為數據卷的存放位置:docker run -v 路徑:容器內部的路徑 鏡像id。