离线升级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 nginx,下载好之后将nginx的镜像导出,在导入到非联网的机器中使用。

其他:

用语句启动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

相关推荐

  1. 线升级docker某个镜像——etcd

    2024-07-10 04:02:03       53 阅读
  2. 线安装dokcer&线获取docker镜像

    2024-07-10 04:02:03       37 阅读
  3. 线安装Python依赖:six和websocket-client

    2024-07-10 04:02:03       57 阅读
  4. docker 镜像打包,线部署

    2024-07-10 04:02:03       59 阅读
  5. docker 获取线镜像

    2024-07-10 04:02:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 04:02:03       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 04:02:03       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 04:02:03       90 阅读
  4. Python语言-面向对象

    2024-07-10 04:02:03       98 阅读

热门阅读

  1. 将pytorch 模型封装为c++ api 例子

    2024-07-10 04:02:03       34 阅读
  2. Rust: 关于Pin以及move前后分析

    2024-07-10 04:02:03       32 阅读
  3. LVS实验

    LVS实验

    2024-07-10 04:02:03      28 阅读
  4. 【Git】取消追踪多个文件或目录

    2024-07-10 04:02:03       24 阅读
  5. 环境变量Path

    2024-07-10 04:02:03       27 阅读
  6. 数据守卫者:sklearn中的异常点检测技术

    2024-07-10 04:02:03       31 阅读
  7. 概率解码:SKlearn中模型的概率预测指南

    2024-07-10 04:02:03       28 阅读
  8. 遇到的问题汇总

    2024-07-10 04:02:03       29 阅读
  9. Oracle中CREATE FORCE VIEW的说明和例子

    2024-07-10 04:02:03       27 阅读
  10. 探索邻近奥秘:SKlearn中K-近邻(KNN)算法的应用

    2024-07-10 04:02:03       25 阅读
  11. 简谈设计模式之工厂模式

    2024-07-10 04:02:03       28 阅读