docker-compose 单机容器编排

2023-12-13 12:27:30

docker-compose 单机容器编排

dockerfile:先配置好文件,然后build,镜像------->容器

docker-conpose既可以基于dockerfile,也可以基于镜像,一件事拉起镜像和容器。

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

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

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

docker-compose的常用命令:

build:构建服务

ps:列出由docker-compose编排的容器

up:创建和启动容器

top:显示容器的进程

logs:查看容器的输出日志

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

exec:在容器中执行命令

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

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

vim docker-compose.yml

version '3'
#指定docker-compose的文件版本
service:
#定义需要运行的服务
  nginx:
    container_name: web1
#指定创建容器的名字
    hostname: nginx
#容器的主机名
    build:
#指定构建nginx容器的上下文以及dockerfile
      context: /opt/compose-nginx/nginx
#指定dockerfile的位置,如果用镜像换成image: 镜像名称
      dockerfile: Dockerfile
    ports:
#直接指定宿主机和容器的端口映射关系

   - 1213:80
     tworks:
     #声明给容器指定的ip地址
           mynet:
     #自定义网络
     ipv4_address: 172.18.0.10
         volumes:
        - /opt/compose-nginx/www:/usr/local/nginx/html
          networks:
          #创建自定义网桥配置接口
            mynet:
              driver: bridge
          #声明网段的类型
              ipam:
          #ip地址的管理和配置,声明网段
                config:
          #子网配置,指定ip地址范围
     - subnet: 172.18.0.0/16

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

docker-compose:命令开头,使用docker-compose进行容器编排

-f:使用特定的compose的模板文件,一般都用docker-compose.yml

-p:project-name:指定项目名称,如果不加,会使用目录名称

-d:后台运行

privileged: true

虽然我们登录容器,显示的是root用户,伪管理员,一旦privileged: true,容器内的root用户和宿主机的root用户,拥有一样的权限,生产者能不给就不给

创建三个目录mysql nginx php

nginx

vim Dockerfile

vim nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location / {
            root   html;
            index  index.php index.html;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root  html;
}
        location ~ \.php$ {
            fastcgi_pass   172.111.0.30:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

cd /mysql?

vim Dockerfile

php

cd /opt/lnmp

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
    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

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