Docker 使用Docker-Compose編排容器


簡介:

Docker Compose是一個用來定義和運行復雜應用的Docker工具。一個使用Docker容器的應用,通常由多個容器組成。使用Docker Compose不再需要使用shell腳本來啟動容器。 
Compose 通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器,非常適合組合使用多個容器進行開發的場景。

Docker與Compose的兼容性:

compose文件格式版本    docker版本
3.7                  18.06.0+
3.6                  18.02.0+
3.5                  17.12.0+
3.4                  17.09.0+
3.3                  17.06.0+
3.2                  17.04.0+
3.1                  1.13.1+
3.0                  1.13.0+
2.3                  17.06.0+
2.2                  1.13.0+
2.1                  1.12.0+
2.0                  1.10.0+
1.0                  1.9.1.+

安裝:

sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

查看:

[root@localhost bin]# docker-compose --version
docker-compose version 1.22.0, build f46880fe

compose命令選項:

-f, --file FILE 指定使用的 Compose 模板文件,默認為 docker-compose.yml ,可以多次指定。 
-p, --project-name NAME 指定項目名稱,默認將使用所在目錄名稱作為項目名。 
--x-networking 使用 Docker 的可拔插網絡后端特性 
--x-network-driver DRIVER 指定網絡后端的驅動,默認為 bridge 
--verbose 輸出更多調試信息。 
-v, --version 打印版本並退出。

compose命令:

build 構建或重建服務
help 命令幫助
kill 殺掉容器
logs 顯示容器的輸出內容
port 打印綁定的開放端口
ps 顯示容器
pull 拉取服務鏡像
restart 重啟服務
rm 刪除停止的容器
run 運行一個一次性命令
scale 設置服務的容器數目
start 開啟服務
stop 停止服務
up 創建並啟動容器

Code:

wordpress.yml

version: '3'
services:
  web:
    image: wordpress:4
    environment:
      - WORDPRESS_DB_PASSWORD=password
      - WORDPRESS_AUTH_KEY=changeme
      - WORDPRESS_SECURE_AUTH_KEY=changeme
      - WORDPRESS_LOGGED_IN_KEY=changeme
      - WORDPRESS_NONCE_KEY=changeme
      - WORDPRESS_AUTH_SALT=changeme
      - WORDPRESS_SECURE_AUTH_SALT=changeme
      - WORDPRESS_LOGGED_IN_SALT=changeme
      - WORDPRESS_NONCE_SALT=changeme
      - WORDPRESS_NONCE_AA=changeme
    ports:
      - 80:80
    depends_on:
      - mysql
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password
    deploy:
      restart_policy:
        condition: on-failure

wordpress.yml 定義了包含兩個服務的Wordpress應用

web服務:部署3個實例的wordpress:4容器
mysql服務:部署1個實例的mysql:5.7容器

注意:

restart_policy:定義服務的重啟條件 (v1/v2中restart指令不再支持)

deploy與depends_on不要搞混,一個配置,一個依賴。

命令:

使用docker-compose構建並運行應用:

# 若是要后台運行: $ docker-compose up -d
$ docker-compose up

# 若不使用默認的docker-compose.yml 文件名:
$ docker-compose -f server.yml up -d 

停止刪除容器:

#必須跟docker-compose.yml的文件路徑中執行命令
docker-compose stop
#必須跟docker-compose.yml文件路徑中執行命令
docker-compose rm

設置服務容器數量:

docker-compose scale mysql=2

 

總結:

不要把 docker 當做數據容器來使用,數據一定要用 volumes 放在容器外面
不要把 docker-compose 文件暴露給別人, 因為上面有你的服務器信息
多用 docker-compose 的命令去操作, 不要用 docker 手動命令&docker-compose 去同時操作
寫一個腳本類的東西,自動備份docker 映射出來的數據。
不要把所有服務都放在一個 docker 容器里面

參考:

https://docs.docker.com/compose/install/#install-compose

http://www.widuu.com/docker/compose/install.html

https://blog.csdn.net/pushiqiang/article/details/78682323

https://www.jianshu.com/p/2217cfed29d7

https://blog.csdn.net/pushiqiang/article/details/78682323


免責聲明!

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



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