国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker定制鏡像(Dockerfile)

這篇具有很好參考價值的文章主要介紹了Docker定制鏡像(Dockerfile)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、什么是 Dockerfile?

????????dockerfile 是用來構(gòu)建 docker 鏡像的命令參數(shù)腳本文件。

????????鏡像的定制實際上就是定制每一層所添加的配置、文件。如果我們可以把每一層修改、安裝、構(gòu)建、操作的命令都寫入一個腳本,用這個腳本來構(gòu)建、定制鏡像,那么之前提及的無法重復(fù)的問題、鏡像構(gòu)建透明性的問題、體積的問題就都會解決。這個腳本就是 Dockerfile。

????????Dockerfile 是一個文本文件,其內(nèi)包含了一條條的指令 (Instruction),每一條指令構(gòu)建一層,因此每一條指令的內(nèi)容, 就是描述該層應(yīng)當(dāng)如何構(gòu)建。

二、Dockerfile 規(guī)則:

1、格式

????????# 是注釋,指令建議要大寫,內(nèi)容小寫。這樣更能區(qū)分。比如:FROM centos

2、執(zhí)行順序

????????docker 是按照 Dockerfile 指令順序依次執(zhí)行的,也就是說從上到下。

3、其他

????????每一個 Dockerfile 的第一行都是非注釋性的,也就是說第一行不能是注釋,必須是 FROM 指令,來指定基礎(chǔ)鏡像,后面的指令都以基礎(chǔ)鏡像為運行環(huán)境。如果構(gòu)建過程中本地沒有指定鏡像文件,就會去遠端倉庫拉。

三、Dockerfile 指令:

前提:

????????首先根據(jù)自己的需要在指定目錄下先創(chuàng)建一個 dockerfile 文件,我是在 /usr/local/dockerfile 目錄下創(chuàng)建的自己的?xhf_dockerfile?文件。如下圖所示。

指定dockerfile,docker,docker,容器,運維

????????接下來我們要說的這些標(biāo)簽,都是這個 xhf_dockerfile?文件里面的內(nèi)容。

FROM 標(biāo)簽

????????這個 FROM 指令是 dockerfile 的第一個指令,然后指定了基礎(chǔ)鏡像,后面的所有指令都是運行在該基礎(chǔ)鏡像環(huán)境上的。

# tag 是可選的,如果不使用這兩個值時,會使用 latest 版本的基礎(chǔ)鏡像
FROM <image>
FROM <image>:<tag>
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

MAINTAINER?標(biāo)簽

????????該指令是描述的維護者信息。

MAINTAINER <name>
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 作者的名字為 xhf ,郵箱是1982392926@qq.com
MAINTAINER xhf<1982392926@qq.com>

ENV?標(biāo)簽

????????該指令是用于定義環(huán)境變量的

# 兩種寫法都可以滿足
ENV <key>=<value>
ENV <key> <value>
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 作者的名字為 xhf ,郵箱是1982392926@qq.com
MAINTAINER xhf<1982392926@qq.com>

# 定義一個變量 MYPATH,路徑為 /usr/local
ENV MYPATH /usr/local

WORKDIR?標(biāo)簽

????????該指令是切換到?WORKDIR 目錄下工作,這個與 linux 里面的 cd 差不多。如果 WORKDIR 不存在,它將被創(chuàng)建。

????????需要注意的是通過 WORKDIR 設(shè)置工作目錄后,Dockerfile 中其后的命令 RUN、CMDENTRYPOINT、ADD、 COPY 等命令都會在該目錄下執(zhí)行。在使用 docker run 運行容器時,可以通過 -w 參數(shù)覆蓋構(gòu)建時所設(shè)置的工作目錄。

WORKDIR /usr/workdir

# 這時工作目錄為/a
WORKDIR /a 

# 這時工作目錄為/a/b
WORKDIR b

# 這時工作目錄為/a/b/c
WORKDIR c
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 作者的名字為 xhf ,郵箱是1982392926@qq.com
MAINTAINER xhf<1982392926@qq.com>

# 定義一個變量 MYPATH,路徑為 /usr/local
ENV MYPATH /usr/local

# 切換到 MYPATH 的路徑下
WORKDIR $MYPATH

????????這個命令啥時候會生效呢?會等我們進入容器的時候生效,下面這個截圖是如果我們不加這行命令創(chuàng)建的容器,默認(rèn)進入時候的路徑。?

指定dockerfile,docker,docker,容器,運維

????????下面這個截圖是加了這行命令后,進入容器默認(rèn)的當(dāng)前路徑。

指定dockerfile,docker,docker,容器,運維

RUN?標(biāo)簽

????????該指令用于在容器中執(zhí)行命令。我們常用來安裝基礎(chǔ)軟件,或者執(zhí)行一些命令。

? ? ? ? 需要注意的是 RUN 指令創(chuàng)建的中間鏡像會被緩存,并會在下次構(gòu)建中使用。如果不想使用這些緩存鏡像,可以在構(gòu)建時指定 --no-cache 參數(shù),如:docker build --no-cache

# 第一種 shell 執(zhí)行,eg: RUN mkdir /usr/local/tomcat/webapps/ROOT
RUN <command>

# 第二種 exec 執(zhí)行,eg:echo 'Hello xhf Docker'>/usr/local/tomcat/webapps/ROOT/index.html
RUN ["executable", "param1", "param2"]
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 作者的名字為 xhf ,郵箱是1982392926@qq.com
MAINTAINER xhf<1982392926@qq.com>

# 定義一個變量 MYPATH,路徑為 /usr/local
ENV MYPATH /usr/local

# 切換到 MYPATH 的路徑下
WORKDIR $MYPATH

# 在容器的指定目錄下創(chuàng)建一個 ROOT 文件夾
RUN mkdir -p /usr/local/tomcat/webapps/ROOT/

????????也可以這么用

# 安裝 yum 工具
RUN yum -y install vim

# 安裝網(wǎng)絡(luò)監(jiān)測工具
RUN yum -y install net-tools

ADD?標(biāo)簽

????????該指令是用來將宿主機某個文件或目錄放到(復(fù)制)容器某個目錄下面。

????????如果復(fù)制的文件是 tar?類型的,那么該文件會自動解壓?(?網(wǎng)絡(luò)壓縮資源不會被解壓?)?,可以訪問網(wǎng)絡(luò)資源,類似 wget。

ADD <src>... <dest>

ADD ["<src>",... "<dest>"] 

? ? ? ? ?我們自己創(chuàng)建一個?index.html 文件用于測試,內(nèi)容很簡單。

# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 作者的名字為 xhf ,郵箱是1982392926@qq.com
MAINTAINER xhf<1982392926@qq.com>

# 定義一個變量 MYPATH,路徑為 /usr/local
ENV MYPATH /usr/local

# 切換到 MYPATH 的路徑下
WORKDIR $MYPATH

# 在容器的指定目錄下創(chuàng)建一個 ROOT 文件夾
RUN mkdir -p /usr/local/tomcat/webapps/ROOT/

# 將 index.html 放到指定的目錄下
ADD index.html /usr/local/tomcat/webapps/ROOT/index.html

EXPOSE?標(biāo)簽

????????該指令用于暴露容器里的端口,沒有什么用,加了和不加沒有什么區(qū)別,僅僅是為了告訴使用這個鏡像的人,我的這個容器用到了 xxxx 端口號。

EXPOSE 端口
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 作者的名字為 xhf ,郵箱是1982392926@qq.com
MAINTAINER xhf<1982392926@qq.com>

# 定義一個變量 MYPATH,路徑為 /usr/local
ENV MYPATH /usr/local

# 切換到 MYPATH 的路徑下
WORKDIR $MYPATH

# 在容器的指定目錄下創(chuàng)建一個 ROOT 文件夾
RUN mkdir -p /usr/local/tomcat/webapps/ROOT/

# 將 index.html 放到指定的目錄下
ADD index.html /usr/local/tomcat/webapps/ROOT/index.html

# 對外暴露 8080 端口
EXPOSE 8080

build 標(biāo)簽

? ? ? ? 該標(biāo)簽用于構(gòu)建鏡像,我們先執(zhí)行一下我上面的這些命令,驗證一下,將目錄切換到?/usr/local/dockerfile 下,因為我的?xhf_dockerfile 文件在這個目錄下面,執(zhí)行以下的命令:

docker build -f xhf_dockerfile -t mytomcat:0.1 .

# -f xhf_dockerfile 表示構(gòu)建的文件路徑

# -t 鏡像名稱:版本號

# . 表示當(dāng)前路徑 


# 如果你當(dāng)前的目錄下只有一個 dockerfile 文件,那么可以省略 -f 參數(shù),如下所示:
docker build -t mytomcat:0.1 .


? ? ? ? 執(zhí)行完命令之后,我們可以看下鏡像是否成功創(chuàng)建了?

指定dockerfile,docker,docker,容器,運維

????????然后用我們自己的鏡像創(chuàng)建容器,輸入命令如下所示:

docker run --rm -d --name tomcat-8082 -p 8082:8080 mytomcat:0.1

指定dockerfile,docker,docker,容器,運維

????????接下來我們需要驗證兩個東西,第一個東西是當(dāng)我們進入到容器里面,默認(rèn)的目錄是不是 /usr/local ,第二個需要驗證的是訪問 tomcat 看是否可以出現(xiàn)登錄頁,因為登錄頁是我們自己復(fù)制過去的,如下所示,這兩個需要驗證的東西都沒有問題。

指定dockerfile,docker,docker,容器,運維

指定dockerfile,docker,docker,容器,運維

COPY?標(biāo)簽

????????該標(biāo)簽功能類似于 ADD 標(biāo)簽,但是是不會自動解壓文件,也不能訪問網(wǎng)絡(luò)資源。

COPY <源路徑> <目標(biāo)路徑>
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 在容器的指定目錄下創(chuàng)建一個 ROOT 文件夾
RUN mkdir -p /usr/local/tomcat/webapps/ROOT/

# 將 index.html 復(fù)制到指定的目錄下
COPY index.html /usr/local/tomcat/webapps/ROOT/index.html

VOLUME?標(biāo)簽

????????該標(biāo)簽用于在 image 中創(chuàng)建一個掛載目錄,以掛載宿主機上的目錄。

# path 代表容器中的目錄,與 docker run 不同,Dockerfile 中不能指定宿主機目錄,默認(rèn)使用 docker 管理的掛載點
VOLUME <path>
VOLUME ["path"]
# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 在容器的指定目錄下創(chuàng)建一個 ROOT 文件夾
RUN mkdir -p /usr/local/tomcat/webapps/ROOT/

# 將 index.html 復(fù)制到指定的目錄下
COPY index.html /usr/local/tomcat/webapps/ROOT/index.html

# 創(chuàng)建兩個掛載點
VOLUME ["/data1","/data2"]

????????1、我們先使用?run -v 指定容器和宿主機的目錄進行掛載,執(zhí)行命令

docker run --rm -d --name tomcat-8081 -p 8081:8080 -v /usr/local/docker/ROOT:/usr/local/tomcat/webapps/ROOT tomcat:8

指定dockerfile,docker,docker,容器,運維

????????查看當(dāng)前容器的掛載信息,如下所示,掛載的路徑是我們上面指定的宿主和容器的路徑,沒有問題。

指定dockerfile,docker,docker,容器,運維

指定dockerfile,docker,docker,容器,運維

????????2、再次使用 docker run -v 參數(shù),但不指定宿主機的目錄,執(zhí)行命令

docker run --rm -d --name tomcat-8082 -p 8082:8080 -v /usr/local/tomcat/webapps/ROOT tomcat:8

指定dockerfile,docker,docker,容器,運維

????????從下面可以看到,Source 的路徑是自動分配的一個目錄

指定dockerfile,docker,docker,容器,運維

????????3、使用 dockerfile 中掛載點進行測試。通過 docker run 命令的 -v 標(biāo)識創(chuàng)建的掛載點只能對創(chuàng)建的容器有效。而通過 dockerfile VOLUME 指令可以在鏡像中創(chuàng)建掛載點,這樣只要通過該鏡像創(chuàng)建的容器都有了掛載點。但在 dockerfile 中無法指定主機上對應(yīng)的目錄,是自動生成的。相當(dāng)于不指定宿主機的目錄創(chuàng)建掛載點。執(zhí)行下面的語句進行測試查看。

# 指定基礎(chǔ)鏡像為 tomcat:8 
FROM tomcat:8

# 在容器的指定目錄下創(chuàng)建一個 ROOT 文件夾
RUN mkdir -p /usr/local/tomcat/webapps/ROOT/

# 將 index.html 復(fù)制到指定的目錄下
COPY index.html /usr/local/tomcat/webapps/ROOT/index.html

# 創(chuàng)建兩個掛載點
VOLUME ["/data1","/data2"]
# 構(gòu)建鏡像
docker build -f xhf_dockerfile -t mytomcat:0.3 .

# 構(gòu)建容器
docker run --rm -d --name tomcat-8083 -p 8083:8080 mytomcat:0.3

指定dockerfile,docker,docker,容器,運維

????????查看掛載點,會發(fā)現(xiàn)一共有兩個自動掛載的目錄,如下圖所示:指定dockerfile,docker,docker,容器,運維

CMD 標(biāo)簽

????????該標(biāo)簽是構(gòu)建容器后調(diào)用的,也就是在容器啟動時才進行調(diào)用。

????????一個 Dockerfile 只有一個 CMD 指令,若有多個,只有最后一個 CMD 指令生效。

????????CMD 主要目的:為容器提供默認(rèn)執(zhí)行的命令,這個默認(rèn)值可以包含可執(zhí)行文件,也可以不包含可執(zhí)行文件,意味著必須指定 ENTRYPOINT 指令(第二種寫法)。

????????注意和 RUN 指令的區(qū)別,RUN 是構(gòu)建鏡像時執(zhí)行的命令,執(zhí)行的時期不同。

# shell格式
CMD <命令>

# exec格式 
CMD ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2", …]

????????修改我們的?xhf_dockerfile 文件,改寫成下面的內(nèi)容:

# 指定基礎(chǔ)鏡像為 centos:7
FROM centos:7

CMD echo "This is a test."

????????執(zhí)行下面的命令,并且啟動容器,如下所示,我們可以看到可以正常執(zhí)行 CMD 標(biāo)簽的內(nèi)容。

# 構(gòu)建鏡像
docker build -f xhf_dockerfile -t mycentos:0.1 .

# 啟動容器
docker run mycentos:0.1

指定dockerfile,docker,docker,容器,運維

ENTRYPOINT?標(biāo)簽

????????該標(biāo)簽是指定容器啟動的要運行的命令,可以追加命令。

????????ENTRYPOINT CMD 非常類似,不同的是通過 docker run 執(zhí)行的命令不會覆蓋ENTRYPOINT,而 docker run 命令中指定的任何參數(shù),都會被當(dāng)做參數(shù)再次傳遞給?ENTRYPOINT

????????Dockerfile 中只允許有一個 ENTRYPOINT 命令,多指定時會覆蓋前面的設(shè)置,而只執(zhí)行最后的 ENTRYPOINT 指令。

ENTRYPOINT ["executable", "param1", "param2"]

ENTRYPOINT command param1 param2 (shell內(nèi)部命令)

????????修改我們的?xhf_dockerfile 文件,改寫成下面的內(nèi)容:

# 指定基礎(chǔ)鏡像為 centos:7
FROM centos:7
ENTRYPOINT ["echo", "dockerfile-entrypoint test"]
ENTRYPOINT ["ls", "-a"]

????????執(zhí)行下面的命令,并且啟動容器,如下所示,我們可以看到可以?ENTRYPOINT?標(biāo)簽的只執(zhí)行了最后一行。

# 構(gòu)建鏡像
docker build -f xhf_dockerfile -t mycentos:0.2 .

# 啟動容器
docker run mycentos:0.2

指定dockerfile,docker,docker,容器,運維

????????接下來我們在 docker run 命令行種追加命令參數(shù),新添加的參數(shù)會追加到原 dockerfile 的?ENTRYPOINT 命令里。

????????相當(dāng)于在 Dockerfile ENTRYPOINT 里追加了 -l 的參數(shù),即【ls -a -l】。啟動容器,如下所示,我們發(fā)現(xiàn)是可以正常執(zhí)行的。

指定dockerfile,docker,docker,容器,運維

? ? ? ? ?我們再追加一些錯誤的參數(shù),看看容器啟動的時候會不會報錯,如下所示,是會報錯的。

指定dockerfile,docker,docker,容器,運維

CMD 和?ENTRYPOINT 配合使用

????????一般情況下,ENTRYPOINT CMD 標(biāo)簽都是互相配合使用的,即:ENTRYPOINT 填寫固定的命令,CMD 填寫該固定命令對應(yīng)的參數(shù),CMD 將這個參數(shù)傳遞給 ENTRYPOINT命令??梢岳斫鉃?CMD 參數(shù)為 ENTRYPOINT 的默認(rèn)值,如果項目中使用的不是 CMD 的默認(rèn)值,就可以在啟動 docker 容器時添加上真實的參數(shù)值,用來覆蓋 CMD 的默認(rèn)值。

? ? ? ? 舉個例子,比如要在鏡像中通過 java -jar 的方式啟動一個 java 工程,就可以采用下面的方式,默認(rèn)啟動的時候 commcon.jar 這個工程。

ENTRYPOINT ["java", "-jar"]

CMD ["common.jar"]

? ? ? ? 如果我們不想啟動這個 common.jar 的工程了,我們在啟動容器的時候更換下命令就可以了,如下所示:

docker run 容器名稱 xxxx.jar

實戰(zhàn)生成 jdk 鏡像:

? ? ? ? 接下來我們測試下 CMD 和?ENTRYPOINT 標(biāo)簽,在實際應(yīng)用中到底是不是按照我們想象的這種方式執(zhí)行。

????????第一步、新建兩個 springboot?工程,很簡單的就可以,命名為?DockerTestOne? 和?DockerTestTwo,主要的內(nèi)容我簡單的貼下,如下所示,這兩個工程唯一的區(qū)別就是名字和輸出不一樣,其他的都一樣。

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.8.RELEASE</version>
	</parent>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<fork>true</fork>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
    	//將springboot應(yīng)用驅(qū)動起來
        SpringApplication.run(App.class, args);
    }
}
@RestController
public class HelloWorld {
 
	@RequestMapping("/hello")
	public String Hello(String name) {
		
		return "Hello"+name+" from DockerTestOne";
	}
}
@RestController
public class HelloWorld {
 
	@RequestMapping("/hello")
	public String Hello(String name) {
		
		return "Hello"+name+" from DockerTestOne";
	}
}

????????構(gòu)建出兩個可執(zhí)行的 jar 包,分別重命名為?docker_testone.jar ?docker_testtwo.jar 。然后將這兩個 jar 包復(fù)制到 xhf_dockerfile 同等級的目錄下備用。

????????第二步、下載一個 linux 環(huán)境的 jdk,下載地址是這個,然后也把這個 jdk 復(fù)制到上面說的目錄下,如圖所示:

指定dockerfile,docker,docker,容器,運維

????????第三步、修改 xhf_dockerfile 文件,內(nèi)容如下所示:

FROM centos:7
MAINTAINER xhf<1982392926@qq.com>
ADD jdk-8u371-linux-x64.tar.gz /usr/local/
ADD docker_testone.jar /usr/local/
ADD docker_testtwo.jar /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_371
ENV CLASSPATH $JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar
ENV PATH $JAVA_HOME/bin
ENTRYPOINT ["java", "-jar"]
CMD ["docker_testone.jar"]

????????第四步、創(chuàng)建鏡像并啟動容器,如下所示:

docker build -f xhf_dockerfile -t mycentos:0.4 .

docker run -d -p 8080:8080 --name mycentos  mycentos:0.4


指定dockerfile,docker,docker,容器,運維

指定dockerfile,docker,docker,容器,運維

????????第五步、在瀏覽器輸入?http://localhost:8080/hello?name=World,結(jié)果如下所示,我們發(fā)現(xiàn)我們的服務(wù)可以正常啟動和訪問。

指定dockerfile,docker,docker,容器,運維

????????第六步、關(guān)掉服務(wù),刪除容器,重新啟動容器,命令如下,我們發(fā)現(xiàn)我們的服務(wù)被命令行的 jar 包替換掉了,啟動之后還是正常的。

docker stop mycentos

docker rm -f mycentos

docker run -d -p 8080:8080 --name mycentos  mycentos:0.4 docker_testtwo.jar

指定dockerfile,docker,docker,容器,運維

實戰(zhàn)生成 tomcat 鏡像

????????第一步、編寫 xhf_dockerfile 文件,tomcat 的下載地址在這,如下所示:

FROM centos:7
MAINTAINER xhf<1982392926@qq.com>
ADD jdk-8u371-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.33.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_371
ENV CLASSPATH $JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.33
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.33
ENV PATH $PATH;$JAVA_HOME/bin;$CATALINA_HOME/lib;$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.33/bin/startup.sh && tailf /usr/local/apache-tomcat-9.0.33/logs/catalina.out

????????第二步、構(gòu)建和啟動,命令如下:

docker build -f xhf_dockerfile -t mytomcat:0.1 .

docker run -d -p 8080:8080 --name mytomcat -v /usr/local/tomcat/test:/usr/local/apache-tomcat-9.0.33/webapps/test -v /usr/local/tomcat/logs:/usr/local/apache-tomcat-9.0.33/logs mytomcat:0.1

????????第三步、新建 web.xml index.jsp,內(nèi)容如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
</web-app>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>youngj</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("你的 IP 地址 " + request.getRemoteAddr());
%>
</body>
</html>

指定dockerfile,docker,docker,容器,運維

?第四步、測試,在瀏覽器輸入?http://localhost:8080/test/index.jsp,內(nèi)容如下所示:

指定dockerfile,docker,docker,容器,運維

指定dockerfile,docker,docker,容器,運維文章來源地址http://www.zghlxwxcb.cn/news/detail-725982.html

到了這里,關(guān)于Docker定制鏡像(Dockerfile)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Docker容器與虛擬化技術(shù):Docker鏡像創(chuàng)建、Dockerfile實例

    Docker容器與虛擬化技術(shù):Docker鏡像創(chuàng)建、Dockerfile實例

    目錄 一、理論 1.Docker鏡像的創(chuàng)建方法 2.Docker鏡像結(jié)構(gòu)的分層 3.Dockerfile 案例 4.構(gòu)建Systemctl鏡像(基于SSH鏡像) 5.構(gòu)建Tomcat 鏡像 6.構(gòu)建Mysql鏡像 二、實驗 1.Docker鏡像的創(chuàng)建 2.?Dockerfile 案例 3.構(gòu)建Systemctl鏡像(基于SSH鏡像) 三、問題 1.nginx網(wǎng)頁打不開 ?2.Apache容器啟動一直為Ex

    2024年02月12日
    瀏覽(94)
  • Docker進階:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    Docker進階:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    ??The Begin??點點關(guān)注,收藏不迷路?? 1、完成數(shù)據(jù)持久化和共享數(shù)據(jù),docker容器中的數(shù)據(jù),同步到本地。 2、重要數(shù)據(jù)back_up 特點: 實時生效、數(shù)據(jù)卷可在容器之間共享和重用數(shù)據(jù)、數(shù)據(jù)卷中的更改不會包含在鏡像更新中、數(shù)據(jù)卷的生命周期會一直延續(xù)到?jīng)]有容器使用它為止

    2024年02月09日
    瀏覽(27)
  • docker容器:docker鏡像的三種創(chuàng)建方法及dockerfile案例

    docker容器:docker鏡像的三種創(chuàng)建方法及dockerfile案例

    目錄 一、基于現(xiàn)有鏡像創(chuàng)建 1、創(chuàng)建啟動鏡像 2、生成新鏡像 二、基于本地模板創(chuàng)建? 1、OPENVZ 下載模板 2、導(dǎo)入容器生成鏡像 三、基于dockerfile創(chuàng)建? 1、dockerfile結(jié)構(gòu)及分層 2、聯(lián)合文件系統(tǒng) 3、docker鏡像加載原理 4、dockerfile操作常用的指令 (1)FROM指令 (2)MAINTAINER 指令 (3)RUN指令

    2023年04月20日
    瀏覽(41)
  • Docker基礎(chǔ)入門:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    Docker基礎(chǔ)入門:容器數(shù)據(jù)卷與Dockerfile構(gòu)建鏡像(發(fā)布)

    ??The Begin??點點關(guān)注,收藏不迷路?? 1、完成數(shù)據(jù)持久化和共享數(shù)據(jù),docker容器中的數(shù)據(jù),同步到本地。 2、重要數(shù)據(jù)back_up 特點: 實時生效、數(shù)據(jù)卷可在容器之間共享和重用數(shù)據(jù)、數(shù)據(jù)卷中的更改不會包含在鏡像更新中、數(shù)據(jù)卷的生命周期會一直延續(xù)到?jīng)]有容器使用它為止

    2024年02月10日
    瀏覽(21)
  • docker基于已有容器和通過Dockerfile進行制作鏡像配置介紹

    目錄 一.制作鏡像的兩種方式 1.在已有容器中更新并提交這個鏡像 2.使用Dockerfile來制作 二.基于容器制作鏡像 1.格式 (1)主要格式 (2)可選參數(shù) 2.案例 基于容器創(chuàng)建鏡像設(shè)置標(biāo)簽并進行驗證是否可用 (1)運行容器并寫入驗證內(nèi)容(改變?nèi)萜鞔鎯觾?nèi)容) (2)另起終端制

    2024年02月11日
    瀏覽(107)
  • Docker容器學(xué)習(xí):Dockerfile制作Web應(yīng)用系統(tǒng)nginx鏡像

    Docker容器學(xué)習(xí):Dockerfile制作Web應(yīng)用系統(tǒng)nginx鏡像

    目錄 編寫Dockerfile 1.文件內(nèi)容需求: 2.編寫Dockerfile: 3.開始構(gòu)建鏡像 ?4.現(xiàn)在我們運行一個容器,查看我們的網(wǎng)頁是否可訪問 推送鏡像到私有倉庫 1.把要上傳的鏡像打上合適的標(biāo)簽 2.登錄harbor倉庫 3.上傳鏡像 1.文件內(nèi)容需求: 基于centos基礎(chǔ)鏡像。 指定作者信息。 安裝nginx服

    2024年02月11日
    瀏覽(119)
  • 【Java】微服務(wù)——Docker容器部署(docker安裝,docker配置鏡像加速,DockerHub,docker基本操作,Dockerfile自定義鏡像.Docker-Compose)

    【Java】微服務(wù)——Docker容器部署(docker安裝,docker配置鏡像加速,DockerHub,docker基本操作,Dockerfile自定義鏡像.Docker-Compose)

    微服務(wù)雖然具備各種各樣的優(yōu)勢,但服務(wù)的拆分通用給部署帶來了很大的麻煩。 分布式系統(tǒng)中,依賴的組件非常多,不同組件之間部署時往往會產(chǎn)生一些沖突。 在數(shù)百上千臺服務(wù)中重復(fù)部署,環(huán)境不一定一致,會遇到各種問題 1.1.1.應(yīng)用部署的環(huán)境問題 大型項目組件較多,運

    2024年02月04日
    瀏覽(33)
  • Docker在windows下使用教程,通過Dockerfile創(chuàng)建鏡像/容器,以YOLO系列為例

    Docker在windows下使用教程,通過Dockerfile創(chuàng)建鏡像/容器,以YOLO系列為例

    ?通過可視化界面將極大的降低學(xué)習(xí)難度。 ?1.1、Docker Desktop下載 ?下載地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 應(yīng)當(dāng)是這個界面,選擇下載即可 1.2、下載完成后需打開window自帶的虛擬機 ? ? ? 將Hyper-V勾選即打開,勾選后需重啟。? 1.3、下載WSL,由于是在

    2024年02月05日
    瀏覽(103)
  • 如何在 Linux 命令行下玩轉(zhuǎn) Docker——如何使用 Dockerfile 來構(gòu)建和運行容器鏡像

    作者:禪與計算機程序設(shè)計藝術(shù) Docker 是一款開源的容器化技術(shù),它利用 Linux 內(nèi)核的容器特性,將應(yīng)用部署到獨立的進程環(huán)境中。基于容器技術(shù)可以極大地提高開發(fā)者和運維人員的效率,降低部署、測試和生產(chǎn)環(huán)節(jié)中的成本,有效地實現(xiàn)云計算資源的彈性伸縮。 本文主要介紹

    2024年02月07日
    瀏覽(106)
  • windows部署python項目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動容器

    windows部署python項目(以Flask為例)到docker,通過腳本一鍵生成dockerfile并構(gòu)建鏡像啟動容器

    這里使用 pipreqs 進行依賴庫的識別。使用 pipreqs 可以自動檢索到當(dāng)前項目下的所有組件及其版本,并生成 requirements.txt 文件。相比直接用pip freeze 命令,避免將整個python環(huán)境的依賴包寫入。 在項目的當(dāng)前目錄中執(zhí)行 pipreqs ./ --encoding=utf8 --force 這里使用的是一個基于flask項目,

    2023年04月08日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包