DockerCompose安装

DockerCompose是用于快速部署分布式应用的工具,通过Compose文件定义容器的运行方式。文中介绍了DockerCompose的安装步骤,包括在Linux下的下载和配置,并展示了如何使用DockerCompose启动和管理服务。此外,还讲解了如何搭建私有镜像仓库,以及推送和拉取镜像到这个仓库。
摘要由CSDN通过智能技术生成

DockerCompose安装

Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,实现容器编排。
Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行
DockerCompose的详细语法参考官网:https://docs.docker.com/compose/compose-file/
格式如下:

version: "3.8"
services:
//运行mysql设置了环境变量,挂载了目录
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123 
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
//等于构建镜像后docker run --name web -p 8090:8090 -d  build的镜像
  web:
    build: .
    ports:
     - "8090:8090"

安装DockerCompose

Linux下需要通过命令下载:

[root@docker ~]# curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m`  \
> /usr/local/bin/docker-compose
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
[root@docker ~]# echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
[root@docker ~]# curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose  \
> /etc/bash_completion.d/docker-compose
[root@docker ~]# docker-compose -v
docker-compose version 1.29.1, build c34c88b2
[root@docker ~]# docker-compose --help
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)
  -p, --project-name NAME     Specify an alternate project name
                              (default: directory name)
  --profile NAME              Specify a profile to enable
  -c, --context NAME          Specify a context name
  --verbose                   Show more output
  --log-level LEVEL           Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  --ansi (never|always|auto)  Control when to print ANSI control characters
  --no-ansi                   Do not print ANSI control characters (DEPRECATED)
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the
                              name specified in the client certificate
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)
  --compatibility             If set, Compose will attempt to convert keys
                              in v3 files to their non-Swarm equivalent (DEPRECATED)
  --env-file PATH             Specify an alternate environment file

Commands:
  build              Build or rebuild services
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove resources
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show version information and quit

搭建私有镜像仓库

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现

简单版

docker run -d     --restart=always     --name registry	    -p 5000:5000 \
    -v registry-data:/var/lib/registry     registry

带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry

[root@docker ~]# mv registry.yaml compose.yml
version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

[root@docker cloud-demo]# vi /etc/docker/daemon.json
   "insecure-registries":["http://192.168.1.17:8080"],
[root@docker cloud-demo]# systemctl daemon-reload
[root@docker cloud-demo]# systemctl restart docker
[root@docker ~]# docker-compose up -d
Creating root_registry_1 ... done
Creating root_ui_1       ... done

浏览器访问192.168.1.17:8080/,可以看到仓库信息

推送、拉取镜像

重新tag本地镜像,名称前缀为私有仓库的地址:192.168.150.101:8080/

[root@docker ~]# docker tag nginx:latest 192.168.1.17:8080/nginx:1.0 
[root@docker ~]# docker push 192.168.1.17:8080/nginx:1.0
[root@docker ~]# docker pull 192.168.1.17:8080/nginx:1.0

浏览器访问192.168.1.17:8080/ 可以看到镜像信息,大小,历史

部署微服务集群demo

需求:将cloud-demo微服务集群利用DockerCompose部署

[root@docker cloud-demo]# ls
docker-compose.yml  gateway  mysql  order-service  user-service
[root@docker cloud-demo]# tree gateway/
gateway/
├── app.jar
└── Dockerfile
order-service/
├── app.jar
└── Dockerfile
user-service/
├── app.jar
└── Dockerfile
[root@docker cloud-demo]# ls mysql/data/
cloud_user   cloud_order  
[root@docker cloud-demo]# cat /user-service/Dockerfile
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
[root@docker cloud-demo]# cat docker-compose.yml
version: "3.2"

services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"

可以看到,其中包含5个service服务:

  • nacos:作为注册中心和配置中心
    • image: nacos/nacos-server: 基于nacos/nacos-server镜像构建
    • environment:环境变量
      • MODE: standalone:单点模式启动
    • ports:端口映射,这里暴露了8848端口
  • mysql:数据库
    • image: mysql:5.7.25:镜像版本是mysql:5.7.25
    • environment:环境变量
      • MYSQL_ROOT_PASSWORD: 123:设置数据库root账户的密码为123
    • volumes:数据卷挂载,这里挂载了mysql的data、conf目录,其中有我提前准备好的数据
  • userserviceorderservicegateway:都是基于Dockerfile临时构建的
docker-compose up -d
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值