• Docker Compose学习笔记


    本文有以下几部分内容:

    1. Docker Compose用来做什么?
    2. Docker compose使用三步骤
    3. Docker Compose安装和查看版本
    4. Docker Compose常用命令
    5. Compose文档怎么写?

    Docker Compose用来做什么?

    Docker Compose 是Docker官方的开源项目。

    Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

    使用Compose,我们只需要配置好配置文件(YAML文件),一条命令就可以启动我们想要的多个窗口容器应用。

    我的理解,简单说就是不用每次一个一个去输入参数和命令,一个一个启动容器,而只要将配置配好后,一条命令就可以实现我们想要启动/停止多个容器(带配置)的工作。

    Docker Compose需要另外安装。

    Docker compose使用三步骤

    1. 编写Dockerfile
    2. 编写compose.yaml
    3. 在compose.yaml所在的目录上输入命令docker compose up
      当然,过程中需要准备好compose.yaml中所用到的文件。

    Docker Compose安装和查看版本

    curl -SL https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
    # -S选项表示在下载过程中保持连接,-L选项表示如果服务器返回重定向,则自动跟随重定向。
    #由于网络原因,我是直接从电脑上下下来,改名再移到centos对应的目录中。
    
    #使文件可以执行
    [root@localhost cli-plugins]# ./docker-compose
    -bash: ./docker-compose: 权限不够
    [root@localhost cli-plugins]# ll
    总用量 58232
    -rw-r--r--. 1 root root 59628532 112 22:09 docker-compose
    [root@localhost cli-plugins]# chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
    [root@localhost cli-plugins]# ll
    总用量 58232
    -rwxr-xr-x. 1 root root 59628532 112 22:09 docker-compose
    [root@localhost cli-plugins]# 
    
    #查看版本
    [root@localhost cli-plugins]# ./docker-compose --version
    Docker Compose version v2.23.0
    [root@localhost cli-plugins]# docker-compose --version
    
    ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose
    
    #加上软连接
    [root@localhost docker]# docker-compose --version
    bash: docker-compose: 未找到命令...
    [root@localhost docker]# ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose
    [root@localhost docker]# cd /usr/bin
    [root@localhost bin]# ls doc*
    docker  docker-compose  dockerd  dockerd-rootless-setuptool.sh  dockerd-rootless.sh  docker-proxy
    [root@localhost bin]# cd /
    [root@localhost /]# docker-compose --version
    Docker Compose version v2.23.0
    [root@localhost /]# 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    Docker Compose常用命令

    compose比较简单。

    #
    # 运行当前目录下的copmpose.yaml
    [root@localhost composetest]# docker compose up
    
    #以后台形式运行当前目录下的copmpose.yaml
    [root@localhost composetest]# docker compose up -d
    
    #停止一个docker compose项目
    [root@localhost composetest]# docker-compose down
    [+] Running 3/3
     ✔ Container composetest-redis-1  Removed                                                                                                                                                    0.4s 
     ✔ Container composetest-web-1    Removed                                                                                                                                                   10.5s 
     ✔ Network composetest_default    Removed                                                                                                                                                    0.5s 
    [root@localhost composetest]#
    # 这个操作的结果是:下载和创建的镜像还在,容器停止并被清除。
    
    #但是如果没有执行docker-compose down命令而直接重启主机或者重启docker服务后,镜像和容器会被保留下来,包括里面的正在运行的redis记录。
    # 如果想每次重启自动运行,那在compose.yaml上的服务下面,加上restart: always,这样每次docker重启,就会自动运行容器而无需手动再启动。
    
    $ docker compose down -v
    # 先停止所有正在运行的容器,然后删除它们。如果使用了-v选项,那么还会删除与这些容器关联的卷。-v选项表示在删除容器的同时,也会删除由该容器创建的卷(volume)
    
    
    # 查看网络ID列表
    [root@localhost ~]# docker network ls
    # 检查具体某个网络
    [root@localhost ~]# docker network inspect f8c18a80a81a
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    Compose文档怎么写?

    后缀可以是yml,也可以是yaml.。

    详细的写法参考官方文档:
    https://docs.docker.com/compose/compose-file/03-compose-file/

    服务下主要的一些常用的参数有:

    container_name 容器名

    举例:

    container_name: my-web-container
    
    • 1
    image 运行镜像
    # 举例1:
    image: wordpress:latest
    
    # 举例2:(image: mysql:8.0.27)
    image: mariadb:10.6.4-focal
    # 举例3:
    
    # 举例4:
    
    # 举例5:
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    environment 环境
        environment:
          - MYSQL_ROOT_PASSWORD=somewordpress
          - MYSQL_DATABASE=wordpress
          - MYSQL_USER=wordpress
          - MYSQL_PASSWORD=wordpress
    
    • 1
    • 2
    • 3
    • 4
    • 5
    expose 暴露端口

    举例1:

        expose:
          - 3306
          - 33060
    
    • 1
    • 2
    • 3

    举例2:

        ports:
          - 80:80
    
    • 1
    • 2
    build 镜像的构建
    volumes 挂载卷
        volumes:
          - db_data:/var/lib/mysql
    
    • 1
    • 2
    depend-on 依赖

    影响dockery启动顺序,先启动需要的依赖

    deploy 部署,集群中用

    replicas 副本数量

    restart: always 自动启动
    command 输入命令
    command: '--default-authentication-plugin=mysql_native_password'
    
    • 1
  • 相关阅读:
    P/Invoke之C#调用动态链接库DLL
    有效括号相关
    一个注解@LoadBalanced就能让RestTemplate拥有负载均衡的能力?「扩展点实战系列」- 第443篇
    西门子PLC的工作原理是什么
    669. 修剪二叉搜索树
    搞定面试官 - 你可以介绍一下在 MySQL 中,哪些情况下 索引会失效嘛?
    越来越流行的认证-FSC
    工业数据采集分析 数据跨层次、跨环节、跨系统大整合
    数学建模、统计建模、计量建模整体框架的理解以及建模的步骤
    【算法】算法题-20231116
  • 原文地址:https://blog.csdn.net/weixin_42844704/article/details/134191747