使用Docker-compose編排容器


  在《Docker學習實踐》中,我們使用了5個容器,3個使用已有鏡像,兩個使用的dockerfile構建的鏡像,一個個啟動很麻煩。今天我們使用Docker集群管理三劍客之一的Docker-compose來編排容器。

  Compose是Docker集群管理的工具。你可以在一個文件中定義一個多容器的應用,然后使用一條命令來啟動你的應用,它會自動解析容器依賴關系,下載鏡像,啟動應用。

安裝Docker和Compose

# 安裝docker
yum install docker -y

# 安裝compose
yum install python-pip -y
pip install -U docker-compose

使用compose

我們還是部署django應用,把之前的命令拿過來

# mx_mysql
docker run -d -p 3306:3306 --name mx_mysql -v $PWD/conf/:/etc/mysql/conf.d -v $PWD/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

# mx_redis
docker run -d -p 6379:6379 -v $PWD/data/redis:/data --name mx_redis redis:3.2 redis-server --appendonly yes

# mx_nginx
docker run -p 80:80 --name mx_nginx -v $PWD/online/conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf --volumes-from mx_online -d nginx

# mx_online
docker run -d -p 8000:8000 -v /root/online:/online --name mx_online django uwsgi --http :8000 -w online.wsgi -p 3

# mx_celery
docker run -d -v /root/online:/online --name mx_celery --link mx_mysql:mysql --link mx_redis:redis django celery -A online worker -l info 

Dockerfile文件還是原來的不變。

首先,要將上面的命令轉換成docker-compose.yml文件

yaml文件語法:

image 使用的鏡像
build 指定Dockerfile構建
command 啟動執行命令
links 鏈接其他容器    
ports 端口映射
expose 暴露端口
volumes 掛載路徑
volumes_from 從容器掛載
environment 環境變量

很容易就能轉換過來。

mx_mysql:
  restart: always
  image: mysql:5.6
  volumes:
    - /root/data/mysql:/var/lib/mysql
    - ./conf/:/etc/mysql/conf.d
  ports:
    - "3306:3306"
  environment:
    - MYSQL_DATABASE=online
    - MYSQL_ROOT_PASSWORD=123456
  
mx_redis:
  restart: always
  image: redis:3.2
  volumes:
    - /root/data/redis:/data
  ports:
    - "6379:6379"
  command: redis-server --appendonly yes

mx_nginx:
  restart: always
  image: nginx
  ports:
    - "80:80"
  volumes:
    - ./conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf
  volumes_from:
    - mx_online
  links:
    - mx_online:web

mx_online:
  restart: always
  build: .
  expose:
    - "8000:8000"
  volumes:
    - .:/online
  links:
    - mx_mysql:mysql
    - mx_redis:redis
  command: uwsgi -s :8000 -w online.wsgi -p 3

mx_celery:
  restart: always
  build: .
  volumes_from:
    - mx_online
  links:
    - mx_mysql:mysql
    - mx_redis:redis
  command: celery -A online worker -l info

開始是容器名稱,下面是容器配置,注意空兩格,使用短線再空一格。這樣就組成了應用的完整配置。目錄結構:

下一步,就是執行docker-compose up -d啟動應用。先下載鏡像:

創建容器:

使用docker-compose ps 查看容器:

訪問ip地址,顯示503,說明我們基本部署成功了,只是建數據庫,沒有建表。下面創建表:

docker-compose exec mx_online /usr/local/bin/python manage.py makemigrations
docker-compose exec mx_online /usr/local/bin/python manage.py migrate

成功就可以正常訪問了。現在我們的應用完全可以一鍵啟動了。

下面學習一下compose命令:

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

我們要使用的是docker-compose up -d啟動應用。

 docker-compose run 會再起一個新容器,要注意刪除,使用docker-compose rm:

 重啟,使用docker-compose restart:

 

注意這是容器名,可以用docker命令操作,單個操作。這個是服務名,使用docker-compose命令操作,多個一起操作。例如:

 

 其他以后再試


免責聲明!

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



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