docker学习之使用 DockerFile 构建镜像并搭建 swarm+compose 集群
题目要求
实现过程
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/test 和 192.168.112.141:8080/docker/test 访问应用程序
停止应用程序hot
docker stack down hot
总结
到这里,我们就完成了题目要求中的所有内容,其实还是非常简单的,只不过在搭建过程中可能会遇到各种各样的小问题,基本上也可以通过上网搜索找到对应的解决方案。
这是我自己在学习docker过程中所记录的一些笔记,这里分享出来,希望其他人在学习过程中能从我的笔记中得到一些帮助!
docker学习之使用 DockerFile 构建镜像并搭建 swarm+compose 集群的更多相关文章
- Docker容器学习梳理 - Dockerfile构建镜像
在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...
- 使用Dockerfile构建镜像-Docker for Web Developers(5)
1.理解Dockerfile语法 语法命令 命令功能 举例 FROM 所有的dockerfile都必须以FROM命令指定镜像基于哪个基础镜像来制作 FROM ubuntu:14:04 MAINTAIN ...
- Docker学习笔记三 Dockerfile 指令 定制镜像
本文地址:https://www.cnblogs.com/veinyin/p/10412079.html 镜像是分层存储的,每一层都是独立存在的,修改当前层并不会修改其依赖的上一层,删除某一层也只是 ...
- docker学习笔记(3)- 镜像
简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...
- 013、Dockerfile构建镜像(2019-01-02 周三)
参考https://www.cnblogs.com/CloudMan6/p/6830067.html Dockerfile构建镜像过程分析 root@docker-lab:~/111# ls ...
- Dockerfile构建镜像
Dockerfile构建镜像的步骤: 从基础镜像运行一个容器 执行一条指令,对容器做出修改 执行类似docker commit的操作,提交一个新的镜像层 再基于刚提交的镜像运行一个新的容器 执行Doc ...
- Dockerfile 构建镜像
一.使用dockerfile构建镜像 基本结构: a.设置基础镜像 当前镜像继承于的基础镜像 FROM centos:latest b.设置维护者信息 没有固定格式 c.设置需要添加到容器中的文件 ...
- Dockerfile构建镜像实战
目录 一.常见Dockerfile指令 二.编写Centos Dockerfile 2.1.编写Dockerfile 2.2.构建 2.3.查看Docker镜像 2.4.运行镜像 三.CMD和ENTR ...
- RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群
本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...
随机推荐
- Everything about WSL 1 you want to know
关于 WSL 1 入门,你应该知道这些 如有错误,欢迎指出 参考: WSL 文档 VMware Workstation Pro 文档 概述 通过 WSL 2 来认识 WSL 1 什么是 WSL 2? ...
- 关于asyncio知识一
一.介绍 asyncio 是python3.4 引入的一个新的并发模块,主要通过使用coroutines 和 futures 来让我们更容易的去实现异步的功能,并且几乎和写同步代码一样的写代码,还没有 ...
- 5行代码!完成bat病毒制作!!!
这个病毒的功能是删除当前目录下.cpp类型的代码. copy %0 "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\P ...
- ABP 适用性改造 - 精简 ABP CLI 生成的项目结构
Overview 不管是公司或者个人都会有不同的开发习惯,通过建立项目模板,既可以使开发人员聚焦于业务功能的开发,也可以在一定程度上统一不同开发人员之间的开发风格.在使用 ABP 框架的过程中,对于 ...
- lms框架即将发布第一个版本了
lms微服务框架介绍 LMS框架旨在帮助开发者在.net平台下,通过简单的配置和代码即可快速的使用微服务进行开发. LMS通过.net框架的主机托管应用,内部通过dotnetty/SpanNetty实 ...
- 折腾kubernetes各种问题汇总-<1>
折腾kubernetes各种问题汇总-<1> 折腾部署fluend-elasticsearch日志,折腾出一大堆问题,解决这些问题过程中,感觉又了解了不少. 如何删除不一致状态下的rc,d ...
- [高精度]P1096 Hanoi 双塔问题
Hanoi 双塔问题 题目描述 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形). 现 ...
- 带你全面认识CMMI V2.0(终)——实施落地
引入CMMI的方法 一共有四个阶段将您的业务过程和最佳实践最终融合在一起,并在该范围内重新创造整个组织的"完成方式".这四个阶段是: 战略探索:此阶段的重点是了解当前状态并计划过渡 ...
- TCP的client和server的简单连接
server: import socket as s import threading as t bind_ip = "0.0.0.0" bind_port = 80#配置服务器监 ...
- Install Tensorflow object detection API in Anaconda (Windows)
This blog is to explain how to install Tensorflow object detection API in Anaconda in Windows 10 as ...