首页 > 其他分享 >三. docker-compose 简介、基本命令及示例-1

三. docker-compose 简介、基本命令及示例-1

时间:2022-11-27 23:45:22浏览次数:35  
标签:容器 compose 示例 -- nginx docker 80

docker-compose使用简介、基于docker-compsoe实现Nginx+Java+Mysql服务部署

docker-compose简介

docker-compose项目是Docker官方的开源项目,负责实现对单机容器的快速编排,docker-compose将所管理的容器分为三层,分别是工程(project)、服务(service)以及容器(container)。
   project:工程,默认当前目录名。
   service:服务,通过服务名称管理容器。
   container:容器
容器1-前端服务
容器2-动态服务
容器3-数据库服务
    当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且重复的操作容易出错,这个时候推荐使用docker 单机编排工具docker-compose,docker- compose 是docker容器的一种单机编排服务、是一个可以
批量管理多个容器的单机编排工具,另外可以解决容器之间的依赖关系,比如启动一个nginx前端服务的时候会调用后端的tomcat,那就得先启动tomcat,但是启动tomcat容器还需要依赖数据库,那就还得先启动数库,docker- compose就可以解决这样的嵌套依赖关系,其完全可以替代docker run对容器进行创建、启动和停止。



docker-compose安装:
ubuntu apt:
   root@docker-server1:~# apt install docker-compose
centos 7.x yum:
   [root@centos7 ~]# yum install epel-release
   [root@centos7 ~]# yum install docker-compose
pip:
   root@docker-server1:~# apt install python3-pip
   root@docker-server1:~# pip3 install docker-compose
二进制:
 root@docker-server2:~# wget https://github.com/docker/compose/releases/download/1.xy.z/docker-compose-Linux-x86_64
 root@docker-server2:~# cp docker-compose-Linux-x86_64 /usr/bin/docker-compose
 root@docker-server2:~# chmod a+x /usr/bin/docker-compose
 root@docker-server2:~# docker-compose version
 docker-compose version 1.29.2, build 5becea4c


# cat docker-compose.yml #示例文件
version: '3.6' #版本号,https://docs.docker.com/compose/compose-file/compose-versioning/
services: #定义服务
nginx-server: #当前容器的服务名
image: nginx:1.22.0-alpine #镜像名称
container_name: nginx-web1 #r容器名称
expose: #声明端口映射
- 80
- 443
ports: #定义端口映射
- "80:80" - "443:443"

root@docker-server1:/usr/local/src/compose/test1# docker-compose up -d
root@docker-server1:/usr/local/src/compose/test1# docker-compose ps
   Name                 Command               State                                   Ports                                 
----------------------------------------------------------------------------------------------------------------------------
nginx-web1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:443->443/tcp,:::443->443/tcp, 0.0.0.0:80->80/tcp,:::80->80/tcp
root@docker-server1:/usr/local/src/compose/test1# docker-compose stop
Stopping nginx-web1 ... done
root@docker-server1:/usr/local/src/compose/test1# docker-compose ps
   Name                 Command               State    Ports
------------------------------------------------------------
nginx-web1   /docker-entrypoint.sh ngin ...   Exit 0

root@docker-server2:~# docker-compose --help
 Options:
 -f, --file FILE #指定compsoe 文件,默认为docker-compose.yml
 -p, --project-name NAME #指定功能名称,默认为当前所在的目录名
 --profile NAME #指定一个服务名称,只执行docker-compose.yml中某些profile 匹配名称的容器
 # docker-compose --profile frontend up -d

 -c, --context NAME #指定Dockerfile的文件路径,也可以是链接到git仓库的url
 --verbose #显示更多输出信息
 --log-level LEVEL #定义日志级别,DEBUG, INFO, WARNING, ERROR, CRITICAL
 --ansi (never|always|auto) #定义什么时候显示ANSI控制字符
 --no-ansi #不显示ANSI字符,已废弃
 -v, --version #显示docker-compose的版本信息
 -H, --host HOST #连接到docker主机,默认为本机
 --tls #启用tls
 --tlscacert #tls ca私钥
 --tlscert #tls ca公钥
 --tlskey #服务私钥
 --tlsverify #服务公钥
 --skip-hostname-check #不对证书校验(跳过检查证书签发的主机名)
 --env-file PATH #指定文件向容器添加环境变量

docker-compose命令介绍-上:

#命令选项,需要在docker-compose.yml文件目录执行,带#的不常用
 #build #构建或重新构建服务、在修改Dockerfile后,可以通过docker-compose build重新构建镜像并重建服务
 #bundle #从当前docker compose文件生成一个以当前目录为名称的从Compose文件生成一个分布式应用程序捆绑包(DAB)、已废弃
 config -q #验证docker-compose.yml文件,没有错误不输出任何信息
 #create #创建服务,但是容器不启动
 down #停止并删除资源,默认会删除容器和网络 (只删除docker-compose创建的容器和镜像,和docker命令创建的镜像和容器无关)
 #events #从容器接收实时事件,可以指定json日志格式,如
         # docker-compose events --json
 #exec #基于service进入指定容器执行命令
         # docker-compose ps --services
         # docker exec -it nginx-web1 sh
 help #显示帮助细信息
 images #列出本地镜像
 kill #强制终止运行中的容器
         # docker-compose kill -s SIGKILL nginx-server #SIG是信号名的通用前缀,KILL是指让一个进程立即终止的动作,合并起来SIGKILL就是发送给一个进程使进程立即终止的信号。
 logs #基于service查看容器的日志
         # docker-compose logs --tail="10" -f nginx-server
 #pause #暂停服务
         # docker-compose ps --service
         # docker-compose pause nginx-server

docker-compose命令介绍-下:

#命令选项,需要在docker-compose.yml文件目录执行,带#的不常用
 #port #基于service查看容器的端口绑定信息
         # docker-compose port --protocol=tcp nginx-server 80
 ps #列出容器信息
 pull #拉取镜像
 #push #上传镜像
 #restart #重启服务
 rm #删除已经停止的服务
 #run #一次性运行容器,等于docker run --rm
 scale #设置指定服务运行的容器个数
         # docker-compose scale nginx-server=2 #动态伸缩每个service的副本数,不能指定容器名和端口映射
 start #启动服务
         # docker-compose start nginx-server
 stop #停止服务
         # docker-compose stop nginx-server
 top #显示容器运行状态
         # docker-compose top
 unpause #取消暂定状态中的server
         # docker-compose unpause nginx-server
 up #创建并启动容器,通常配合-d参数在后台运行容器
         # docker-compose up -d
 version #显示docker-compose版本信息


示例一:
root@docker-server1:/usr/local/src/compose/docker-compose-cases/case1-commands_options# ls
docker-compose.yml  test.env

root@docker-server1:/usr/local/src/compose/docker-compose-cases/case1-commands_options# cat docker-compose.yml
version: '3.8'
services:
  nginx-server:
    image: nginx:1.22.0-alpine
    container_name: nginx-web1
    expose:
      - 80
      - 443
    ports:
      - "80:80"
      - "443:443"
    #profiles: #基于配置文件指定要操作的目的容器
    #  - frontend
    env_file:
      - test.env
    deploy:
      resources: #资源限制
        limits:
          cpus: '0.50'
          memory: 1024M
        reservations:
          cpus: '0.5'
          memory: 512M
    restart: always
    healthcheck: #添加服务健康状态检查
      test: ["CMD", "curl", "-f", "http://127.0.0.1:80/index.html"]
      interval: 5s #健康状态检查的间隔时间,默认为30s
      timeout: 5s #单次检查的失败超时时间,默认为30s
      retries: 3 #连续失败次数默认3次,当连续失败retries次数后将容器置为unhealthy状态
      start_period: 60s #60s后每间隔interval的时间检查一次,连续retries次后才将容器置为unhealthy状态, 但是start_period时间内检查成功就认为是检查成功并装容器置于healthy状态

  redis-server:
    image: redis:6.2.7-alpine3.16
    container_name: redis1
    expose:
      - 6379
    ports:
      - "6379:6379"
    #profiles:
    #  - backend

示例二:使用默认网络

root@docker-server1:/usr/local/src/compose/docker-compose-cases/case2-use-default-network# cat docker-compose.yml
version: '3.8'
services:
  nginx-server:
    image: nginx:1.22.0-alpine
    container_name: nginx-web1
    network_mode: bridge #网络1,使用docker安装后的默认网桥
    expose:
      - 80
      - 443
    ports:
      - "80:80"
      - "443:443"

networks:
  default: #使用docker的默认网络
    external: #docker-compose 之外的网络,不需要docker-compsoe创建网络
      name: bridge #自定义一个网络名称,用于被容器引用
      
示例三 :使用自定义网络
version: '3.8'
services:
  nginx-server:
    image: nginx:1.22.0-alpine
    container_name: nginx-web1
#    network_mode: bridge #网络1,使用docker安装后的默认网桥
    expose:
      - 80
      - 443
    ports:
      - "80:80"
      - "443:443"
    networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有两块网卡
      - front
      - backend
    links:
      - tomcat-server

  tomcat-server:
    #image: tomcat:7.0.93-alpine
    image: registry.cn-hangzhou.aliyuncs.com/zhangshijie/tomcat-myapp:v1
    container_name: tomcat-app1
    ##network_mode: bridge #网络1,使用docker安装后的默认网桥
    #expose:
    #  - 8080
    #ports:
    #  - "8080:8080"
    networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
      - backend
    links:
      - mysql-server

  mysql-server:
    image: mysql:5.6.48
    container_name: mysql-container
#    network_mode: bridge #网络1,使用docker安装后的默认网桥
    volumes:
      - /data/mysql:/var/lib/mysql
      #- /etc/mysql/conf/my.cnf:/etc/my.cnf:ro
    environment:
      - "MYSQL_ROOT_PASSWORD=12345678"
      - "TZ=Asia/Shanghai"
    expose:
      - 3306
    ports:
      - "3306:3306"
    networks: #网络2,使用自定义的网络,如果网络不存在则会自动创建该网络并分配子网,并且容器会有一块网卡
      - backend


networks:
  front: #自定义前端服务网络,需要docker-compose创建
    driver: bridge
  backend:  #自定义后端服务的网络,要docker-compose创建
    driver: bridge
  default: #使用已经存在的docker0默认172.17.0.1/16的网络
    external:
      name: bridge

标签:容器,compose,示例,--,nginx,docker,80
From: https://www.cnblogs.com/pang-lu/p/16931043.html

相关文章

  • ApiJSON简单使用示例
    1{2"[]":{3"query":2,4"User":{5"@column":"id,name"6},7"count":5,8"@order":......
  • linux中使用docker创建nginx容器镜像并部署静态网站项目
      1,先进入服务器root目录,然后创建nginx对应该的配置文件目录/日志目录/静态文件目录等,后面创建nginx容器时要把目录一一挂载上cdroot/mkdirnginxcdnginxmkdir......
  • docker运行mysql
    安装yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2--skip-broken启动systemctlstartdocker#启动Docker服务systemctlstopdocker#停止Do......
  • docker安装nacos
    一、拉取镜像登录docker官网搜索nacos再到镜像执行拉取。这里使用默认命令dockerpullnacos/nacos-server二、创建挂载目录创建本地的映射文件application.properti......
  • 用docker配置以mysql为数据源的nacos
    用docker配置以mysql为数据源的nacos需要提前配置好数据库/******************************************//*数据库全名=nacos_config*//*表名称=config_i......
  • k8s部署应用精简示例(nginx)模板
    创建一个namespace1kind:Namespace2apiVersion:v13metadata:4name:nginx-test创建一个configmap1apiVersion:v12kind:ConfigMap3metadata:4......
  • docker-compose 安装
    #下载安装sudocurl-Lhttps://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname-s`-`uname-m`-o/usr/local/bin/docker-compose......
  • docker打开2375监听端口
    由于在使用caliper时,需要用到Docker的监听端口,所以此步骤如下:1、修改/usr/lib/systemd/system/docker.service,在[service]的ExecStart,添加-Htcp://0.0.0.0:2375ExecS......
  • java——mybatis——环境搭建——编写dao实现类的方式示例
    在xml实现方式的基础上进行修改:          结果如下: ......
  • Velocity模板引擎的的使用示例(入门级)
    简单说下这个引擎的两个分支(虽然语言不同调用方法大同小异):1、Java平台下的:org.apache.velocity2、.Net平台下的:NVelocity注:本文章不涉及到后端只说模板的使用方法基本......