如何使用github上的etcd构建docker镜像

下载etcd

shell 复制代码
git clone https://github.com/etcd-io/etcd.git etcd
cd etcd

开始安装

shell 复制代码
$ bash ./scripts/build-docker.sh

此时会遇到错误, 需要指定版本号

shell 复制代码
Usage: ./scripts/build-docker.sh VERSION

从github release上找一个对应的版本, 以下以v3.5.24为例

shell 复制代码
$ bash ./scripts/build-docker.sh v3.5.24

会先去github release下载对应的bin文件压缩包

shell 复制代码
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 19.4M  100 19.4M    0     0  7714k      0  0:00:02  0:00:02 --:--:-- 12.3M
x etcd-v3.5.24-linux-arm64/
x etcd-v3.5.24-linux-arm64/Documentation/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/v3lock.swagger.json
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/v3election.swagger.json
x etcd-v3.5.24-linux-arm64/Documentation/dev-guide/apispec/swagger/rpc.swagger.json
x etcd-v3.5.24-linux-arm64/Documentation/README.md
x etcd-v3.5.24-linux-arm64/README-etcdutl.md
x etcd-v3.5.24-linux-arm64/READMEv2-etcdctl.md
x etcd-v3.5.24-linux-arm64/README-etcdctl.md
x etcd-v3.5.24-linux-arm64/README.md
x etcd-v3.5.24-linux-arm64/etcdutl
x etcd-v3.5.24-linux-arm64/etcdctl
x etcd-v3.5.24-linux-arm64/etcd
[+] Building 1.2s (11/11) FINISHED                                                                                                                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                         0.0s
 => => transferring dockerfile: 425B                                                                                                                                         0.0s
 => [internal] load metadata for gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                   0.5s
 => [internal] load .dockerignore                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                              0.0s
 => CACHED [1/6] FROM gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                              0.0s
 => [internal] load build context                                                                                                                                            0.4s
 => => transferring context: 59.32MB                                                                                                                                         0.4s
 => [2/6] ADD etcd /usr/local/bin/                                                                                                                                           0.1s
 => [3/6] ADD etcdctl /usr/local/bin/                                                                                                                                        0.0s
 => [4/6] ADD etcdutl /usr/local/bin/                                                                                                                                        0.0s
 => [5/6] WORKDIR /var/etcd/                                                                                                                                                 0.0s
 => [6/6] WORKDIR /var/lib/etcd/                                                                                                                                             0.0s
 => exporting to image                                                                                                                                                       0.1s
 => => exporting layers                                                                                                                                                      0.1s
 => => writing image sha256:7bafb479d9c0cd1c4ac3427a8923964586914112f82562e287559e0acbc2d193                                                                                 0.0s
 => => naming to gcr.io/etcd-development/etcd:v3.5.24-arm64                                                                                                                  0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/hg3fj6nnndb8h7f6v4mi4tldu
[+] Building 0.0s (11/11) FINISHED                                                                                                                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                         0.0s
 => => transferring dockerfile: 425B                                                                                                                                         0.0s
 => [internal] load metadata for gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                   0.0s
 => [internal] load .dockerignore                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                              0.0s
 => [1/6] FROM gcr.io/distroless/static-debian12@sha256:87bce11be0af225e4ca761c40babb06d6d559f5767fbf7dc3c47f0f1a466b92c                                                     0.0s
 => [internal] load build context                                                                                                                                            0.0s
 => => transferring context: 197B                                                                                                                                            0.0s
 => CACHED [2/6] ADD etcd /usr/local/bin/                                                                                                                                    0.0s
 => CACHED [3/6] ADD etcdctl /usr/local/bin/                                                                                                                                 0.0s
 => CACHED [4/6] ADD etcdutl /usr/local/bin/                                                                                                                                 0.0s
 => CACHED [5/6] WORKDIR /var/etcd/                                                                                                                                          0.0s
 => CACHED [6/6] WORKDIR /var/lib/etcd/                                                                                                                                      0.0s
 => exporting to image                                                                                                                                                       0.0s
 => => exporting layers                                                                                                                                                      0.0s
 => => writing image sha256:7bafb479d9c0cd1c4ac3427a8923964586914112f82562e287559e0acbc2d193                                                                                 0.0s
 => => naming to quay.io/coreos/etcd:v3.5.24-arm64

构建镜像成功后启动容器

shell 复制代码
$ docker run -d --name etcd-local -p 2379:2379 quay.io/coreos/etcd:v3.5.24-arm64
2649c3fd931a70109b0e16bb79469b7509e53c54a5f3e31779109f99fe202edf

如果是在mac平台会遇到以下错误

shell 复制代码
$ docker logs 2649c3fd931a70109b0e16bb79469b7509e53c54a5f3e31779109f99fe202edf 
exec /usr/local/bin/etcd: exec format error

原因是etcd在shell中是以当前平台为准构建的, 因此在shell中需要强制改为linux

修改后重新构建镜像

shell 复制代码
$ bash ./scripts/build-docker.sh v3.5.24
$ docker rm -f etcd-local
$ docker run -d --name etcd-local -p 2379:2379 quay.io/coreos/etcd:v3.5.24-arm64
2649c3fd931a70109b0e16bb79469b7509e53c54a5f3e31779109f99fe202edf

安装etcdctl后

shell 复制代码
$ etcdctl put foo bar
OK
$ etcdctl get foo
foo
bar
相关推荐
a***81393 小时前
Node.js 与 Docker 深度整合:轻松部署与管理 Node.js 应用
docker·容器·node.js
ringking12313 小时前
docker源文件配置以及密钥文件
运维·docker·容器
编织幻境的妖13 小时前
Docker和Kubernetes 常用命令
docker·容器·kubernetes
❀͜͡傀儡师15 小时前
docker-compose一键部署Hadoop集群
hadoop·docker·容器
java_logo16 小时前
BUSYBOX Docker 容器化部署指南
java·运维·python·nginx·docker·容器·运维开发
Linux运维技术栈19 小时前
从Docker到宝塔:Magento2 2.3.5 安装全流程踩坑与成功实践
运维·adobe·docker·容器·magento2
大心匠19 小时前
docker安装Nodered连接homeassistant
docker·容器·homeassistant·nodered·排查故障
ITVV21 小时前
Docker 安装配置
运维·docker·容器
m***11901 天前
Redis 设置密码(配置文件、docker容器、命令行3种场景)
数据库·redis·docker
麦兜*1 天前
Redis在Web3中的应用探索:作为链下状态缓存与索引层
java·spring boot·redis·spring cloud·缓存·docker·web3