• 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 
  • 相关阅读:
    多线程的几种实现方法详解
    Java线程编程中isAlive()和join()的使用详解
    MyEclipse在不同编辑面间快速切换
    MyEclipse中设置代码块快捷键
    MyEclipse设置文件编码
    Oracle安装后遇到错误:The Network Adapter could not establish the connection
    Java中的Runtime类
    Java中接口的特点
    Java中三种常见的注释(注解) Annotation
    Java中的泛型
  • 原文地址:https://www.cnblogs.com/djoker/p/10395071.html
Copyright © 2020-2023  润新知