Docker-compose

Docker-compose

1、概念

容器一键化部署的工具,针对dockerfile,可以按照定制化的模式一键部署dockerfile创建的容器

2、定制:yaml文件

mv docker-compose-linux-x86_64 /usr/local/bin/docker-comprose
chmod 777 /usr/local/bin/docker-comprose
docker-comprose --version
# Docker Compose version v2.18.0

3、yaml文件

yaml是一种标记语言,直观的展示数据序列化的一种格式,可读性高
数据格式的结构是通过缩进行表示的

3.1 注意事项:

1.1 大小写敏感,严格区分

1.2 通过缩进表示层级关系

1.3 不能通tab缩进,只能用空格缩进

1.4 #可以表示注释

1.5 符号之后必须缩进一格

1.6 特殊字符必须要用单引号,字符串用双引号表示其本意。

4、yaml格式

数据结构

vim test.yml

name: "xiaodai"
age: 24
isStudet: 'true'/'false'
# 字符串、整数、布尔类型,也可以是小数点

列表结构

表示有序的元素的集合,使用-开头,缩进表示以下文本属于xy102

xy102:
  - xiaodai
  - xiaozhao
  - xiaoqian
# 换行空两格

字典结构

Maps(映射),相当于字典或者对象,用键值对表示

man:
  name: xiaodai
  age: 24
  
# 可以表示多行文本块:  |
shuoming: |
  this is xy102
  xiaodai is  frist
  ta 20 le

5、docker-comprose命令:

命令作用
ps基于docker-comprose拉取的镜像生成的容器
updocker-comprose创建和启动容器
scale创建容器的数量
top显示容器的进程
logs看容器的输出日志
stop start restart停止、启动、重启
down删除容器、网络、数据卷、镜像

6、yaml部署nginx

vim docker-compose.yml

version: '3'
# 定义docker-comprose文件的版本,2.0之后都是3,顶格写就是全局使用
services: 
# 定义镜像和容器的配置:dockerfile以及镜像
  nginx: 
    container_name: web1
    # 定义容器的名称是web1
    hostname: nginx1
    # 定义创建好之后,容器的主机名
    build:
    # 构建dockerfile
      context: /opt/nginx
      # 声明上下文,上文构建dockerfile,下文是context,告诉你dockerfile的路径
      dockerfile: Dockerfile
    ports:
    # 声明宿主机和容器的端口映射
      - 80:80
      - 443:443
    networks:
    # 指定容器的ip地址
      mynet:
        ipv4_address: 172.18.0.10
    volumes:
    # 创建容器的挂载卷
      - /opt/nhtml:/usr/local/nginx/html/
networks:
# 创建自定义网络
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16
:wq!
docker-compose -f docker-compose.yml up -d

# docker-compose 使用docker-compose 一键编排容器
# -f 使用模版文件,必须是.yml结尾
# up 启动
# -d 后台运行
vim docker-compose.yml

version: '3'
services: 
  nginx: 
    container_name: web2
    hostname: nginx2
    build:
      context: /opt/nginx
      dockerfile: Dockerfile
    ports:
      - 81:80
      - 444:443
    networks:
      opt_mynet:
        ipv4_address: 172.18.0.20
    volumes:
      - /opt/nhtml:/usr/local/nginx/html/
networks:
  opt_mynet:
    external: true
:wq!

7、yaml部署lnmp

vim  docker-comprose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    container_name: nginx_server
    build:
      context: /opt/nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
      - 443:443
    networks:
      lnmp:
        ipv4_address: 172.111.0.10
    volumes:
      - /opt/nginx:/opt/docker-nginx
    
    mysql:
      hostname: mysql
      container_name: mysql_server
      build:
        context: /opt/mysql
        dockerfile: Dockerfile
      ports:
        - 3306:3306
      networks:
        lnmp:
          ipv4_address: 172.111.0.20
      privileged: true
      volumes:
        - /opt/mysql:/opt/docker-mysql
        
    php:
      hostname: php
      container_name: php_server
      build:
        context: /opt/php
        dockerfile: Dockerfile
      ports:
        - 9000:9000
      networks:
        lnmp:
          ipv4_address: 172.111.0.30
        volumes_from:
          - "nginx"
          - "mysql"
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.111.0.0/24
:wq!

docker ps  
docker exec -it php_server bash
cd /usr/local   # 查看是否出现nginx和mysql
cd /nginx/html   # 查看是否出现50x.html、index.html、wordpress
cd /usr/local/mysql  # 查看是否出现mysql.sock

删除网络

docker network ls

docker network rm -f mynetwork
docker-compose build --no-cache 
#清理缓存,必须是docker-compose.yml
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`docker-compose`是一个用于管理应用及其依赖环境的强大工具。它允许开发者通过单个YAML文件配置应用程序的所有服务、网络和卷,并使用一个命令启动整个应用环境。以下是关于`docker-compose`的一些基本概述: ### `docker-compose`的主要用途 1. **简化部署**:通过将所有服务、依赖项和配置信息组织在一个地方,`docker-compose`使得应用的部署过程变得简单而统一。 2. **跨平台一致性**:无论您是在本地开发环境中还是在生产服务器上运行应用,`docker-compose`都能提供一致的体验。 3. **便于维护**:对于有多个微服务的应用程序,`docker-compose`帮助保持各个组件之间的相互依赖性和配置的一致性。 4. **快速迭代**:支持快速测试和修改服务配置,无需每次都重启容器。 5. **集成自动化**:可以轻松地将构建、测试、部署等步骤整合到CI/CD流程中。 ### 使用示例 假设有一个简单的Web应用,包含前端(React)和服务端(Node.js)。我们可以创建两个Dockerfile分别构建这两个服务,并编写一个`docker-compose.yml`文件来定义它们以及它们之间的连接。 ```yaml version: '3' services: web: build: . ports: - "8080:80" depends_on: - db db: image: postgres:latest ``` 在这个例子中,我们定义了两个服务:web和服务端数据库。`web`服务使用当前目录下的Dockerfile进行构建,并将其暴露在外部主机的8080端口上。同时,它依赖于名为`db`的服务。这意味着在启动web服务之前,数据库服务会先启动并准备就绪。 ### 安装和运行 通常,您需要安装`docker`和`docker-compose`。然后,只需在包含`docker-compose.yml`文件的项目根目录下执行以下命令即可启动应用: ``` docker-compose up ``` 这个命令将会根据`docker-compose.yml`文件的内容启动所有指定的服务,并自动处理依赖关系。当所有的服务都已准备好时,终端将显示一条确认消息。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值