docker-compose单机容器编排

2023-12-13 14:01:53

docker-compose单机容器编排

Docker:先配置好文件,然后build,镜像---------------》容器
docker-compose 既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。
docker-compose 核心是yml文件,可以定义容器的一起,可以通过yml配置,直接运行容器。
docker主要应用于单节点,不适应于集群。docker没有统一对外提供服务的端口和配置。docker一般是内部服务器,无需使用https。如果要对外以集群和分布式的方式提供统一访问的端口,k8s+ingress。

docker-compose的常用命令:

build构建服务
ps列出docker-compose编排出来的容器
up创建和启动容器
top显示容器的进程
logs查看容器的输出日志
down删除容器,网络,数据卷。
exec在容器中执行命令
stop/start/restart停止/启动/重启容器
scale指定容器启动的容器数量(副本)

yml语法

yaml文件: 是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高类似于json格式。语法简单。
YAML通过缩进来表示数据结构,连续的项目用- 减号来表示。

yaml文件使用的注意事项

YAML文件的基本数据结构:

声明变量

声明变量(标量,单个的,不可再分的值 字符串,垫数,布尔类型):
name: tail
age: 20

list列表

list(列表):表示有序的元素集合。
class:(缩进两个字符)
  - guoqi
  - ren
  - mao

键值对映射

键值对映射
student:(缩进两个字符)
  name: liu
  age:  18

注释

注释:
#test

引用

引用
student: &id1
  name: liu
  age: 20
引用
student1: *id1
用&来定义锚点,用*来进行引用

1、大小写敏感
2、通过缩进表示层级关系
3、只能用空格缩进,不能用tab缩进
4、可以使用注释#
5、符号后面都有一个空格 test:?
6、单引号引起来的符号,会被当作普通符号处理,^#&*双引号里面是特殊字符,就是本义。

安装docker-compose

mv docker-compose-linux-x86_64 docker-compose
mv docker-compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v
version: '3'
#指定docker-compose的文件版本,解析代码的版本,声明解释器
services:
#定义需要运行的服务,声明服务,可以有多个services
  nginx:
    container_name: web1
#指定创建容器的名字
    hostname: nginx
#指定容器的主机名
    build:
#指定构建nginx的容器的上下文,以及dockerfile
      context: /opt/nginx
#指定Dockerfile的位置,如果用镜像换成image:
      dockerfile: Dockerfile
    ports:
      - 1213:80
#直接指定宿主机和容器的端口映射关系
    networks:
#声明给容器指定的IP地址
      mynet:
#自定义网络
        ipv4_address: 172.18.0.10
指定ip地址
    volumes:
       - /opt/www:/usr/local/src/nginx-1.22.0/html
networks:
#创建自定义网桥接口配置,#写在服务配置,赋予容器ip地址,写在定格,大的模块,创建网段!
  mynet:
    driver: bridge
#声明网段类型
    ipam:
#声明网段,IP地址的管理和配置
      config:
        - subnet: 172.18.0.0/16
#子网配置,指定IP地址的范围

安装lnmp

dockerfite创建镜像---INMP+wordpress-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_61843057/article/details/134953553?spm=1001.2014.3001.5502

vim docker-compose.yml

  nginx:
    hostname: nginx
    build:
      context: /opt/lnmp/nginx
      dockerfile: Dockerfile
    ports:
      - 1314:80 
    container_name: nginx_server
    networks: 
      lnmp: 
        ipv4_address: 172.111.0.10
    volumes: 
        - "nginx-data:/usr/local/nginx/html"
  mysql:
    hostname: mysql
    build:
      context: /opt/lnmp/mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306 
    container_name: mysql_server
    networks: 
      lnmp: 
        ipv4_address: 172.111.0.20
    privileged: true
    volumes:
      - "mysql-data:/usr/local/mysql/"
  php:
    hostname: php
    build:
      context: /opt/lnmp/php/
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    container_name: php_server
    networks:
      lnmp:
        ipv4_address: 172.111.0.30
    volumes:
      - "nginx-data:/usr/local/nginx/html/"
      - "mysql-data:/usr/local/mysql/"
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.111.0.0/16

volumes:
  nginx-data:
  mysql-data:

运行

docker-compose -f docker-compose.yml up -d

进入数据库

docker exec -it mysq_server bash
mysql -u root -p
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;

创建流程图

文章来源:https://blog.csdn.net/qq_61843057/article/details/134966039
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。