环境: Ubuntu 22.04.3 LTS

软件安装 && 卸载

1 .Install

sudo apt install docker.io docker-compose

测试安装:

$ docker -v
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3

$ docker-compose -v
docker-compose version 1.29.2, build unknown

2. Uninstallation

卸载并清理所有数据:

$ sudo apt autoremove docker.io docker-compose --purge

使用

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

添加新评论