Docker官方維護(hù)鏡像的公共倉(cāng)庫網(wǎng)站 Docker Hub 國(guó)內(nèi)無法訪問了,大部分鏡像無法下載,準(zhǔn)備逐步構(gòu)建自己的鏡像庫?!巨D(zhuǎn)載aliyun官方-容器鏡像服務(wù) ACR】Docker常見問題
阿里云容器鏡像服務(wù)ACR(Alibaba Cloud Container Registry)是面向容器鏡像、Helm Chart等符合OCI標(biāo)準(zhǔn)的云原生制品安全托管及高效分發(fā)平臺(tái)。ACR企業(yè)版支持全球同步加速、大規(guī)模和大鏡像分發(fā)加速、多代碼源構(gòu)建加速等全鏈路加速能力,與容器服務(wù)ACK無縫集成,幫助企業(yè)降低交付復(fù)雜度,打造云原生應(yīng)用一站式解決方案。
一、下載Linux下的JDK11包
1.1 下載 jdk-11.0.19_linux-x64_bin.tar.gz
Java SE Development Kit 11.0.19
需要Oracle賬號(hào)登錄后才能下載。
這里放一個(gè)其他博主公開的Oracle公共賬號(hào)和密碼
1.2 上傳下載的JDK11包到CentOS中的新建文件夾mydockerfile中
建議:dockerfile文件和jdk包放在同一個(gè)文件夾下,這樣不用build時(shí)用-f參數(shù)指定dockerfile的位置。
這里文件夾的名稱寫成了mydockfile,應(yīng)該是mydockerfile,后續(xù)已經(jīng)重命名改正:
二、編寫dockerfile文件并執(zhí)行docker build命令構(gòu)建鏡像
前提:安裝配置好docker,可參考我這篇 基于CentOS7安裝配置docker與docker-compose。
2.1 編寫并上傳dockerfile文件
我們使用命令 docker build , 從零開始來創(chuàng)建一個(gè)新的鏡像。為此,我們需要?jiǎng)?chuàng)建一個(gè) dockerfile 文件,其中包含一組指令來告訴 Docker 如何構(gòu)建我們的鏡像。每一個(gè)指令都會(huì)在鏡像上創(chuàng)建一個(gè)新的層,每一個(gè)指令的前綴都必須是大寫的。
第一條FROM,指定使用哪個(gè)鏡像源
RUN 指令告訴docker 在鏡像內(nèi)執(zhí)行命令,安裝了什么。。。
然后,我們使用 dockerfile 文件,通過 docker build 命令來構(gòu)建一個(gè)鏡像。
注意:dockerfile文件要寫上Linux的系統(tǒng)版本,我這里使用的是CentOS的系統(tǒng),查詢linux系統(tǒng)版本可參考我這篇
查看CentOS版本及系統(tǒng)位數(shù)與設(shè)置CentOS 7.9 2009 防火墻配置放開端口的命令與過程
dockerfile文件內(nèi)容:
# 建立一個(gè)新的鏡像文件,配置模板:新建立的鏡像是以centos為基礎(chǔ)模板
# 因?yàn)閖dk必須運(yùn)行在操作系統(tǒng)之上
#每一個(gè)指令都會(huì)在鏡像上創(chuàng)建一個(gè)新的層,每一個(gè)指令的前綴都必須是大寫的。
#第一條FROM,指定使用哪個(gè)鏡像源
FROM centos:7.9.2009
#維護(hù)者 作者 郵箱
MAINTAINER djcking <djc**4*****@qq.com>
#RUN 指令告訴docker 在鏡像內(nèi)執(zhí)行命令,安裝了什么
#創(chuàng)建一個(gè)新目錄來存儲(chǔ)jdk文件
RUN mkdir "/usr/local/java"
#將jdk壓縮文件復(fù)制到鏡像中,它將自動(dòng)解壓縮tar文件
ADD jdk-11.0.19_linux-x64_bin.tar.gz /usr/local/java
# 設(shè)置時(shí)區(qū)
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 設(shè)置環(huán)境變量
ENV JAVA_HOME /usr/local/java/jdk-11.0.19
ENV PATH $JAVA_HOME/bin:$PATH
# VOLUME 指定了臨時(shí)文件目錄為/tmp
# 其效果是在主機(jī) /var/lib/docker 目錄下創(chuàng)建了一個(gè)臨時(shí)文件,并鏈接到容器的/tmp
VOLUME /tmp
上傳dockerfile文件:
建議:dockerfile文件和jdk包放在同一個(gè)文件夾下,這樣不用build時(shí)用-f參數(shù)指定dockerfile的位置。
2.2 執(zhí)行docker build命令構(gòu)建鏡像
dockerfile文件、鏡像-IMAGE,容器-CONTAINER三者的關(guān)系(個(gè)人學(xué)習(xí)理解):
1、docker build命令使用dockerfile文件中的配置來構(gòu)建鏡像-IMAGE;
2、docker run命令運(yùn)行構(gòu)建好的鏡像-IMAGE來啟動(dòng)容器-CONTAINER;
3、鏡像-IMAGE是死的,因?yàn)樗举|(zhì)上就是為了生成容器而存在的,容器-CONTAINER是活的,因?yàn)樽罱K運(yùn)行服務(wù)時(shí)使用的是容器-CONTAINER。
構(gòu)建鏡像命令-docker build:
參數(shù)說明:
-t :指定要?jiǎng)?chuàng)建的目標(biāo)鏡像名
. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對(duì)路徑
//進(jìn)入存放jdk包與dockerfile的目錄mydockerfile
cd mydockerfile
//-t 給新構(gòu)建的鏡像取名為java, 并設(shè)定版本為11
//注意最后有個(gè)點(diǎn),代表使用當(dāng)前路徑的 Dockerfile 進(jìn)行構(gòu)建
//成功執(zhí)行下面的docker build命令后,docker images 命令中,TAG就是11(鏡像標(biāo)簽或者版本),Repository就是java,為鏡像倉(cāng)庫源名。
docker build -t java:11 .
通過上圖使用docker images命令 查看創(chuàng)建的jdk鏡像已經(jīng)在列表中存在,IMAGE ID也成功生成了。
docker images 各參數(shù)說明:
REPOSITORY:表示鏡像的倉(cāng)庫源名
TAG:鏡像的標(biāo)簽或版本
IMAGE ID:鏡像ID
CREATED:鏡像創(chuàng)建時(shí)間
SIZE:鏡像大小
同一鏡像倉(cāng)庫源可以有多個(gè) TAG,代表這個(gè)倉(cāng)庫源的不同個(gè)版本,如 jdk倉(cāng)庫源里,有 11、12、13....20 等多個(gè)不同的版本,我們使用 REPOSITORY:TAG 來定義并區(qū)分不同的鏡像,例如jdk:11,jdk:12,jdk:13,jdk:20等。
三、通過鏡像創(chuàng)建啟動(dòng)容器并校驗(yàn)
3.1 通過鏡像創(chuàng)建啟動(dòng)容器
//運(yùn)行該鏡像
//此命令使用鏡像java:11,創(chuàng)建并啟動(dòng)容器,執(zhí)行成功會(huì)根據(jù)算法返回一個(gè)字符串,是CONTAINER ID,即辨別容器的ID。
// --name djcjdk11 代表一個(gè)別名。
docker run -id --name djcjdk11 java:11
//docker run 參數(shù)說明:
-i:交互式操作
-d:后臺(tái)運(yùn)行
-t:終端。
docker ps命令查看正運(yùn)行的容器(默認(rèn)只顯示CONTAINER ID的前12位,完整的容器ID有64位,但已經(jīng)足以區(qū)分不同的容器):
3.2 校驗(yàn)
因?yàn)槲覀儎?chuàng)建的 djcjdk11容器是的本源包是 jdk-11.0.19_linux-x64_bin.tar.gz,所以校驗(yàn)即檢查JDK的版本。
//docker exec:推薦大家使用 docker exec 命令,因?yàn)榇嗣顣?huì)退出容器終端,但不會(huì)導(dǎo)致容器的停止。
//可以使用NAMES即djcjdk11或者CONTAINER ID的前四位或完整的CONTAINER ID
//以下6個(gè)命令任意一個(gè)皆可
docker exec -it NAMES bash
docker exec -it CONTAINER ID bash
docker exec -it CONTAINER ID前幾位 bash
即
docker exec -it djcjdk11 bash
docker exec -it 4001866f057c bash
docker exec -it CONTAINER ID前幾位 bash ,如 docker exec -it 4001 bash
或者
docker exec -it NAMES /bin/bash
docker exec -it CONTAINER ID /bin/bash
docker exec -it CONTAINER ID前幾位 /bin/bash
即
docker exec -it djcjdk11 /bin/bash
docker exec -it 4001866f057c /bin/bash
docker exec -it CONTAINER ID前幾位 /bin/bash,如 docker exec -it 4001 /bin/bash
//檢測(cè)Java版本 java --version 或java -version
java --version 或java -version
四、命令截圖一覽
4.1 命令
//1-進(jìn)入文件夾
cd /home/mydockerfile
//2-構(gòu)建鏡像命令
//-t 給新構(gòu)建的鏡像倉(cāng)庫源取名為java, 并設(shè)定版本或者標(biāo)簽為為11 即TAG
docker build -t java:11 .
//3-查看images
docker images
//4-啟動(dòng)運(yùn)行鏡像
//此命令使用鏡像java:11,創(chuàng)建并啟動(dòng)容器,執(zhí)行成功會(huì)根據(jù)算法返回一個(gè)字符串,是CONTAINER ID,即辨別容器的ID。
docker run -id --name djcjdk11 java:11
//5-查看正在運(yùn)行的容器
docker ps
//6-進(jìn)入容器
//docker exec:推薦大家使用 docker exec 命令,因?yàn)榇嗣顣?huì)退出容器終端,但不會(huì)導(dǎo)致容器的停止。
docker exec -it djcjdk11 bash
或
docker exec -it 4001 /bin/bash
//7-檢測(cè)Java版本 java --version 或java -version
java --version 或java -version
--------其他命令---------
//關(guān)閉容器
//這里使用CONTAINER ID的前四位
docker stop 4001
//docker logs CONTAINER ID或者NAMES 可以查看容器內(nèi)部的標(biāo)準(zhǔn)輸出。
//-f: 讓 docker logs 像使用 tail -f 一樣來輸出容器內(nèi)部的標(biāo)準(zhǔn)輸出。
//補(bǔ)充:tail 命令可用于查看文件的內(nèi)容,有一個(gè)常用的參數(shù) -f 常用于查閱正在改變的日志文件。
//tail -f filename 會(huì)把 filename 文件里的最尾部的內(nèi)容顯示在屏幕上,并且不斷刷新,只要 filename 更新就可以看到最新的文件內(nèi)容。
docker logs 4001或者 docker logs djcjdk11
docker logs -f 4001或者docker logs -f djcjdk11
鏡像和容器更多操作可以參考我這兩篇文章:
Docker基本操作之刪除容器Container和刪除鏡像IMAGE
Docker容器基本操作之啟動(dòng)-停止-重啟
4.2 截圖
文章來源:http://www.zghlxwxcb.cn/news/detail-773808.html
五、參考資料
Docker 鏡像使用
Docker 容器使用
Docker Dockerfile
Docker Compose
Docker 倉(cāng)庫管理
Linux tail 命令
查看CentOS版本及系統(tǒng)位數(shù)與設(shè)置CentOS 7.9 2009 防火墻配置放開端口的命令與過程
實(shí)戰(zhàn):用dockerfile創(chuàng)建鏡像實(shí)現(xiàn)springboot項(xiàng)目容器化
實(shí)戰(zhàn):用docker-compose容器化springboot項(xiàng)目
【Docker】手動(dòng)構(gòu)建 OracleJDK11 鏡像
【SpringBoot + Docker】編寫Dockerfile安裝jdk11.0.3,并部署SpringBoot項(xiàng)目
Docker - 安裝openjdk11并啟動(dòng)運(yùn)行
Docker之dockerfile制作jdk鏡像
docker 文件編寫,和jdk11運(yùn)行java的Dockerfile文件
Linux rm命令 刪除文件夾文章來源地址http://www.zghlxwxcb.cn/news/detail-773808.html
到了這里,關(guān)于使用dockerfile手動(dòng)構(gòu)建JDK11鏡像運(yùn)行容器并校驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!