您好,登錄后才能下訂單哦!
Docker-Compose 是 Docker 的一種編排服務,是一個用于在 Docker 上定義并運行復雜應用的工具,可以讓用戶在集群中部署分布式應用。
ockerfile 可以讓用戶管理一個單獨的應用容器;而 Compose 則允許用戶在一個模板(YAML 格式)中定義一組相關聯的應用容器(被稱為一個 project,即項目),例如一個 Web 服務容器再加上后端的數據庫服務容器等。**
Docker-compose:容器編排工具。通過有一個.yaml或.yaml文件,將所有的容器的部署方法,文件映射,容器端口映射等情況寫在一個配置文件里,執行docker-compose up命令就像執行腳本一樣,一個一個的安裝并部署容器。
Docker Compose 工作原理圖:
Compose 中有兩個重要的概念:
一個項目可以由多個服務(容器)關聯而成,Compose 面向項目進行管理,通過子命令對項目中的一組容器進行便捷地生命周期管理。
Compose 項目由 Python 編寫,實現上調用了 Docker 服務提供的 API 來對容器進行管理。因此,只要所操作的平臺支持 Docker API,就可以在其上利用 Compose 來進行編排管理。
1)從github官網上進行下載:
下載地址:https://github.com/docker/compose/releases
下載到本地:
[root@sqm-docker01 ~]# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@sqm-docker01 ~]# chmod +x /usr/local/bin/docker-compose
下載成功后,我們就可以使用docker-compose這個編排工具了。
在使用docker-compose之前,我們需要知道每個compose版本所支持的docker版本是哪些?在我們下載compose命令時,其實下面已經給出了參考列表,如下:
查看自己部署docker的版本:
通過上述查看操作,可以知道,當前我的docker版本是18.09,那么基本可以使用所有的compose版本,因為其可以向下兼容,只要高于compose版本所支持的docker版本即可。
首先我們為了友好且美觀的編寫yaml文件,可以設置tab鍵的距離:
[root@sqm-docker01 ~]# vim .vimrc
[root@sqm-docker01 compose]# source /root/.vimrc #加載使其生效
[root@sqm-docker01 compose]# vim docker-compose.yaml
//創建掛載目錄文件:
[root@sqm-docker01 compose]# mkdir webserver
//使用docker-compose up -d在后臺啟動服務
[root@sqm-docker01 compose]# docker-compose up -d
//使用docker-compose查看詳細信息:
[root@sqm-docker01 compose]# docker-compose ps
//編寫簡單的網頁測試文件:
[root@sqm-docker01 compose]# cd webserver/
[root@sqm-docker01 webserver]# echo "welcome to nginx" > index.html
##訪問網頁:
[root@sqm-docker01 webserver]# curl 127.0.0.1
welcome to nginx
//使用docker-compose stop停止服務:
//如果你是在其他目錄下,運行服務需要用-f參數指定路徑:
1)首先創建掛載目錄,并編寫測試文件:
[root@sqm-docker01 ~]# mkdir -p httpd/html
[root@sqm-docker01 ~]# cd httpd/html/
[root@sqm-docker01 html]# echo "hello welcome to httpd-v1.0" index.html
[root@sqm-docker01 html]# echo "this is a test file 1.0" > testfile.txt
2)編寫dockerfile
[root@sqm-docker01 html]# vim Dockerfile
FROM httpd:latest
ADD testfile.txt /root/ #將當前目錄下的文件掛載到容器內的/root/下
3)編寫docker-compose.yaml文件:
[root@sqm-docker01 html]# vim docker-compose.yaml
version: "3" #版本號
services: #定義服務名(自定義)
httpd:
build: . #進行構建dockerfile(.表示當前目錄下的Dockerfile),如果定義了dockerfie則表示你是要使用自定義鏡像
container_name: my_web #運行后的容器名
image: httpd:v1.0 #鏡像名稱:版本號 注意:如果沒有定義dockerfile則該鏡像必須是正確的鏡像
restart: always #保持運行
ports:
- 81:80 #端口號(宿主機:容器內)
volumes: #掛載,映射目錄
- /root/httpd/html:/usr/local/apache2/htdocs
//運行docker-compose服務:[root@sqm-docker01 html]# docker-compose up -d
//查看是否生成鏡像:
訪問網頁:
//查看容器內的/root/目錄下文件是否導入成功:
[root@sqm-docker01 html]# docker exec my_web cat /root/testfile.txt
this is a test file 1.0
##修改測試文件內容:
[root@sqm-docker01 html]# echo hello welcome to httpd-v2.0 > index.html
[root@sqm-docker01 html]# echo this is a test file 2.0 > testfile.txt
1)修改docker-compose文件:
[root@sqm-docker01 html]# vim docker-compose.yaml
version: "3"
services:
httpd:
build: .
container_name: my_web
image: httpd:v2.0 #將該鏡像版本修改為v2.0
restart: always
ports:
- 81:80
volumes:
- /root/httpd/html:/usr/local/apache2/htdocs
//重新構建dockerfile:
//重新加載docker-compose使其生效:
//查看鏡像已經升級為2.0,但愿鏡像版本還會保留
//測試訪問網頁和文件內容:
[root@sqm-docker01 html]# docker exec my_web cat /root/testfile.txt
this is a test file 2.0
可以看到版本升級成功,這就是docker-compose的好處,但需要進行升級或這其他操作時,只需要重新構建一下yaml文件即可。
注意:執行完build后,必須要重新加載一下docker-compose文件,因為build只是重新構建dockerfile。
##編寫.yaml文件:
[root@sqm-docker01 wordpress]# vim docker-compose.yaml
version: '3.1' #版本為3.1
services:
wordpress:
image: wordpress #鏡像為wordpress
restart: always
volumes:
- /root/wordpress/mysql:/var/lib/mysql #將數據庫的數據進行持久化,會自動將容器內的目錄掛載到當前目錄下
ports:
- 8080:80 #映射端口(宿主機:容器)
environment: #定義變量,定義信息要與下面的數據庫信息相同
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: 123.com
WORDPRESS_DB_NAME: wordpress
db: #定義mysql的鏡像,以及用戶名和密碼
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: 123.com
MYSQL_ROOT_PASSWORD: 123.com
//運行該yaml文件:
[root@sqm-docker01 wordpress]# docker-compose up -d
//查看容器是否允許:
登錄web網頁
訪問地址:http://172.16.1.30:8080/
#查看幫助
docker-compose -h
#-f 指定使用的 Compose 模板文件,默認為 docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d
#啟動所有容器,-d 將會在后臺啟動并運行所有的容器
docker-compose up -d
#停用移除所有容器以及網絡相關
docker-compose down
#查看服務容器的輸出
docker-compose logs
#列出項目中目前的所有容器
docker-compose ps
#構建(重新構建)項目中的服務容器。服務容器一旦構建后,將會帶上一個標記名,例如對于 web 項目中的一個 db 容器,可能是 web_db。可以隨時在項目目錄下運行 docker-compose build 來重新構建服務
docker-compose build
#拉取服務依賴的鏡像
docker-compose pull
#重啟項目中的服務
docker-compose restart
#刪除所有(停止狀態的)服務容器。推薦先執行 docker-compose stop 命令來停止容器。
docker-compose rm
#在指定服務上執行一個命令。
docker-compose run ubuntu ping docker.com
#設置指定服務運行的容器個數。通過 service=num 的參數來設置數量
docker-compose scale web=3 db=2
#啟動已經存在的服務容器。
docker-compose start
#停止已經處于運行狀態的容器,但不刪除它。通過 docker-compose start 可以再次啟動這些容器。
docker-compose stop
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。