制作Docker镜像

前言声明:
如果您有更好的技术与作者分享,或者商业合作;
请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。

如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html
留言给作者说明原由,作者一经查实,马上删除。

Docker制作image 有两种方法:

(1) docker commit(就是基于镜像来进行修改)
(2) 创建 docker build 使用Dockerfile 自动化制作image

具体详情可以看看这个:https://www.jianshu.com/p/8ee0c8d275cb

1,基于Dockerfile 文件制作(Alpine)镜像

1,下载一个基础镜像(Alpine)
如果不知道怎么选择基础镜像请看:https://blog.csdn.net/nklinsirui/article/details/80967677

[root@localhost ~]# docker search alpine
在这里插入图片描述
[root@localhost ~]# docker pull alpine
在这里插入图片描述
[root@localhost ~]# docker images
在这里插入图片描述

2,创建文件:Dockerfile

[root@localhost ~]# cd /home/tools
[root@localhost tools]# touch Dockerfile
在这里插入图片描述

3,编辑Docker文件

[root@localhost ]# vi /home/tools/Dockerfile

#注意:命令要大写   #是注解
#基于alpine镜像创建,既用FROM 后面是告诉docker 我们的镜像基于什么来搭建
#如果FROM不存,Docker会自动在仓库里面查找,并下载到本地
FROM alpine:latest

#MAINTAINER 后面是镜像的描述
MAINTAINER esqabc "www.esqabc.com"

#安装JDK
#把jdk-8u211-linux-x64.tar.gz文件添加到/usr/local
#注意:jdk-8u211-linux-x64.tar.gz文件夹所在的目录
ADD ./jdk-8u211-linux-x64.tar.gz /usr/local/
RUN rm -rf  /usr/local/jdk-8u211-linux-x64.tar.gz


#更换Alpine源为mirrors.ustc.edu.cn
RUN echo http://mirrors.ustc.edu.cn/alpine/v3.9/main > /etc/apk/repositories && \
    echo http://mirrors.ustc.edu.cn/alpine/v3.9/community >> /etc/apk/repositories
RUN apk update && apk upgrade


#Alpine安装
RUN apk --no-cache add ca-certificates wget && \
    wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-2.29-r0.apk && \
	apk add glibc-2.29-r0.apk
	
	
	

######设置JAVA变量环境#########
ENV JAVA_HOME=/usr/local/jdk1.8.0_211
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH
CMD ["java","-version"]

4,执行创建镜像命令

[root@localhost tools]# docker build -t esqabcalpines:v1 .
在这里插入图片描述
在这里插入图片描述
注意:docker build命令需要Dockerfile文件所在的目录执行

5,运行刚刚创建的镜像

[root@localhost ]# docker run -d -it --name esqabcalpine esqabcalpines:v1 /bin/sh
在这里插入图片描述
[root@localhost ]# docker ps
在这里插入图片描述
出现这个,就说明已经启动成功

6,如果需要创建镜像,并且发布jar项目,只需要修改一个DockerFile文件即可,修改如下

[root@localhost ]# vi /home/tools/Dockerfile

#注意:命令要大写   #是注解
#基于alpine镜像创建,既用FROM 后面是告诉docker 我们的镜像基于什么来搭建
#如果FROM不存,Docker会自动在仓库里面查找,并下载到本地
FROM alpine:latest

#MAINTAINER 后面是镜像的描述
MAINTAINER esqabc "www.esqabc.com"

#安装JDK
#把jdk-8u211-linux-x64.tar.gz文件添加到/usr/local
#注意:jdk-8u211-linux-x64.tar.gz文件夹所在的目录要与DockerFile文件的目录一致
ADD ./jdk-8u211-linux-x64.tar.gz /usr/local/
RUN rm -rf  /usr/local/jdk-8u211-linux-x64.tar.gz


#发布项目,创建一个目录/home/tools,并且把项目dockerjar.jar拷贝到/home/tools
#注意:dockerjar.jar文件夹所在的目录要与DockerFile文件的目录一致
RUN cd /home && mkdir tools
ADD ./dockerjar.jar /home/tools


#更换Alpine源为mirrors.ustc.edu.cn
RUN echo http://mirrors.ustc.edu.cn/alpine/v3.9/main > /etc/apk/repositories && \
    echo http://mirrors.ustc.edu.cn/alpine/v3.9/community >> /etc/apk/repositories
RUN apk update && apk upgrade


#Alpine安装
RUN apk --no-cache add ca-certificates wget && \
    wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-2.29-r0.apk && \
	apk add glibc-2.29-r0.apk
	
	
	

######设置JAVA变量环境#########
ENV JAVA_HOME=/usr/local/jdk1.8.0_211
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH


#开启内部服务端口
EXPOSE 8888


#启动服务
CMD java -jar /home/tools/dockerjar.jar  

7,运行镜像

方式1,关闭或者退出容器窗口就会关闭容器,可以看到项目运行的Console输出
[root@localhost ]# docker run -it --name esqabcalpine -p 8888:8888 esqabcalpines:v1
在这里插入图片描述
浏览器效果,在浏览器输入:http://localhost:8888或者http://ip:8888
在这里插入图片描述

方式2:容器后台运行,不可以看到项目运行的Console输出,返回容器ID,项目并没有启动,关闭或者退出容器窗口不会关闭容器
[root@localhost ]# docker run -d -it --name esqabcalpine -p 8888:8888 esqabcalpines:v1 /bin/sh
在这里插入图片描述
浏览器效果,在浏览器输入:http://localhost:8888或者http://ip:8888
在这里插入图片描述
造成这种原因是启动命令的问题,只要修改一下启动命令就可以了,去掉后面的 /bin/sh
docker run -d -it --name esqabcalpine -p 8888:8888 esqabcalpines:v1
在这里插入图片描述
浏览器效果,在浏览器输入:http://localhost:8888或者http://ip:8888
在这里插入图片描述

8,进入运行中的容器

[root@localhost ~]# docker exec -it esqabcalpine /bin/sh
注意:请用下面的命令退出;
按键盘:ctrl+d 退出容器且关闭
按键盘:ctrl+p+q 退出容器但不关闭

2,基于Dockerfile 文件制作(centos)镜像

1,下载一个基础镜像(centos)
如果不知道怎么选择基础镜像请看:https://blog.csdn.net/nklinsirui/article/details/80967677

[root@localhost ~]# docker search centos
在这里插入图片描述
[root@localhost ~]# docker pull centos
[root@localhost ~]# docker images
在这里插入图片描述

2,创建文件:Dockerfile

[root@localhost ~]# cd /home/tools
[root@localhost tools]# touch Dockerfile
在这里插入图片描述
3,编辑Docker文件
[root@localhost ]# vi /home/tools/Dockerfile

#注意:命令要大写   #是注解
#基于alpine镜像创建,既用FROM 后面是告诉docker 我们的镜像基于什么来搭建
#如果FROM不存,Docker会自动在仓库里面查找,并下载到本地
FROM centos:7

#MAINTAINER 后面是镜像的描述
MAINTAINER esqabc "www.esqabc.com"

# 配置OS环境配置
RUN yum install -y wget


#安装JDK
#把jdk-8u211-linux-x64.tar.gz文件添加到/usr/local
#注意:jdk-8u211-linux-x64.tar.gz文件夹所在的目录要与DockerFile文件的目录一致
ADD ./jdk-8u211-linux-x64.tar.gz /usr/local/
RUN rm -rf  /usr/local/jdk-8u211-linux-x64.tar.gz


######设置JAVA变量环境#########
ENV JAVA_HOME=/usr/local/jdk1.8.0_211
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH


# 安装tomcat
RUN cd /home && mkdir tools
RUN wget -P  /home/tools http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.40/bin/apache-tomcat-8.5.40.tar.gz
RUN tar xzf /home/tools/apache-tomcat-8.5.40.tar.gz -C /home/tools && rm -rf /home/tools/apache-tomcat-8.5.40.tar.gz
#把apache-tomcat-8.5.39.tar.gz文件添加到/home/tools
#注意:apache-tomcat-8.5.39.tar.gz文件夹所在的目录要与DockerFile文件的目录一致
#ADD ./apache-tomcat-8.5.39.tar.gz /home/tools
#RUN rm -rf  /home/tools/apache-tomcat-8.5.39.tar.gz


#打包项目并拷贝到tomcat webapps目录
RUN cd /home && mkdir webapp
ADD ./dockerweb.war  /home/webapp
RUN cd /home/webapp  && cp /home/webapp/dockerweb.war /home/tools/apache-tomcat-8.5.40/webapps/


#开启内部服务端口
EXPOSE 8080


#启动tomcat服务器
CMD /home/tools/apache-tomcat-8.5.40/bin/startup.sh run && tail -f /home/tools/apache-tomcat-8.5.40/logs/catalina.out 

4,执行创建镜像命令

[root@localhost tools]# docker build -t esqabccentos:v1 .
在这里插入图片描述
[root@localhost tools]# docker images
在这里插入图片描述

5,运行刚刚创建的镜像

[root@localhost ]# docker run -d -it --name esqabccento -p 8888:8080 esqabccentos:v1

[root@localhost tools]# docker ps在这里插入图片描述
6,进入容器
[root@vultr tools]# docker exec -it a2e2b156c575 /bin/bash
在这里插入图片描述
浏览器输入:http://localhost:8888/dockerweb/或者http://ip:8888/dockerweb/
出现页面就说明已经成功

注意:

1,在进入容器后,输入命令没有反应或者等好久才有反应的情况;
请用root用户或者添加权限方式启动或者进入容器
(1)添加权限启动

[root@localhost ~]# docker run -i -t --privileged=true --name esqabccento -d -p 8888:8080 9c8e59bb5dae
9c8e59bb5dae :是容器的ID
privileged=true :添加特权

(2)使用root用户启动

[root@localhost ~]# docker run -i -t --user root --name esqabccento -d -p 80:8080 9c8e59bb5dae
9c8e59bb5dae :是容器的ID

(3)添加权限进入容器

[root@localhost ~]# docker exec -it --privileged=true cc61f0bf91f3
cc61f0bf91f3 :是容器的ID
privileged=true :添加特权

(4)使用root用户进入容器

[root@localhost ~]# docker exec -it --user root cc61f0bf91f3
cc61f0bf91f3 :是容器的ID

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值