docker-compose编排工具

区分

docker-compose和Dockerfile两者是不一样的

  • Dockerfile是构建镜像的,是基础
  • docker-compose是将镜像整合到一起,对镜像统一管理的,和ansible的剧本类似

使用

  1. 下载docker-compose工具
    wget https://github.com/docker/compose/releases/download/v2.37.1/docker-compose-linux-x86_64
  2. 这个是免安装的,给这个包添加执行权限,然后移到/usr/bin/下就可以直接使用docker-compose命令了
  3. 他需要在有docker-compose.yml文件的目录下使用,否则用不了

相关命令

  • docker-compose ps -a 查看docker-compose运行的容器
  • docker-compose up/down 运行/结束docker-compose.yml
  • docker-compose stats 实时查看容器资源使用率
  • dcoker-compose config 写完docker-compose.yml后用这个检查一下,如果终端将文件内容打印出来代表没有错

弹性伸缩容

  • 这也是一种高可用的技术,对于并发量高的场景,对容器进行伸缩容可以有效的处理大量请求,不过docker-compose的自动伸缩容的数量有限,小于100,想要更多的数量就需要用到k8s
  • 需要注意的是,对于想要伸缩容的容器,在docker-compose.yml中,ports块的宿主机端口不能写,container_name块的不能写,因为在伸缩的时候固定端口和容器名会导致宿主机端口和容器名冲突,mysql的伸缩一般不建议做,如果要做的话,处理前面两点,还需要将docker-compose.yml中mysql的volume块中的数据卷挂载注释,因为多个容器不能同时共享一个数据卷
  • 使用docker-compose up启动容器后,使用docker-compose ps -a查看容器的服务名service ,然后根据服务名进行伸缩容
    docker-compose scale nginx=2 java=2

搭建个人本地docker镜像仓库harbor

搭建步骤

  1. 下载harbor工具
    wget https://github.com/goharbor/harbor/releases/download/v2.13.1/harbor-offline-installer-v2.13.1.tgz
  2. 解压,解压完可以看到有一个harbor目录
  3. 将harbor.yml.tmpl文件cp一份去掉tmpl后缀,更改里面的内容,hostname需要改成ip或者域名,我用的是ip+http,后面的https注释掉,下面还有密码,可以修改
  4. 因为harbor默认使用https协议,所以不但要将harbor的https注释掉,还需要将docker的配置中说明,在/etc/docker/daemon.json中添加 “insecure-registries”: [“121.41.104.29:80”]
    1
    2
    3
    4
    5
    6
    7
    8
    {
    "registry-mirrors": [
    "https://docker.1ms.run",
    "https://dytt.online",
    "https://lispy.org"
    ],
    "insecure-registries": ["120.55.251.122:80"]
    }
  5. 在harbor目录下先后执行./prepare ./install.sh, 执行完后就可以在浏览器用ip访问了,账号是admin,密码是自己配置的密码,进去后就可以创建镜像仓库了

上传与拉取

  1. 创建一个公开的镜像仓库并命名
  2. 给镜像打标签,格式为:docker tag iamge:tag harbor_ip:80/仓库名/iamge:tag
  3. 推送镜像 docker push harbor_ip:80/仓库名/iamge:tag

阿里云镜像仓库ACR

在aliyun首页搜索ACR就可以,这个是个人创建免费的,创建命名空间后就可以创建镜像仓库了

  • 登录 docker login –username=lcj221001 crpi-jiit1duuxd74szjg.cn-hangzhou.personal.cr.aliyuncs.com
  • 打标签 docker tag [ImageId] crpi-jiit1duuxd74szjg.cn-hangzhou.personal.cr.aliyuncs.com/ry-image/ry-cloud-images:[镜像版本号]
  • 推送 docker push crpi-jiit1duuxd74szjg.cn-hangzhou.personal.cr.aliyuncs.com/ry-image/ry-cloud-images:[镜像版本号]
  • 拉取 docker pull crpi-jiit1duuxd74szjg.cn-hangzhou.personal.cr.aliyuncs.com/ry-image/ry-cloud-images:[镜像版本号