docker-compose

docker-compose 

docker-compose安装:

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

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

yaml文件使用的注意事项:

1、大小写敏感

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

3、只能用空格缩进,不能用tab缩进

4、可以使用#注释

5、符号字符后面都有一个空格

6、单引号引起来的字符,会被当作普通字符串处理,“#&*”双引号里面是特殊字符,就是符号本来的意思

YAML文件的基本数据结构:

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

name:guoqi

age:20

tall:yes

handsan:yes

wan:true

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

class:

  - guoqi

  - zirui

  - defu

键值对映射(千万不要用tab)

student:

  Name:guoqi

  Age:20

Student1:

  Name:zirui

  Age:18

注释:

# test

引用:

Student:&id1

  Name:guoqi

  Age:20

Student1:*id1

用&来定义锚点,用*来进行引用

字符串引号:

Name: guoqi

Name: guoqi

Name: $

Name: $

docker-compose:单机容器编排

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

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

docker-compose核心就是yml文件,可以定义容器的一切,通过yml

配置,直接运行容器

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

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

docker-compose的常用命令(需要在docker-compose.yml的文件或者目录下才能使用):

build:构建服务

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

up:创建和启动容器

top:显示容器的进程

logs:查看容器的输出日志

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

exec:在容器中执行命令

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

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

docker-compose安装搭建nginx实验:

把docker-compose软件包拉到opt目录下

docker-compose_第1张图片

yum -y install tree

docker-compose_第2张图片

把nginx软件包拖进来

docker-compose_第3张图片

写个Dockerfile的配置文件

docker-compose_第4张图片

docker-compose_第5张图片

docker-compose_第6张图片

docker-compose_第7张图片

docker-compose_第8张图片

version: 3

#指定docker-compose的文件版本

services:

#定义需要运行的服务

  nginx:

container_name:web1

#指定创建容器的名字

hostname:nginx

#指定容器的主机名

build:

#指定构建nginx容器的上下文以及dockerfile

      context: /opt/compose-nginx/nginx

#指定dockerfile的位置,如果用镜像,就换成image:

      dockerfile: Dockerfile

ports:

#直接指定宿主机和容器的端口映射关系

  - 1213:80

networks:

#声明给容器指定的ip地址

      mynet:

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

    networks:

#声明给容器指定的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_第9张图片

docker-compose_第10张图片

切换到opt目录下

docker-compose_第11张图片

进入到文件里开始构建

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

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

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

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

-d:后台运行

docker pull centos:7

docker-compose_第12张图片

如果yum安装报错 ,就重启docker

docker-compose_第13张图片

可以查看一下镜像

再查看一下容器

查看网络

docker-compose_第14张图片

上浏览器查看一下

docker-compose_第15张图片

lnmp安装:

创建目录lnmp

cd /opt

mkdir lnmp

docker-compose_第16张图片

docker-compose_第17张图片

docker-compose_第18张图片

docker-compose_第19张图片

docker-compose_第20张图片

docker-compose_第21张图片

docker-compose_第22张图片

docker-compose_第23张图片

docker-compose_第24张图片

以上内容可以看昨天的实验

vim 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

    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_第25张图片

docker-compose_第26张图片

docker-compose_第27张图片

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

进入容器的数据库进行赋权:

docker-compose_第28张图片

docker-compose_第29张图片

如果进入浏览器忘记密码,那就删库重新创(就是databases)

docker-compose:单机容器编排工具,可以实现一键式的拉取镜像和创建容器

yml文件的格式:

version: 3

解析代码的版本,声明解释器

services:

#声明服务,可以有多个services

networks:

#写在服务配置,赋予容器ip地址

写在顶格,就是大的模块,创建网段

volumes:

nginx-data:/usr/local/nginx/

volumes:

  nginx-data:

  mysql-data:

你可能感兴趣的:(docker,容器,运维,docker-compose)