ipam: IP 地址管理配置

发布时间:2025-06-24 15:44:06  作者:北方职教升学中心  阅读量:816


一.Docker Compse 介绍

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。build: 指定了构建 Nginx 容器所需的上下文和 Dockerfile。镜像和卷events #从容器接收实时事件,可以指定json 日志格式,较少使用exec #进入指定容器进行操作help #显示帮助细信息images #显示镜像信息,较少使用kill #强制终止运行中的容器logs #查看容器的日志pause #暂停服务port #查看端口ps #列出容器,较少使用pull #重新拉取镜像,镜像发生变化后,需要重新拉取镜像,较少使用push #上传镜像restart #重启服务,较少使用rm #删除已经停止的服务run #一次性运行容器scale  #设置指定服务运行的容器个数start #启动服务 ,较少使用stop #停止服务,较少使用top #显示容器运行状态unpause #取消暂定up #创建并启动容器 ,较少使用

显示 docker-compose 拉起的容器

3.docker compse 文件格式

官方文档: https://docs.docker.com/compose/compose-file/

docker compose 文件是一个yaml格式的文件,所以注意行首的缩进很严格默认docker-compose命令会调用当前目录下的docker-compose.yml的文件,因此一般执行docker-compose命令前先进入docker-compose.yml文件所在目录

docke- compose文件的格式很不同版本,版本不同,语法和格式有所不同,参看以下列表

三.演示

1.启动单台容器

docker compose 文件可在任意目录,创建文件名为docker-compose.yml 配置文件,要注意前后的缩进

[root@localhost harbor]#mkdir /mnt/docker-compose[root@localhost harbor]#cd  /mnt/docker-compose/[root@localhost docker-compose]#vim docker-compose.yml#准备yml文件server-nginx-web:  image: nginx  container_name: web1  expose:   - 80   - 443  ports:    - "8080:80"    - "8443:443"

2.检测语法

docker-compose  config

3.启动

docker-compose up#docker-compose start#docker-compose up -d后台启动docker-compose  ps

4.关闭

4.1  使用docker-compose down 会将容器直接删除 镜像也会删除

docker-compose downdocker-compose  psdocker ps -a

4.2  使用docker-compose kill 只是退出容器

docker-compose killdocker ps -adocker-compose  ps

4.3  只删除停止的容器

docker-compose rm

5.查看事件 docker-compose events

docker-compose  events#json 格式#docker-compose events --json

6.启动多个容器

server-nginx-web:  image: nginx  container_name: web1  expose:   - 80   - 443  ports:    - "8001:80"    - "8443:443"server-mysql:  image: mysql  container_name: mysql1[root@localhost docker-compose]#docker-compose config -q# -q 静默不输出 启动docker-compose up -ddocker ps -a

7.调用dockerfile 文件执行编排

FROM  centos:centos7.9.2009LABEL author="zhou cloud"  \      version="1.0"       \      description="test"RUN   rm -rf  /etc/yum.repos.d/ADD   qh.repo   /etc/yum.repos.d/RUN   yum -y install gcc gcc-c++ make automake pcre pcre-devel zlib  zlib-devel openssl openssl-devel wgetADD   nginx-1.18.0.tar.gz   /usr/local/srcRUN   cd  /usr/local/src/nginx-1.18.0  && ./configure  --prefix=/apps/nginx  && make   &&  make installCOPY  index.html    /apps/nginx/htmlEXPOSE 80CMD   ["-g","daemon off;"]ENTRYPOINT   ["/apps/nginx/sbin/nginx"][root@localhost centos7]#docker  build   -t  c7:n3   .[root@localhost centos7]#docker run  -d  -p 80:80 --name web1  c7:n1

编写compse 文件

vim /opt/compose_nginx/docker-compose.yml services:  nginx:    container_name: web1    hostname: nginx    build:      context: /data/dockerfile/system/centos/centos7/      dockerfile: Dockerfile    ports:      - 1216:80      - 1217:443    networks:      mynet:        ipv4_address: 172.18.0.10    volumes:      - ./wwwroot:/usr/local/nginx/htmlnetworks:  mynet:    driver: bridge    ipam:      config:        - subnet: 172.18.0.0/16            services: 定义了要运行的服务。config: 子网配置,指定了 IP 地址范围。网络和卷,然后使用单个命令创建和启动所有服务。通过 Compose,你可以使用 YAML 文件来配置应用程序的服务、横杠 -

  • 如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

  • 指令作用演示
    build指定构建上下文和可选的Dockerfile用于构建镜像。
    类似于 json 数据描述语言,语法比 json 简单的很多。ipam: IP 地址管理配置。
    image: myapp:latest
    command覆盖由镜像指定的默认命令command: ["python", "app.py"]
    container_name为容器指定自定义名称。网络、networks: 定义了自定义网络。镜像和卷
    events#从容器接收实时事件,可以指定json 日志格式,较少使用
    exec#进入指定容器进行操作
    help#显示帮助细信息
    images#显示镜像信息,较少使用
    kill#强制终止运行中的容器
    logs#查看容器的日志
    pause#暂停服务
    port#查看端口
    ps#列出容器,较少使用
    pull#重新拉取镜像,镜像发生变化后,需要重新拉取镜像,较少使用
    push#上传镜像
    restart#重启服务,较少使用
    rm#删除已经停止的服务
    run#一次性运行容器
    scale#设置指定服务运行的容器个数
    start#启动服务 ,较少使用
    stop#停止服务,较少使用
    top#显示容器运行状态
    unpause#取消暂定
    up#创建并启动容器 ,较少使用

    二.安装和准备

    1.安装Docker Compose

    yum安装

    yum install  epel-release.noarch  -yyum -y install docker-compose

    二进制安装

    chmod +x /usr/local/bin/docker-composeln  -s   /usr/local/bin/docker-compose   /usr/bin

    2.查看命令格式

    官方文档: https://docs.docker.com/compose/reference/

    docker-compose --helpDefine and run multi-container applications with Docker.Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose -h|--help#选项说明:  -f,–file FILE #指定Compose 模板文件,默认为docker-compose.yml-p,–project-name NAME #指定项目名称,默认将使用当前所在目录名称作为项目名。
    YAML 数据结构通过缩进来表示,连续的项目通过减号来表示, 键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来

    2.使用YAML时需要注意下面事项

    • 大小写敏感

    • 通过缩进表示层级关系

    • 不支持制表符 tab 键缩进,只能使用空格缩进

    • 缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格

    • 用 # 号注释

    • 符号字符后缩进1个空格,如冒号 : 、networks: 将服务连接到名为 lnmp 的自定义网络。

      github地址: GitHub - docker/compose: Define and run multi-container applications with Docker

      官方地址: https://docs.docker.com/compose/

      1.yml 语言

      AML 文件格式及编写注意事项
      YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。测试和部署过程中管理多容器应用程序变得更加简单。container_name: my_containerdeploy指定部署选项,如副本和放置deploy: replicas: 3environment为服务指定环境变量environment: - DEBUG=truenetworks指定连接服务的网络networks: - frontend - backendnetwork_mode指定容器的网络模式network_mode: "host"ports:将容器端口映射到主机端口ports: - "8080:80"volumes挂载主机或其他容器的卷volumes: - "nginx-data:/usr/local/nginx/htmlvolumes_from从另一个服务/容器挂载卷volumes_from: - data-containerhostname:指定主机名hostname: my-containersysctls为容器设置内核参数sysctls: - net.core.somaxconn=1024restart重启策略restart: alwaysdepends_on指定该服务依赖的其他服务depends_on: - mysql

      3.常用指令

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

      命令解释
      build#构建镜像
      bundle#从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备份文件
      config -q#查看当前配置,没有错误不输出任何信息
      create#创建服务,较少使用
      down#停止和删除所有容器、driver: 网络驱动程序为 bridge。lnmp: 自定义网络的配置。volumes: 将主机上的 ./wwwroot 目录挂载到容器中的 /usr/local/nginx/html 目录。dockerfile: Dockerfile.prod
      context指定构建上下文的路径,即包含Dockerfile和构建上下文的目录路径context: /opt/test
      image指定用于服务/容器的镜像名称。通常在build部分中使用。逗号 , 、网络、--verbose   #显示更多输出信息--log-level LEVEL    #定义日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL) --no-ansi #不显示ANSI 控制字符-v, --version #显示版本#以下为命令选项,需要在docker-compose.yml|yaml 文件所在在目录里执行build  #构建镜像bundle #从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备份文件config  -q #查看当前配置,没有错误不输出任何信息create #创建服务,较少使用down #停止和删除所有容器、build: context: /opt/test dockerfile: Dockerfile
      dockerfile指定Dockerfile的路径。hostname: 指定容器的主机名为 nginx。nginx: Nginx 服务的配置。ports: 将主机端口 1216 映射到容器的 80 端口,将主机端口 1217 映射到容器的 443 端口。这使得在开发、cd /opt/compose_nginx/docker-compose -f docker-compose.yml up -d-----------------------------------------------------------------------------------------------------------f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml-p, --project-name NAME :指定项目名称,默认使用目录名称-d :在后台运行----------------------------------------------------------------------------------------------------------docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb48dceee248f compose_nginx_nginx "/run.sh" About a minute ago Up About a minute 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1cd /opt/compose_nginx/docker-compose ps #必须在docker-compose.yml所在目录执行此命令docker-compose -f docker-compose.yml up -d

      container_name: 指定容器的名称为 web1。