离线升级docker中的某个镜像——以etcd为例

之前有个项目的程序统一在docker中运行,最近在做安全检查时,发现docker的部分image因为版本没有更新到最新而出现安全漏洞问题。

本贴记录linux环境中,升级docker中某个镜像的步骤,详情如下:

一、生成镜像的步骤(以etcd为例):

1.创建dockersfile $ touch Dockerfile

2.$ vim Dockerfile编辑Dockerfile文件,写入内容如下【需根据实际情况修改,以下仅为示例】:

​
FROM alpine:latest

ADD etcd /usr/local/bin/

ADD etcdctl /usr/local/bin/

RUN mkdir -p /var/etcd/

RUN mkdir -p /var/lib/etcd/

# Alpine Linux doesn't use pam, which means that there is no /etc/nsswitch.conf,

# but Golang relies on /etc/nsswitch.conf to check the order of DNS resolving

# (see https://github.com/golang/go/commit/9dee7771f561cf6aee081c0af6658cc81fac3918)

# To fix this we just create /etc/nsswitch.conf and add the following line:

RUN echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf

EXPOSE 2379 2380

# Define default command.

CMD ["/usr/local/bin/etcd"]

​

3.下载etcd Releases $ wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz

4.解压文件:$ tar -zxvf etcd-v3.3.10-linux-amd64.tar.gz

5.将etcd和etcdctl移动到和dockerfile同级目录:$ mv etcd-v3.3.10-linux-amd64/etcd etcd-v3.3.10-linux-amd64/etcdctl -t ./

6.构建etcd镜像docker build -t etcd .

7.查看构建好的镜像docker images

8. 导入镜像docker save 【镜像ID】 > 【镜像名】.tar

二、更新容器的镜像

  1. 首先通过docker load -i 镜像名,导入镜像(docker tag 【镜像ID】【镜像名称】:【tag版本信息】)
  2. docker images 查看镜像
  3. 修改docker-compose.yml涉及的服务中使用的镜像名称
  4. docker-compose up -d 服务名(docker-compose up -d

作用是创建与启动容器,会重建有变化的服务器(删掉以前建立的容器))

【补充说明】可以直接在可以联网的机器中使用docker pull etcd,下载好之后将etcd的镜像导出,在导入到非联网的机器中使用。

其他:

用语句启动nginx docker

docker run --name my_nginx -d -p 80:80 -v /docker_volumes/nginx/html:/usr/share/nginx/html -v /docker_volumes/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v /docker_volumes/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro --restart=always nginx_1.24.0:latest

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值