zoukankan      html  css  js  c++  java
  • docker学习之使用 DockerFile 构建镜像并搭建 swarm+compose 集群

    题目要求

    (1)将springboot应用程序打成jar包:Hot.jar
    (2)利用dockerfile将Hot.jar构建成镜像
    (3)构建 Swarm 集群
    (4)在 Swarm 集群中使用 compose 文件 (docker-compose.yml) 来配置、启动多个服务 包括: Mysql、Redis以及应用程序Hot

    实现过程

    springboot项目搭建及打包

    项目实现功能:输入 http://localhost:8080/docker/test,网页上会打印:docker-hot。

    由于功能非常简单,故这里不讲解项目搭建过程及打包过程。

    安装docker

    安装官方yum源

    yum install -y yum-utils

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    安装Docker引擎

    yum install -y docker-ce docker-ce-cli containerd.io

    启动docker

    启动命令

    systemctl start docker

    设置开机启动

    systemctl enable docker

    查看docker状态

    docker info

    修改镜像

    vim /etc/docker/daemon.json

    构建镜像

    拉取java环境并上传jar包

    docker pull java:8u111

    mkdir /usr/dockerfile -p

    将hot.jar上传到 /usr/dockerfile 目录下。

    编写dockerfile:

    cd /usr/dockerfile
    vim dockerfile-demo
        FROM java:8u111
        COPY hot.jar /root
        CMD ["nohup","java","-jar","/root/hot.jar","&"]

    构建镜像并启动

    docker build -f dockerfile-demo -t hot:1.0 .

    启动含 hot.jar 容器:

    docker run --rm -it --network host hot:1.0

    输入网址访问,可以看到访问成功:

    搭建 swarm+compose 集群

    首先,复制前面那台已安装好docker的虚拟机。

    安装swarm(两台虚拟机都要安装)

    docker pull swarm

    安装compose(主机安装即可)

    运行以下命令以下载Docker Compose的当前稳定版本:

    curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    注:这里我因为在线下载总是无法成功,所以直接到:https://github.com/docker/compose/releases 网站上下载了最新的 docker-compose-Linux-x86_64,之后改名为 docker-compose 并上传至虚拟机的 /usr/local/bin/ 目录下。

    将可执行权限应用于二进制文件:

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

    添加到环境中:

    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

    查看compose版本:

    docker-compose --version

    看到这个结果,就证明compose安装成功了。

    搭建集群

    建立manager(对应的虚拟机ip地址:192.168.112.140

    docker swarm init --advertise-addr 192.168.112.140

    建立worker(对应的虚拟机ip地址:192.168.112.141)

    docker swarm join --token SWMTKN-1-2e2d1l1p4qf7frlqxsca8q3qr3hu21glrffp6x687q6h5oh1s8-4u1h08jtq8ryauq4rc8941zve 192.168.112.140:2377

    注:这里我第一次执行的时候报错了,错误信息如下:

    Error response from daemon: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp 192.168.112.140:2377: connect: no route to host"

    原因是忘记将manager虚拟机的防火墙关闭。(执行 systemctl stop firewalld.service 命令即可)

    编写docker-compose.yml文件

    cd /usr/local/bin
    vim docker-compose.yml

     docker-compose.yml文件的内容如下:

    version: "3.0"
    services: 
      mysql:
        image: mysql:5.7.30 
        ports: 
          - 3306:3306 
        command: 
          --default-authentication-plugin=mysql_native_password 
          --character-set-server=utf8mb4 
          --collation-server=utf8mb4_general_ci 
          --explicit_defaults_for_timestamp=true 
          --lower_case_table_names=1 
          --default-time-zone=+8:00 
        environment: 
          MYSQL_ROOT_PASSWORD: "root"
        deploy:
          mode: replicated 
          replicas: 2 
      redis: 
        image: redis:5.0.9 
        environment: 
          - TZ=Asia/beijing 
        ports: 
          - 6379:6379 
          #主备都存在 
        deploy: 
          mode: replicated 
          replicas: 2
      hot: 
        image: hot:1.0 
        ports: 
          - 8080:8080 
        deploy: 
          mode: replicated 
          replicas: 2

    部署应用程序hot(注意:下文中 docker stack 相关的命令都需要在 /usr/local/bin 目录下执行)

    docker stack deploy -c docker-compose.yml hot

    运行应用程序hot

    docker stack services hot

    分别使用 192.168.112.140:8080/docker/test192.168.112.141:8080/docker/test 访问应用程序

    停止应用程序hot

    docker stack down hot

    总结

    到这里,我们就完成了题目要求中的所有内容,其实还是非常简单的,只不过在搭建过程中可能会遇到各种各样的小问题,基本上也可以通过上网搜索找到对应的解决方案。

    这是我自己在学习docker过程中所记录的一些笔记,这里分享出来,希望其他人在学习过程中能从我的笔记中得到一些帮助!

    作者:blayn
    出处:https://www.cnblogs.com/blayn/
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
  • 相关阅读:
    【递推】【概率】Gym
    【坐标变换】【二维偏序】【线段树】Gym
    【DLX算法】hdu3498 whosyourdaddy
    【DLX算法】poj2676 Sudoku
    【Pollard-rho算法】【DFS】poj2429 GCD & LCM Inverse
    Pollard-rho算法:模板
    【筛法求素数】【推导】【组合数】UVALive
    【二项式定理】【DFS】UVALive
    【并查集】【枚举倍数】UVALive
    【Floyd算法】Gym
  • 原文地址:https://www.cnblogs.com/blayn/p/14418655.html
Copyright © 2011-2022 走看看