docker 制作镜像产生的错误文件_docker镜像制作

2f1610fa74cc8bae343f843fbe5ba02d.png

摘要:docker官方和个人发布的镜像由于版本等各种原因,漏洞比较多;已统计Docker Hub上超过30%的官方镜像包含高危漏洞。另外,下载镜像由于网络等原因也会导致下载速度很慢,所以我们可以手动制作docker镜像。

构建镜像的方式有两种:

(1)使用docker commit命令

(2)使用docker build和Dockerfile文件

制作步骤:

1.使用docker commit

docker commit:意思是提交一个正在运行的容器为一个新的镜像。

# 本例:制作一个tomcat镜像
1.拉取一个基础镜像
docker pull centos

2、创建一个交互式容器
docker run -it --name mycentos centos:latest

3、软件上传:将宿主Tomcat,jdk上传到容器
docker cp apache-tomcat-7.0.47.tar.gz mycentos:/root/
docker cp jdk-8u161-linux-x64.tar.gz mycentos:/root/

4、在容器里安装jdk(yum install java-1.7.0-openjdk)
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local/
编辑/etc/profile文件
JAVA_HOME=/usr/local/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH

5、在容器中安装tomcat
tar -zxvf apache-tomcat-7.0.47.tar.gz -C /usr/local/
编辑tomcat/bin/setclasspath.sh文件
export JAVA_HOME=/usr/local/jdk1.8.0_161
export JRE_HOME=/usr/local/jdk1.8.0_161/jre

6、将正在运行的容器提交为一个新的镜像
docker commit mycentos mycentos

端口映射

docker run -itd --name=t1 -p 8888:8080 mycentos /bin/bash
docker exec t1 /usr/local/apache-tomcat-7.0.47/bin/startup.sh

容器/镜像打包

镜像打包
1、镜像打包
docker save -o /root/tomcat7.tar mytomcat
2、将打包的镜像上传到其他服务器
scp tomcat7.tar 其他服务器IP:/root
3、导入镜像
docker load -i /root/tomcat7.tar

容器打包
1、容器打包
docker export -o /root/t1.tar t1
2、导入容器
docker import t1.tar mycentos:latest

2.Dockerfile制作镜像

Dockerfile是使用DSL语法来构建docker镜像的,之后使用docker builder命令来基于该Dockerfile中的指令构建一个新的镜像,一般maven聚合项目中,使用docker镜像容器化部署项目时使用,在项目根目录新建一个Dockerfile文件,用于把项目制作成镜像,部署到k8s集群上。

DSL结构:

7d5d688e1a12950a93c38003c5520321.png

实例:

通过Dockerfile构建镜像步骤
1、创建一个目录
2、在目录下创建Dockerfile文件及其它文件
3、通过docker builder构建镜像
4、通过构建的镜像启动容器

例子:
1、创建一个目录 : /usr/local/rw_test
2、编辑Dockerfile文件,vim Dockerfile
3、编辑以下内容:
FROM docker.io/centos
MAINTAINER xiaomin xiaomin@163.com
RUN yum install -y pcre pcre-devel openssl-devel gcc gcc+ wget vim net-tools
RUN useradd www -M -s /sbin/nologin
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /usr/local/nginx/logs/access.log
4、在rw_test目录下构建镜像
docker build -t rw_nginx --rm=true .

Dockerfile里不仅仅可以写上述命令,还可以集成jenkins配置变量,elk日志收集都可以写在这里。

具体语法的使用可参考官网:Dockerfile reference

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值