Docker系列五: docker-compose部署Docker容器


Docker使用Dockerfile來實現對現有鏡像的修改來創建新的鏡像, 那docker-compose則完成鏡像的自動部署, 可以實現多個容器同時部署

Dockerfile可以讓用戶管理一個單獨的應用容器;而Compose則運行用戶在一個模板中定義一組相關聯的容器(被成為一個project項目),

例如一個web服務器加上后端的數據庫容器等

 

安裝最新版本

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

chmod +x /usr/local/bin/docker-compose

 

YAML模板文件(關鍵字)

image

指定鏡像名稱或鏡像ID,如果鏡像不存在,嘗試拉取鏡像

build

指定Dockerfile所在文件夾路徑,自動創建鏡像並使用這個鏡像

command

覆蓋容器啟動后默認執行的命令

連接到其他容器

連接到docker-compose.yml外部的容器,甚至非Compose管理的容器

ports

暴露端口信息並對外進行映射

expose

暴露端口,但不對外映射,只被連接links的服務訪問

volumes

卷掛載設置

volumes_from

從另一個服務或容器掛載它的所有卷

environment

設置環境變量

env_file

從文件中讀取環境變量

extends

基於已有的服務進行擴展(繼承其他模板的配置)

net

設置網絡模式

pid

跟主機系統共享進程命名空間

dns

配置dns服務器

cap_add, cap_drop

添加或放棄容器的Linux能力

配置DNS搜索域

其他類似指令

其他的指令和docker run支持的選項類似

working_dir
entrypoint
user
hostname
domainname
mem_limit
privileged
restart
stdin_open
tty
cpu_shares
等

 

參考案例

docker-compose.yml模塊

# docker-compose.yml 文件內容
version: '3'
services:
    redis:
        image: ssh_img_b02:latest
        container_name: redis_test_001
        hostname: redis_test_001
        restart: always
        volumes:
            - /root/redis/redisWork/:/redisWork
        ports:
            - "80:80"
            - "220:22"
            - "6379:6379"
        expose:
            - "80"
            - "6379"
            - "22"
        #command: '/usr/bin/supervisord'
        command: '/redisWork/usr/local/bin/redis-server /redisWork/etc/redis/6379.conf '


# 執行命令
# 如果不用-f參數指定文件,默認查找當前目錄的docker-compose.yml文件
# up參數為創建並啟動容器, -d表示后台運行,  如果已經存在容器,對比是否更新,如果更新了文件,自動更新文件並重啟容器
# 其他參數操控官方

docker-compose -f docker-compose.yml up -d 

 


免責聲明!

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



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