製作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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章