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

Docker使用Dockerfile来实现对现有镜像的修改来建立新的镜像, 那docker-compose则完成镜像的自动部署, 能够实现多个容器同时部署git

Dockerfile能够让用户管理一个单独的应用容器;而Compose则运行用户在一个模板中定义一组相关联的容器(被成为一个project项目),github

例如一个web服务器加上后端的数据库容器等web

 

安装最新版本redis

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模板文件(关键字)docker

image

指定镜像名称或镜像ID,若是镜像不存在,尝试拉取镜像数据库

build

指定Dockerfile所在文件夹路径,自动建立镜像并使用这个镜像后端

command

覆盖容器启动后默认执行的命令服务器

链接到其余容器网络

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

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 
相关文章
相关标签/搜索