docker-compose 单机容器编排

2023-12-13 16:19:50

dockerfile---yml文件

docker-compose需要用到 yml文件

yml文件是什么?

是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高,类似于json格式。语法简单。

YAML通过缩进来表示数据结构,连续的项目用 - 减号来表示。(filebeat,logstash)

yml文件使用的注意事项

1.大小写敏感

2.通过缩进表示层级关系

3.只能用空格缩进不能用tab缩进

4.可以使用 # 注释

5.凡是符号字符,后面都有一个 空格

(挂载键不需要空格)

6.单引号引起来的字符,会被当成普通字符串处理,双引号里面是特殊字符,就是本意。

yml文件的基本数据结构

声明变量(标量,单个的,不可再分的值):

包含的类型(字符串,整数,布尔类型)

name: zzr
age: 21
tail: yes

名称:[空格]值

list(列表):表示有序的元素集合

class:
  - zzr
  - hj
  - zhaozirui

键值对映射

student:
  name: zzr
  age: 20
student:
  name: hj
  age: 18

引用

student: &id1
  name: zzr
  age: 20
  
  
引用:
student1: *id1

&:定义锚点
*:引用

字符串引用:
name: "guoqi"
name: 'guoqi'

name: '$' 
普通字符

name: "$"
仅仅是个$符号

docker-compose单机容器编排

dockerfile是先配置好文件,然后再构建镜像-------》容器。

docker-compose既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。

docker-compose的核心就是yaml文件,可以定义容器的一切。通过yml配置,直接运行容器

docker:单节点。docker没有统一的对外提供服务的端口和配置。docker一般都是内部访问。无需使用https。

如果要对外以集群和分布式的方式提供统一访问的端口,只有用k8s+ingress。

docker-compose的常用命令

docker-compose的命令只能执行在有docker-compose.yml的目录下。

build:构建服务

ps:列出由docker-compose编排出来的命令

up:创建和启动容器

top:显示容器的进程

logs:查看容器的输出日志。

down:删除容器,网络,数据卷。

exec:在容器当中执行命令

stop/start/restart:停止 / 启动 / 重启,容器

scale:指定启动的容器数量(副本)。

安装compose

cd /opt
拖入compose安装包
mv .... docker-compose
mv docker compose /usr/local/bin/
chmod 777 /usr/local/bin/docker-compose
docker-compose -v

查看docker-compose的运行结构

yum -y install tree
观察docker-compose运行的结构

通过docker-compose安装lnmp

具体的nginx,mysql,php请翻阅之前博客

点击这里

nginx

vim Dockerfile
vim nginx.conf

mysql

vim Dockerfile
vim my.cnf

php

vim php-fpm.conf
vim php.ini
vim www.conf
vim Dockerfile

docker-compose.yml

version: '3'
services: 
  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
    //虽然我们登陆容器,显示的是root用户,伪管理员,一旦privileged:true,容器内的root用户和宿主机的root用户,拥有一样的权限,在生产能不给就不给。
    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:
  
  
  
wq!

创建

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

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