Docker学习笔记25

news2024/11/16 3:41:29

Docker swarm 应用:

镜像准备:

参照Docker学习笔记13,创建centos-nginx:v1的镜像:

[root@swarm-1 nginxtest]# docker build -t centos-nginx:v1 .
[+] Building 211.5s (12/13)
[+] Building 211.7s (12/13)
[+] Building 211.8s (13/14)
[+] Building 212.0s (13/14)
[+] Building 212.1s (13/14)
[+] Building 212.3s (13/14)
[+] Building 212.5s (13/14)
[+] Building 212.6s (13/14)
[+] Building 212.8s (13/14)
[+] Building 212.9s (13/14)
[+] Building 213.1s (13/14)
[+] Building 213.2s (14/14) FINISHED
 => [internal] load build definition from Dockerfile                                                           0.0s
 => => transferring dockerfile: 545B                                                                           0.0s
 => [internal] load .dockerignore                                                                              0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for docker.io/library/centos:latest                                              11.5s
 => [1/9] FROM docker.io/library/centos:latest@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c4  27.3s
 => => resolve docker.io/library/centos:latest@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c47  0.0s
 => => sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 762B / 762B                     0.0s
 => => sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc 529B / 529B                     0.0s
 => => sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6 2.14kB / 2.14kB                 0.0s
 => => sha256:a1d0c75327776413fa0db9ed3adcdbadedc95a662eb1d360dad82bb913f8a1d1 83.52MB / 83.52MB              14.7s  => => extracting sha256:a1d0c75327776413fa0db9ed3adcdbadedc95a662eb1d360dad82bb913f8a1d1                     12.3s  => [internal] load build context                                                                              0.0s  => => transferring context: 58B                                                                               0.0s  => [2/9] RUN cd /etc/yum.repos.d                                                                              1.3s  => [3/9] RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*                                    0.6s  => [4/9] RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d  0.4s  => [5/9] RUN yum makecache                                                                                   77.5s  => [6/9] RUN yum install -y epel-release                                                                     14.0s  => [7/9] RUN yum install -y nginx                                                                            78.7s  => [8/9] ADD index.html /usr/share/nginx/html/                                                                0.0s  => [9/9] RUN echo "daemon off;" >> /etc/nginx/nginx.conf # 取消nginx为daemon身份运行                                 0.3sporting to image                                                                                         1.3s
 => exporting to image                                                                                         1.4s
 => => exporting layers                                                                                        1.4s
 => => writing image sha256:a361056cbdebc98deb4f28b3a5f1b0a1fcff1265b6d6d6eacebc41ba898e0a8d                   0.0s
 => => naming to docker.io/library/centos-nginx:v1    

给这个镜像打标签:

[root@swarm-1 nginxtest]# docker tag centos-nginx:v1 192.168.17.10/library/centos-nginx:v1
[root@swarm-1 nginxtest]# docker images
REPOSITORY                           TAG       IMAGE ID       CREATED         SIZE
192.168.17.10/library/centos-nginx   v1        a361056cbdeb   7 minutes ago   401MB
centos-nginx                         v1        a361056cbdeb   7 minutes ago   401MB

在执行docker login的时候遇到一个问题:

Error response from daemon: Get https://.. 443: connect: connection refused

网上说这个在/etc/docker/daemon.json增加配置即可,也可以在/usr/lib/systemd/system/docker.service文件修改如下信息也开始可以的。

但是两者不能同时配置。

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.17.10
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

登录的时候我使用:docker login http://swarm-1命令出现登录错误。

但是我直接使用IP地址则登录成功:老师说也尽量使用IP地址。

[root@swarm-1 nginxtest]# docker login 192.168.17.10
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@swarm-1 nginxtest]#

上传镜像:

[root@swarm-1 nginxtest]# docker push 192.168.17.10/library/centos-nginx:v1
The push refers to repository [192.168.17.10/library/centos-nginx]
c31095dbe72e: Pushed
15eb46368797: Pushed
f0a8920e6d2e: Pushed
142e7025bba6: Pushed
beaedf47df3d: Pushed
5f8cd1ed84b0: Pushed
fc4701f98edc: Pushed
5f70bf18a086: Pushed
74ddd0ec08fa: Pushed
v1: digest: sha256:c2929f9150abe3c252d413391957fb60706862fe5576535ce30536b4eda72748 size: 2201
[root@swarm-1 nginxtest]#

 检查centos-nginx镜像上传成功:

 

这个是上传的v1版本。

然后现在我们再编辑index.html文件,v1字符改成v2。

然后再次进行打包操作:

[root@swarm-1 nginxtest]# docker build -t 192.168.17.10/library/centos-nginx:v2 .
[+] Building 20.7s (12/13)
[+] Building 20.8s (13/13)
[+] Building 20.8s (14/14) FINISHED
 => [internal] load build definition from Dockerfile                                                           0.0s
 => => transferring dockerfile: 545B                                                                           0.0s
 => [internal] load .dockerignore                                                                              0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for docker.io/library/centos:latest                                              20.5s
 => [1/9] FROM docker.io/library/centos:latest@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c47  0.0s
 => [internal] load build context                                                                              0.0s
 => => transferring context: 58B                                                                               0.0s
 => CACHED [2/9] RUN cd /etc/yum.repos.d                                                                       0.0s
 => CACHED [3/9] RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*                             0.0s
 => CACHED [4/9] RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.  0.0s
 => CACHED [5/9] RUN yum makecache                                                                             0.0s
 => CACHED [6/9] RUN yum install -y epel-release                                                               0.0s
 => CACHED [7/9] RUN yum install -y nginx                                                                      0.0s  => [8/9] ADD index.html /usr/share/nginx/html/                                                                0.0s  => [9/9] RUN echo "daemon off;" >> /etc/nginx/nginx.conf # 取消nginx为daemon身份运行                                 0.3s
 => exporting to image                                                                                         0.0s
 => => exporting layers                                                                                        0.0s
 => => writing image sha256:2ae4732b884d17c1306ed8e659a7a658e1704510c4164a75358935b39e98c5f1                   0.0s
 => => naming to 192.168.17.10/library/centos-nginx:v2                                                         0.0s
[root@swarm-1 nginxtest]#

 

然后我们再将这个v2版本的镜像进行上传操作,这个时候就不要用再docker login操作了。:

[root@swarm-1 nginxtest]# docker push 192.168.17.10/library/centos-nginx:v2
The push refers to repository [192.168.17.10/library/centos-nginx]
a24e26402f66: Pushed
a4fb63f10d36: Pushed
f0a8920e6d2e: Layer already exists
142e7025bba6: Layer already exists
beaedf47df3d: Layer already exists
5f8cd1ed84b0: Layer already exists
fc4701f98edc: Layer already exists
5f70bf18a086: Layer already exists
74ddd0ec08fa: Layer already exists
v2: digest: sha256:420aaddbb537ea014cafda718148aaea78d219c6bb634f7ef859bf3aa6444b63 size: 2201

 

再次到harbor中检查下上传镜像的情况:

 

发布一个服务:

在管理节点发布服务。

swarm mode中对外暴露的是服务service概念,而不是容器。在swarm mode的设计中,为了保证高可用架构,它准许同时启动多个容器共同支撑一个服务,如果一个容器挂了,它会自动使用另一个容器。

[root@swarm-1 nginxtest]# docker service --help

Usage:  docker service COMMAND

Manage Swarm services

Commands:
  create      Create a new service
  inspect     Display detailed information on one or more services
  logs        Fetch the logs of a service or task
  ls          List services
  ps          List the tasks of one or more services
  rm          Remove one or more services
  rollback    Revert changes to a service's configuration
  scale       Scale one or multiple replicated services
  update      Update a service

Run 'docker service COMMAND --help' for more information on a command.
[root@swarm-1 nginxtest]#

临时举一个例子:

docker service create --replicas 3 --mount "type=bind, source=$PWD, target=/var/lib/registry" --publish 8080:80 --name helloworld centos7.5-base:v1
ping www.baidu.com 

说明:

1)使用centos7.5-base:v1镜像创建一个helloworld服务。

2)--replicas 3 容器复制3份,即共三份。

3)--mount: 数据卷挂载至容器主机,类似于docker run -v选项。

4)--publish:将容器端口映射至容器主机端口,类似于docker run -p选项,可以访问集群中任一个主机均可访问到容器所提供的服务。

5)--name 为服务名称,服务即swarm对外提供的概念。

6)容器镜像最好换成可以实现访问的镜像来创建。

现在:

[root@swarm-1 ~]# docker service create --replicas 2 --publish 8090:80 --name nginxsvc 192.168.17.10/library/centos-nginx:v1

说明:

创建了2个副本,那这个容器可能就在三个node上跑。

[root@swarm-1 ~]# docker service create --replicas 2 --publish 8090:80 --name nginxsvc 192.168.17.10/library/centos-nginx:v1
6idvc01w6gemu04vu2ymj71e6
overall progress: 2 out of 2 tasks
1/2: running   [==================================================>]
2/2: running   [==================================================>]
verify: Service converged
[root@swarm-1 ~]# docker service ls
ID             NAME       MODE         REPLICAS   IMAGE                                   PORTS
6idvc01w6gem   nginxsvc   replicated   2/2        192.168.17.10/library/centos-nginx:v1   *:8090->80/tcp
[root@swarm-1 ~]#
[root@swarm-1 ~]#
[root@swarm-1 ~]# docker service ps nginxsvc
ID             NAME         IMAGE                                   NODE      DESIRED STATE   CURRENT STATE           ERROR     PORTS
ozs9yvsllvie   nginxsvc.1   192.168.17.10/library/centos-nginx:v1   swarm-2   Running         Running 3 minutes ago 
027zzb0h1g8k   nginxsvc.2   192.168.17.10/library/centos-nginx:v1   swarm-1   Running         Running 4 minutes ago 
[root@swarm-1 ~]#

我们怎么访问我们的服务了?

我们从

http://192.168.17.10:8090

http://192.168.17.20:8090

http://192.168.17.30:8090

地址都可以访问到网页。

scale规模扩大和缩小:

扩大:

[root@swarm-1 ~]# docker service scale nginxsvc=3
nginxsvc scaled to 3
overall progress: 3 out of 3 tasks
1/3: running
2/3: running
3/3: running
verify: Service converged
[root@swarm-1 ~]#

[root@swarm-1 ~]# docker service ps nginxsvc
ID             NAME         IMAGE                                   NODE      DESIRED STATE   CURRENT STATE            ERROR     PORTS
ozs9yvsllvie   nginxsvc.1   192.168.17.10/library/centos-nginx:v1   swarm-2   Running         Running 9 minutes ago
027zzb0h1g8k   nginxsvc.2   192.168.17.10/library/centos-nginx:v1   swarm-1   Running         Running 10 minutes ago
kzqdhwob8od9   nginxsvc.3   192.168.17.10/library/centos-nginx:v1   swarm-3   Running         Running 47 seconds ago

 缩小:

[root@swarm-1 ~]# docker service scale nginxsvc=1
nginxsvc scaled to 1
overall progress: 1 out of 1 tasks
1/1: running
verify: Service converged
[root@swarm-1 ~]#
[root@swarm-1 ~]# docker service ps nginxsvc
ID             NAME         IMAGE                                   NODE      DESIRED STATE   CURRENT STATE            ERROR     PORTS
ozs9yvsllvie   nginxsvc.1   192.168.17.10/library/centos-nginx:v1   swarm-2   Running         Running 11 minutes ago

这个时候,我们从三个网址仍然可以访问到服务。

滚动更新版本:

滚动更新可以在用户端无感知的情况下进行软件升级:

[root@swarm-1 ~]# docker service update --image 192.168.17.10/library/centos-nginx:v2 nginxsvc
nginxsvc
overall progress: 1 out of 1 tasks
1/1: running
verify: Service converged

然后再在浏览器中验证页面是否变为v2,发现立即更新了。

速度非常快。

所以,这个命令要熟练。

版本回退:

[root@swarm-1 ~]# docker service update --image 192.168.17.10/library/centos-nginx:v1 nginxsvc
nginxsvc
overall progress: 1 out of 1 tasks
1/1: running
verify: Service converged
[root@swarm-1 ~]#

发现版本回退也还非常快的。

间隔更新方法:

[root@swarm-1 ~]# docker service update --replicas 3 --image 192.168.17.10/library/centos-nginx:v2 --update-parallelism 1 --update-delay 30s  nginxsvc
nginxsvc
overall progress: 3 out of 3 tasks
1/3: running
2/3: running
3/3: running
verify: Service converged
[root@swarm-1 ~]#

说明:

1)--update --parallelism: 每次更新一个。

2)--update-delay: 延迟时间,一个更新好之后,延迟多少秒,然后再更新第二个。

移除服务:

[root@swarm-1 ~]# docker service rm nginxsvc
nginxsvc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML 基础篇

本章内容&#xff1a; 简介 HTML定义标签定义和属性HTML5基本结构HTML5字符集 <head>标签 <title><base/><link/>&#xff08;rel、href、type&#xff09;<meta/>&#xff08;http-equiv、name、content&#xff09; <body>标签 块级标…

逻辑漏洞-密码找回

声明&#xff1a;本实验教程仅供研究学习使用&#xff0c;请勿用于非法用途&#xff0c;违者一律自行承担所有风险和责任&#xff01; 实验目的 利用密码找回漏洞&#xff0c;实现任意用户的密码重置。理解漏洞发生的场景。 实验环境 操作系统&#xff1a;CENTOS 7 软件&am…

【Centos】crontab系统定时配置加载用户环境变量

使用linux系统crontab默认是没有加载用户的环境变量的&#xff0c;所以有些命令是用不了的。 打开任务计划 crontab -e添加环境变量信息 开头加入如下内容&#xff1a; SHELL/bin/bash PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin完整内容示例如下&am…

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前信息和状态&#xff1b;通过语音识别模块对当前垃圾种类进行语音识别&#xff1b; 通过蜂鸣器进行声光报警提醒垃圾桶已满&#xff1b;采用舵机控制垃圾桶打开关闭&#xff1b;超声波检测当前垃圾桶满溢程度&#xff1…

直击WAIC2023|英码正式加入华为昇腾APN,共同携手引领AI向实而生!

7月6日&#xff0c;以“智联世界&#xff0c;生成未来”为主题的世界人工智能大会&#xff08;以下简称&#xff1a;WAIC2023&#xff09;在上海世博中心盛大开幕。本届AI盛会将举办科学前沿和产业发展2场全体会议、10场主题论坛&#xff0c;以及多场生态论坛及活动&#xff1b…

数据库应用:数据库管理系统与安装MySQL数据库

目录 一、理论 1.数据库管理系统 2.关系型数据库 3.数据库 4.MySQL数据库 5.MySQL部署 二、实验 1.yum安装MySQL 2.配置MySQL数据库的Tab补全 三、问题 1.数据库登录报错 2.数据库密码复杂度报错 四、总结 一、理论 1.数据库管理系统 &#xff08;1&#xff09…

UML类图的6种关系

目录 一、UML类图的6种关系&#xff08;依赖关系由弱到强&#xff09;&#xff1a; 二、6种关系归纳总结 2.1 第一种归纳方式&#xff1a;先分组&#xff0c;再分组&#xff08;由大到小&#xff0c;由宏观到微观&#xff09; 2.2 第二种归纳方式&#xff1a;先聚合&#x…

spring-spring整合Junit

1.导包 <artifactId>spring-test</artifactId> <artifactId>junit</artifactId> 2.创建测试类

Linux性能优化实践——如何学习Linux性能优化

性能指标 学习性能优化的第一步便是了解“性能指标”这个概念。 “高并发”和“响应快”对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的角度来考察性能的&#xff0c;直接影响了产品终端的用户体验。跟他们对应的&#xff0c;是从系统资源的视…

基于Flask的问答系统的设计与实现

这个项目刚开始是跟着哔哩哔哩上的一个教程学习的&#xff0c;后面完成初步实现后&#xff0c;我按照自己的设计加入了新的功能。 文章目录 数据表mysqlredis 项目展示注册登录首页问题详情页问题回答及回复搜索功能发布问题功能评论我的功能回复我的功能我的文章功能编辑文章…

springcloud eureka增加安全认证

网上很多资料写的不全&#xff0c;不细致。 springcloud架构&#xff0c;本地运行代码是eureka地址一般为localhost:port&#xff08;自己暴露的端口&#xff09;&#xff0c;例如http://localhost:9000/ &#xff0c;但是如果在服务器&#xff0c;且使用k8s部署&#xff0c;一…

科大讯飞开发者大赛,有点东西~

小伙伴们大家好&#xff0c;我是阿秀。 如果要说 23 年上半年最火的科技圈话题是什么&#xff1f; 那AIGC和大模型相关的话题稳坐头把交椅&#xff0c;奈何由于不少服务器在海外&#xff0c;很多人因为没有充分条件无法体验。 后来众多国产大模型也跟上步伐&#xff0c;智能问答…

Spring Boot 中的任务执行器是什么,如何使用

Spring Boot 中的任务执行器是什么&#xff0c;如何使用 Spring Boot 是一个非常流行的 Java 开发框架&#xff0c;它的核心理念是通过简单的配置和约定来提高开发效率。在很多情况下&#xff0c;我们需要在后台执行一些任务&#xff0c;比如异步处理、定时任务等等。为了简化…

数据结构错题集 第八章 排序

8.1 3 B 稳定性问题&#xff1a; 是按关键字排序的 数值一样的两个数是两个不同的关键字 顺序可能不同 4.记住公式即可 8.2 B D与初始序列无关 选择排序&#xff1a;在n个中选择最小的 放在第一个 在n-1个中 选择第二小的放在第二个 快速排序 越有序 反而越复杂化 直接插入…

Spring底层核心架构

Spring底层核心架构 相关的配置类 1. user类 package com.zhouyu.service;import org.springframework.stereotype.Component;public class User { }2. AppConfig类 package com.zhouyu;import org.springframework.context.annotation.*; import org.springframework.sched…

CASS扣除中间区域面积的方法

1、打开cass软件&#xff0c;绘制一个矩形和圆形&#xff0c;圆形全部位于矩形框内&#xff0c;具体如下&#xff1a; 2、点击“地物编辑”菜单栏下的“图案填充”&#xff0c;如下&#xff1a; 3、在命令行内输入实体填充、选择范围线方式填充&#xff0c;选择后可得到如下结果…

基于单片机的智能路灯控制系统人体感应灯光控制系统的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;LCD1602液晶显示当前时间、年月日、时分秒&#xff1b;按键看看有设置自动手动模式&#xff1b;3路红外探头用来感应当前3个区域是否有人&#xff1b;按键可以设置当前时间、开启和关闭教室灯光时间&#xff1b;在手动模式下&#…

debian to go

可以使用虚拟机操作&#xff0c;在运行镜像到安装步骤时选择 u盘 不需要手动分 /boot 分区之类的&#xff0c;“Automaction”自动分区就行&#xff0c;全安装到根目录。boot load 安装到 /dev/sdb&#xff0c;也就是硬盘本身 推荐使用gpt分区表&#xff0c;建议拿不用的盘练…

Basic of Solidity (solidity基础)

目录 1.first contract 申明编译器版本 定义合约 合约构造函数 定义变量 定义函数 2.data type 值类型&#xff08;Value Types&#xff09; 引用类型&#xff08;Reference Types&#xff09; 映射类型&#xff08;Mapping Types&#xff09; Solidity是一种用于编写…

vue + element 笔记(vue2.0)

1.安装nodejs&#xff0c;cmd中运行 node -v 验证是否成功 2.安装cnpm&#xff0c;cmd中运行 npm install -g cnpm --registryhttps://registry.npm.taobao.org&#xff0c;cmd中 cnpm -v 验证是否成功 3.安装vue-cli&#xff0c;cmd中运行 cnpm install --global vue-cli&…