docker(3):compose配置

将本地镜像发布到阿里云

有时候需要共享镜像或者习惯使用自己定义的镜像,可以注册私有仓库,国内推荐使用阿里云
步骤:
1.登录阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/repositories
2.将镜像推送到阿里云


# 登录
docker login --username=guangc201 registry.cn-hangzhou.aliyuncs.com

# 打tag
docker tag  tomcat:7 registry.cn-hangzhou.aliyuncs.com/guangchen/springboot-test:tomcat7

# 推送
docker push  registry.cn-hangzhou.aliyuncs.com/guangchen/springboot-test:tomcat7

# 拉取
docker pull registry.cn-hangzhou.aliyuncs.com/guangchen/springboot-test:tomcat7

如图:



Docker网络

Docker允许通过外部访问容器或容器互联的方式来提供网络服务。
安装Docker时,会自动安装一块Docker网卡称为docker0,用于Docker各容器及宿主机的网络通信,网段为172.0.0.1。如图:

Docker网络中有三个核心概念:沙盒(Sandbox)、网络(Network)、端点(Endpoint)。

  • 沙盒,提供了容器的虚拟网络栈,也即端口套接字、IP路由表、防火墙等内容。隔离容器网络与宿主机网络,形成了完全独立的容器网络环境。
  • 网络,可以理解为Docker内部的虚拟子网,网络内的参与者相互可见并能够进行通讯。Docker的虚拟网络和宿主机网络是存在隔离关系的,其目的主要是形成容器间的安全通讯环境。
  • 端点,位于容器或网络隔离墙之上的洞,主要目的是形成一个可以控制的突破封闭的网络环境的出入口。当容器的端点与网络的端点形成配对后,就如同在这两者之间搭建了桥梁,便能够进行数据传输了。

Bridge
桥接模式,主要用来对外通信的,docker容器默认的网络使用的就是bridge。
使用bridge模式配置容器自定的网络配置

# 配置容器的主机名 
docker run --name t1 --network bridge -h [自定义主机名] -it --rm busybox 

# 自定义DNS 
docker run --name t1 --network bridge --dns 114.114 -it --rm busybox 

# 给host文件添加一条 
docker run --name t1 --network bridge --add-host [hostname]:[ip] -it --rm busybox

Host
host类型的网络就是主机网络的意思,绑定到这种网络上面的容器,内部使用的端口直接绑定在主机上对应的端口,而如果容器服务没有使用端口,则无影响。

None
从某种意义上来说,none应该算不上网络了,因为它不使用任何网络,会形成一个封闭网络的容器

container
共享另外一个容器的network namespace,和host模式差不多,只是这里不是使用宿主机网络,而是使用的容器网络

Docker Compose

我们了解到可以使用一个Dockerfile模板文件来快速构建一个自己的镜像并运行为应用容器。但是在平时工作的时候,我们会碰到多个容器要互相配合来使用的情况,比如数据库加上咱们Web应用等等。这种情况下,每次都要一个一个启动容器设置命令变得麻烦起来,所以Docker Compose诞生了。

简介
Compose的作用是“定义和运行多个Docker容器的应用”。使用Compose,你可以在一个配置文件(yaml格式)中配
置你应用的服务,然后使用一个命令,即可创建并启动配置中引用的所有服务。
Compose中两个重要概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml文件中定义。

安装
Compose支持三平台Windows、Mac、Linux,安装方式各有不同。我这里使用的是Linux系统,其他系统安装方法可以参考官方文档和开源GitHub链接:
Docker Compose官方文档链接:https://docs.docker.com/compose
Docker Compose GitHub链接:https://github.com/docker/compose

Linux上有两种安装方法,Compose项目是用Python写的,可以使用Python-pip安装,也可以通过GitHub下载二进制文件进行安装。

通过Python-pip安装

#1.安装Python-pip
yum install -y epel-release
yum install -y python-pip
#2.安装docker-compose
pip install docker-compose
#3.验证是否安装
docker-compose version
#4.卸载
pip uninstall docker-compose

通过GitHub链接下载安装
非ROOT用户记得加sudo

#1.通过GitHub获取下载链接,以往版本地址:https://github.com/docker/compose/releases
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#2.给二进制下载文件可执行的权限
chmod +x /usr/local/bin/docker-compose

#3.可能没有启动程序,设置软连接,比如:
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

#4.验证是否安装
docker-compose version

#5.卸载,如果是二进制包方式安装的,删除二进制文件即可。
rm /usr/local/bin/docker-compose

使用Docker Compose编排SpringCloud微服务
使用docker-compose一次性来编排三个微服务:eureka服务(eureka-server-2.0.2.RELEASE.jar)、user服务(user-2.0.2.RELEASE.jar)、power服务(power-2.0.2.RELEASE.jar)
1.创建一个工作目录和docker-compose模板文件
2.工作目录下创建三个文件夹eureka、user、power,并分别构建好三个服务的镜像文件
以eureka的Dockerfile为例:

# 基础镜像 
FROM java:8 
# 作者
MAINTAINER huaan 
# 把可执行jar包复制到基础镜像的根目录下 
ADD eureka-server-2.0.2.RELEASE.jar /eureka-server-2.0.2.RELEASE.jar 
# 镜像要暴露的端口,如要使用端口,在执行docker run命令时使用-p生效 
EXPOSE 3000 
# 在镜像运行为容器后执行的命令 
ENTRYPOINT ["java","-jar","/eureka-server-2.0.2.RELEASE.jar"]

目录文件结构:

compose 
    docker-compose.yml 
    eureka 
        Dockerfile 
        eureka-server-2.0.2.RELEASE.jar 
    user 
        Dockerfile 
        user-2.0.2.RELEASE.jar 
    power 
        Dockerfile 
        power-2.0.2.RELEASE.jar

3.编写docker-compose模板文件:

version: '1' 
services: 
  eureka: 
    image: eureka:v1 
    ports: 
      - 8080:8080 
  user: 
    image: user:v1 
    ports: 
      - 8081:8081 
  power: 
    image: power:v1 
    ports: 
      - 8082:8082

4.启动微服务,可以加上参数-d后台启动

docker-compose up -d
posted @   提莫_队长  阅读(345)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示