栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

制作ETCD Service容器镜像(兼容Mac M1)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

制作ETCD Service容器镜像(兼容Mac M1)

目录

选择基础镜像

在容器内安装ETCD

进入容器内部

安装必要的工具

更新yum

安装依赖工具

下载ETCD

安装ETCD

制作启动脚本

制作属于自己的ETCD镜像

更便捷的方式----获取制作好的结果


这是一篇制作docker镜像的博客。镜像里安装了ETCD3.5.4,且镜像是以CentOS8.4.2105为基础制作的。镜像的制作环境为Mac M1。下面分步介绍制作方法,仅供参考。如果有出错的地方欢迎留言讨论。

选择基础镜像

选择一个合适的镜像去安装ETCD等工具至关重要。在这里我选择了CentOS8镜像作为基础镜像。喜欢Ubuntu或者其他镜像的小伙伴可以自己下载尝试。下面的命令将CentOS8镜像下载到本地:

docker pull centos:centos8.4.2105

提示:如果下载centos镜像速度过慢,可以尝试更换镜像源。更换镜像源的方法这里不再介绍,需要的小伙伴可以自己搜索。

下载完毕,我们使用docker images可以看到刚刚下载的镜像:

$ docker images centos
REPOSITORY   TAG              IMAGE ID       CREATED         SIZE
centos       centos8.4.2105   e6a0117ec169   6 months ago    272MB

在容器内安装ETCD

进入容器内部

为了在容器内部安装ETCD,我们首先需要运行容器:

$ docker run -itd -p 12379:2379 --privileged=true --name etcd-service centos:centos8.4.2105 /sbin/init 
6fea24738ed27b4024d9eeee1eaa3f0d42d832c11144acda1c9e9f846f2b0016
$ docker exec -it 6fea24738ed27b402 /bin/bash
[root@6fea24738ed2 /]#

docker run命令会启动一个容器。下面是对上面命令的参数解读:

选项描述
-i以交互式模式运行容器。
-t为容器重新分配一个伪输入终端。
-d后台运行容器。
-p指定端口映射。在上面的例子中,将容器运行的宿主机12379端口映射到容器内部的2379端口。
--privilegedprivileged=true,表示容器内的root用户拥有真正的root权限。
--name为启动的容器指定一个名字。在上面的例子中,为运行的容器命名为etcd-service。

注意到我们使用的命令不是/bash/bin,而是/sbin/init,这表示容器运行时要初始化系统环境。

docker exec命令会进入到容器内部。容器id只需要从开头写出一部分即可,不需要全部写全。

看到 命令提示符变为[root@6fea24738ed2 /]# 后,我们就进入到了容器内部中。可以使用hostname命令测试验证一下是不是在容器内部:

[root@6fea24738ed2 /]# hostname
6fea24738ed2

主机名变成了容器id开头的部分子字符串。说明我们已经处于容器中了。接下来的流程就好比在一台CentOS8服务器上安装ETCD一样简单。

安装必要的工具

我们下载的镜像是一个纯净的CentOS,很多基础的工具需要我们手动安装。

更新yum

首先需要更新下yum。我们要重新更新下两个yum的repo文件:

vi /etc/yum.repos.d/CentOS-Linux-BaseOS.repo

将CentOS-Linux-BaseOS.repo中的baseos section下的内容替换成如下内容:

[baseos]
name=CentOS Linux $releasever - BaseOS
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

接下来替换第二个repo文件:

vi /etc/yum.repos.d/CentOS-Linux-AppStream.repo

将CentOS-Linux-AppStream.repo中的appstream section下的内容替换成如下内容:

[appstream]
name=CentOS Linux $releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/AppStream/$basearch/os/ 
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

最后更新yum:

yum update -y

提示:如果遇到更新失败报错Timeout,可以切换不同网络尝试重新更新。

安装依赖工具
yum install wget -y

下载ETCD
wget https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gz

上面的命令以ETCD3.5.4为例,可以查阅ETCD releases获取其它版本的ETCD包。

安装ETCD

解压刚刚下载的包:

tar zxvf etcd-v3.5.4-linux-amd64.tar.gz 

进入到解压目录中

cd etcd-v3.5.4-linux-amd64/

将etcd和etcdctl复制到/usr/bin目录中

cp etcd /usr/bin/etcd
cp etcdctl /usr/bin/etcdctl

制作启动脚本
touch /opt/start.sh
chmod 777 /opt/start.sh
vi /opt/start.sh

将下面的内容复制到脚本中:

#!/bin/bash

etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'

启动ETCD

/opt/start.sh

制作属于自己的ETCD镜像

通过上面的一系列步骤,ETCD在容器内部的安装和后续配置已经完成了。下面我们通过docker commit命令将运行时的容器制作为一个新的镜像。

先查找到我们的容器:

➜  ~ docker ps -a
CONTAINER ID   IMAGE                   COMMAND        CREATED        STATUS                        PORTS                                         NAMES                                               
6fea24738ed2   centos:centos8.4.2105   "/sbin/init"   24 hours ago   Up 18 minutes                 0.0.0.0:12379->2379/tcp, :::12379->2379/tcp   etcd-service

根据容器id,制作一个名为etcd_server:v1.0的镜像:

docker commit 6fea24738ed2 etcd_server:v1.0

更便捷的方式----获取制作好的结果

作者将上述制作好的镜像放在了DokcerHub中,可以使用docker pull将其拉取到本地:

docker pull liushuochen/kric-etcd:v0.1.0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962306.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号