环境: Ubuntu 20.04.4 LTS

软件安装 && 卸载

1 .Install Compose on Linux systems

你可以通过V2项目发布页面下载相应的二进制文件,并将其复制到 /usr/local/bin/ 目录下, 如docker-compose

也可以从 GitHub上的 Compose存储库发布页面查看最新版 Docker Compose Latest二进制文件, 并替换安装文件的版本号和架构号安装, 链接: https://github.com/docker/compose/releases

运行命令以下载安装 Docker Compose的当前稳定版本:

curl -SL https://github.com/docker/compose/releases/download/v2.3.4/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

给二进制文件赋予可执行权限:

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

测试安装:

$ docker-compose version
Docker Compose version v2.3.4

2. Uninstallation

如果你使用 curl 安装了 Docker Compose,请运行以下命令进行卸载:

$ sudo rm /usr/local/bin/docker-compose

使用

1. 模板文件是使用 Compose的核心, 涉及到的指令关键字也比较多. 但大家不用担心, 这里面大部分指令跟 docker run相关参数的含义都是类似的

默认的模板文件名称为 docker-compose.yml, 格式为 YAML格式

Compose文件版本兼容列表: https://docs.docker.com/compose/compose-file/

注意: 模板, 根据自己需求修改

services:   # 当前项目中的容器服务
  redis01:    #服务名称
    image: redis    # 指定使用镜像 image:tag 相当于run image
    container_name: redis021321 # 相当于run --name (内部访问可以代替ip)
    ports:  # 指定宿主机端口与容器端口映射, "宿主机端口:容器口"run -p 
        - "2379:2379" 
    networks: # 指定容器启动后使用哪个网络 run --network
        - hello
    volumes:    # 指定容器与宿主机共享目录映射 run -v
        # - "/root/apps:/apps"  # 映射自定义路径
        - redisdata:/apps  # 自动
    command: redis-server /...  # 覆盖容器启动后默认执行的命令
    environment: "redis-server --appendonly yes"    # run 镜像之后覆盖容器内的默认环境变量
    depends_on:     # 在定义的服务启动之后启动
        - mysql     # 服务名称

    mysql:
        image: mysql:latest
        container_name: mysql
        ports: 
            - "3306:3306"
        volumes: 
            - mysqldata:/var/lib/mysql  # 自动映射mysql数据目录
            - mysqlconf:/etc/mysql  # 自动映射mysql配置目录
        # environment:    # 可使用 env_file代替
            # - MYSQL-ROOT-PASSWORD=root    # 使用 - 时用 =
            # MYSQL-ROOT-PASSWORD: root   # 这种方式用 : 
        env_file:   # 从文件中读取 environment环境变量
            - ./mysql.env
        networks: 
            - hello

volumes: # 声明上面服务所使用的自动创建的卷名
    redisdata:     # 声明指定的卷名,compose自动创建卷名但是会在之前加上项目名
        external:   # 使用自定义卷名
            true    # true确定使用指定卷名(需使用命令手动创建卷名 docker volume create rediscontainer)
    mysqldata:  # 不使用 external自动映射目录
    mysqlconf: 
networks: 
    hello:  # 声明指定的网桥
        external:   # 使用自定义外部网桥,compose自动创建网桥但是会在之前加上项目名
            true    # true确定使用指定网桥(需使用命令手动创建网桥 docker network create -d bridge hello)

2. build命令

指定 Dockerfile所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml文件的路径). Compose将会利用它自动构建这个镜像, 然后使用这个镜像

services: 
    webapp:
        build:  # 自动创建镜像并运行
            context: ./dir    # 指定 Dockerfile所在文件夹的路径
            dockerfile: Dockerfile-webapp   #  指定 Dockerfile 文件名(如果文件名为 Dockerfile时可以忽略这条命令)
            args:   # arg 指令指定构建镜像时的变量\
        container_name: demoapp
        ports: 
            - "8080:8080"
        networks: 
            - hello
        depends_on: 
            - redis01
            - mysql

3. 具体参考:

[1] Docker — 从入门到实践: https://vuepress.mirror.docker-practice.com/
[2] Docker Compose: https://vuepress.mirror.docker-practice.com/compose/
[3] Docker Compose配置文件详解: https://www.jianshu.com/p/2217cfed29d7
[4] docker-compose.yml配置文件编写详解: https://blog.csdn.net/qq_36148847/article/details/79427878
[5] docker-compose 官方安装教程: https://docs.docker.com/compose/install/

标签: none

添加新评论