Docker容器完整使用教程


 

Docker是一個用於開發、交付、運行應用程序的開放平台。利用Docker可以快速交付,測試和部署代碼。所以值得我們學習下。

安裝Docker

1、下載Docker的依賴環境

yum -y install yum-utils device-mapper-persistent-data lvm2

2、設置下載Docker的鏡像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安裝Docker

yum makacache fast yum -y install docker-ce

4、啟動Docker,並設置為開機自啟動

#啟動命令: systemctl start docker #重啟命令: systemctl restart docker #設置為開機自啟動 systemctl enable docker

5、卸載Docker

yum remove docker-ce rm -rf /var/lib/docker

Docker鏡像的中央倉庫

1、官方中央倉庫地址。缺點是國外網站,打開比較慢。

https://hub.docker.com/

2、國內中央倉庫地址。比較推薦使用,因為打開速度真的很快。

http://hub.daocloud.io/

而且,這種倉庫還有使用說明書,簡直太方便了。

Docker容器完整使用教程

 

操作Docker鏡像的常用命令

1、從中央倉庫拉取鏡像

docker pull 鏡像名稱[:tag] #比如:拉取tomcat鏡像,這個鏡像名稱去"http://hub.daocloud.io/"中搜索 docker pull daocloud.io/library/tomcat:8.5.15-jre8

2、查看本地已經存在的鏡像列表

docker images

3、刪除本地鏡像

docker rmi 鏡像id

4、鏡像文件的導入、導出

#將本地鏡像文件導出 docker save -o 導出的路徑 鏡像id #比如,導出到當前目錄下,鏡像起名叫tomcat-image docker save -o ./tomcat-image fe3999eb9 #導入鏡像文件 docker load -i 鏡像文件 #比如 docker load -i tomcat-image

5、修改鏡像名稱

docker tag 鏡像id 新的鏡像名稱:版本

操作Docker容器的常用命令

1、創建並運行容器

#在執行該命令之前,如果沒有執行拉取鏡像的操作,該命令會自動根據鏡像名稱從中央倉庫下載鏡像 #--name,指定新建容器的名稱 #-d,代表后台運行容器 #-p,映射當前linux的端口和容器的端口 docker run --name 容器名稱 -d -p 宿主機端口:容器端口 鏡像id

2、查看正在運行的容器

#查看所有容器 docker ps -a

3、查看容器的日志

#-f,可以滾動查看日志的最后幾行 docker logs -f 容器id

4、進入容器內部

docker exec -it 容器id bash

5、停止容器

#停止指定的容器 docker stop 容器id #停止所有容器,命令docker ps -qa就是查看所有容器的id docker stop $(docker ps -qa)

6、刪除容器

#刪除容器前,需要先停止正在運行的容器 #刪除指定的容器 docker rm 容器id #刪除所有容器,命令docker ps -qa就是查看所有容器的id docker rm $(docker ps -qa)

7、啟動容器

#停止容器后,可以使用該命令重新啟動容器 docker start 容器id

數據卷

如果直接修改容器內部的目錄文件,並不方便,此時引入了數據卷的功能。

數據卷的作用:將宿主機的目錄映射到容器內部的目錄。此時它倆如同一個目錄,在宿主機中修改目錄下的內容,容器內部的目錄下內容就會跟着一起改變。

1、創建數據卷,此時創建的數據卷還沒映射到容器內部的目錄

docker volume create 數據卷的名稱 創建的數據卷,默認存放在宿主機的/var/lib/docker/volumes/目錄下。

2、查看數據卷的詳細信息

docker volume inspect 數據卷的名稱

3、查看當前宿主機下的所有數據卷

docker volume ls

4、刪除數據卷

docker volume rm 數據卷的名稱

5、創建並運行容器,同時創建數據卷並與容器內部的目錄相映射

docker run --name 容器名稱 -d -p 宿主機端口:容器端口 -v 數據卷的名稱:容器內部被映射的目錄 鏡像id
#比如 docker run --name tomcat -d -p 8080:8080 -v volume_tomcat:/usr/local/data 鏡像id #也可以給宿主機的數據卷指定具體的目錄,實際工作中也推薦使用這種方式 docker run --name tomcat -d -p 8080:8080 -v /usr/local/volume_tomcat:/usr/local/data 鏡像id

自定義鏡像

通過自定義鏡像,並且上傳到中央倉庫,下次就可以從中央倉庫拉取該自定義的鏡像使用。

Dockerfile是一個文本文件,包含了一條條的指令,每一條指令構建一層,基於基礎鏡像,最終構建出一個新的鏡像。

Docker容器完整使用教程

 

Dockerfile文件內容編寫可以參考中央倉庫中鏡像的案例。比如以tomcat為例:

https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk8/corretto/Dockerfile

Docker容器完整使用教程

 

創建好Dockerfile文件后,接下來必須先執行構建鏡像命令,才能使用自定義的鏡像。

構建鏡像

#最后的小黑點必須有,另外該命令需在Dockerfile所在的目錄執行 docker build -t 鏡像名稱 .

Dokcerfile帶來的好處:

  • 對於開發人員:可以為開發團隊提供一個完全一致的開發環境。
  • 對於測試人員:可以直接拿開發時所構建的鏡像或者通過dockerfile文件構建一個新的鏡像開始工作。
  • 對於運維人員:在部署時,可以實現應用的無縫移植。

服務編排Docker-Compose

之前運行一個鏡像,需要添加大量的參數,但是現在可以通過Docker-Compose編寫這些參數。

Dockers-Compose可以幫助我們批量的管理容器。使用的方式就是通過docker-compose.yml文件。

使用Docker-Compose,首先需要下載它。

1、去GitHub官網搜索,下載1.24.1版本

https://github.com/docker/compose/releases/tag/1.24.1

Docker容器完整使用教程

 

2、將下載好的文件添加到Linux服務器上

Docker容器完整使用教程

 

Docker容器完整使用教程

 

3、給上傳好的文件添加可執行權限

如果不添加執行權限,會導致如下權限不夠的問題。

Docker容器完整使用教程

 

#文件重命名 mv docker-compose-Linux-x86_64.txt docker-compose #給文件添加可執行權限,Linux服務器上文件的權限設置,請參考。 chmod +x docker-compose

如果你對Linux服務器上文件的權限設置還了解的不徹底,請參考Linux目錄下文件的權限設置

4、為docker-compose設置環境變量

為什么要設置環境變量呢?看下在設置環境變量前和設置環境變量后的對比,就知道了。

Docker容器完整使用教程

 

只有配置了環境變量,才能在當前服務器的任何目錄下執行Docker-compose的命令。

設置環境變量的步驟:

  • 將/usr/local/目錄下的docker-compose文件移動到/usr/local/bin/目錄下
cp docker-compose ./bin/
  • 修改/etc/profile,添加如下內容
/usr/local/bin/:
Docker容器完整使用教程

 

保存修改,執行命令source /etc/profile,讓修改立即生效。

5、查看Docker-Compose的安裝版本

docker-compose -version

Docker-Compose的應用:管理MySQL和Tomcat容器

1、編寫docker-compose.yml文件

version: '3.1' services: mysql: #服務的名稱 restart: always #代表只要docker啟動,那么這個容器也會跟着一起啟動 image: daocloud.io/library/mysql:5.7.4 #鏡像的路徑 container_name: mysql #指定容器的名稱 ports: #指定端口號的映射,可以配置多個映射 - 3306:3306 environment: MYSQL_ROOT_PASSWORD: root #指定MySQL的ROOT用戶的登錄密碼 TimeZone: Asia/Shanghai #指定時區 volumes: #指定數據卷映射,可以配置多個數據卷映射 - /usr/local/volumes/mysql_volume:/var/lib/mysql tomcat: restart: always image: daocloud.io/library/tomcat:8.0.43-jre8 container_name: tomcat ports: - 8080:8080 environment: TimeZone: Asia/Shanghai volumes: - /usr/local/volumes/tomcat_volume/webapps:/usr/local/tomcat/webapps - /usr/local/volumes/tomcat_volume/logs:/usr/local/tomcat/logs

2、基於docker-compose.yml文件啟動管理的容器

將docker-compose.yml文件扔到Linux服務器上。

執行如下命令,默認會找當前目錄下的docker-compose.yml文件。

#啟動管理的容器 docker-compose up -d #停止並刪除管理的容器 docker-compose down #開啟已經存在的由docker-compose管理的容器 docker-compose start #關閉已經存在的由docker-compose管理的容器 docker-compose stop開啟已經存在的由docker-compose管理的容器停止並刪除管理的容器 docker-compose restart

docker-compose配合Dockerfile使用

它倆結合使用可以在生成自定義鏡像的同時,啟動當前的鏡像,並且由docker-compose去管理容器。

1、編寫Dockerfile文件

from daocloud.io/library/tomcat:8.0.43-jre8 copy myapp.war /usr/local/tomcat/webapps

2、編寫docker-compose.yml文件

version: '3.1' services: myapp: #服務的名稱 restart: always #代表只要docker啟動,那么這個容器也會跟着一起啟動 build: #構建自定義的鏡像 context: /usr/local/docker-data/ #指定Dockerfile文件的所在路徑 dockerfile: Dockerfile #指定Dockerfile的文件名稱 image: myapp:1.0 #上面構建好的鏡像 container_name: myapp #指定容器的名稱 ports: #指定端口號的映射,可以配置多個映射 - 8081:8080 environment: TimeZone: Asia/Shanghai #指定時區

Dockerfile和docker-compose.yml文件創建好以后,執行如下命令,啟動基於docker-compose.yml以及Dockerfile文件構建的自定義鏡像。

docker-compose up -d

執行上面的命令之后,如果想再次構建自定義鏡像,可以執行命令:

docker-compose build

到此,本次知識分享就結束了,大家在自己電腦上,好好練習下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM