赞
踩
之前有个项目的程序统一在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"]
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
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
二、更新容器的镜像
作用是创建与启动容器,会重建有变化的服务器(删掉以前建立的容器))
【补充说明】可以直接在可以联网的机器中使用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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。