準(zhǔn)備工作及安裝
https://docs.docker.com/engine/install/centos/
1.4 安裝存儲庫
1)安裝docker需要的工具包
我們可以通過修改daemon.json 文件添加其它的倉庫地址,進(jìn)行鏡像上傳和下載。
修改此配置文件一定要先重啟daemon文件、重啟docker。
設(shè)置開機自啟。
Docker的基本命令使用
2.1 docker images
可以查看現(xiàn)有的鏡像上面的參數(shù)分別是:
鏡像名、鏡像標(biāo)簽、鏡像id、鏡像創(chuàng)建時間、鏡像大小。
2.2 docker ps
上面的參數(shù)分別是:
容器ID、鏡像ID、啟動容器的命令、容器創(chuàng)建時間、容器狀態(tài)、容器端口信息、容器名字。
docker ps -a 會顯示所有的容器包括沒有運行的容器或者已經(jīng)停止的容器。
2.3 docker run
由上圖可知docker run 后面接鏡像ID 或者 鏡像名:鏡像標(biāo)簽。
-d參數(shù)使容器后臺啟動,會輸出容器的長ID。
-p參數(shù)指定虛擬機對容器的端口的映射(虛擬機端口:容器端口)。
--name參數(shù)指定容器的名字,不指定名字系統(tǒng)會隨機指定名字。
2.4 docker exec
tomcat是容器名稱,填寫容器ID也是可以的。
進(jìn)入后臺啟動的容器或者正在運行的容器。
2.5 docker attach
可以看到容器啟動命令的終端。
2.6 docker rm /docker rmi
docker rm 刪除容器;
docker rmi 刪除鏡像。
兩者后面一般接需要刪除的容器或者鏡像的ID,刪除鏡像可以接鏡像名:鏡像標(biāo)簽。
docker rm -v $(docker ps -aq -f status=exited)
直接刪除所有狀態(tài)為exited的容器。
docker rmi -v $(docker images -aq )
當(dāng)出現(xiàn)如下報錯時,是指還有鏡像與要刪除的鏡像有關(guān)聯(lián),無法刪除。
docker image inspect --format={{.RepoTags}} {{.Id}} {{.Parent}} $(docker image ls -q --filter since=c69ebce270d4)
這樣回輸出鏡像名稱:鏡像標(biāo)簽,和兩個長ID前面為父鏡像ID,后面為子鏡像ID。
docker stop /docker start/docker restart/docker pause/docker unpause
2.7 docker stop /docker start/docker restart/docker pause/docker unpause
分別是停止容器,啟動容器,重啟容器,暫停容器,開啟容器。
docker restart 是先執(zhí)行docker stop 在執(zhí)行docker start。
制作鏡像(以tomcat為例)
鏡像制作有兩種方式分別是docker commit 和docker build。我們下面所涉及的是通過Dockerfile來制作鏡像。
以tomcat9.0.67版本的包為例子制作鏡像。
3.1 Dockerfile文件
Dockerfile文件是docker build 定制鏡像的基礎(chǔ)。
docker build -f xxx -t yyy:1.0 .
最后的 . 表示會調(diào)用當(dāng)前目錄的包。
-f 參數(shù)是指定Dockerfile的路徑(如果是在當(dāng)前目錄下不需要指定;如果是在當(dāng)前目錄下且文件名非Dockerfile,需要指定文件)
-t 參數(shù)是指將制作好的鏡像命名和標(biāo)簽(如果不寫標(biāo)簽,標(biāo)簽將為latest)
不過在從網(wǎng)上的公共庫中下載的鏡像的標(biāo)簽為latest是指最新版本。
FROM 已centos:7為基礎(chǔ),制作鏡像。
ADD 將jdk,tomcat 包放在/usr/local下,ADD會直接解壓包。
COPY 和ADD用法一樣。
COPY和ADD都是復(fù)制文件到鏡像中,他們區(qū)別在于,如果ADD指定的文件是歸檔文件將會解壓出來。
RUN 運行容器指定的命令,一般是下載一些必要的包,和一些基本的操作;
USER tomcat 這個是指將會以tomcat用戶運行,不會是root用戶,前提有這個用戶
ENV 配置環(huán)境變量;
WORKDIR 設(shè)置工作目錄;
EXPOSE 設(shè)置暴露的端口,要與tomcat設(shè)置的端口一致;
CMD 容器啟動使的命令;
ENTRYPOINT 容器啟動時的命令;
Dockerfile里面可以有多個CMD和ENTRYPOINT命令,但是都是只有最后一個生效;CMD會被docker run后面的參數(shù)替換;CMD或docker run之后的參數(shù)會被當(dāng)做參數(shù)傳遞給ENTRYPOINT。
在制作鏡像的時候盡量少一些命令,每一個RUN、ENV等都會使鏡像的層數(shù)增加,這是不符合鏡像的原則。
3.2 準(zhǔn)備好需要的包
3.3 改包的名字(防止在使用鏡像的時候暴露版本)
記住不能直接改壓縮包的名字,否則解壓出來的還是原來壓縮包的名字。
3.4 更改配置文件
(更改配置文件的要求要根據(jù)基線的要求)
1)修改端口
修改server.xml 文件:
這里包含了兩部分,第一部分是HTTP訪問頁面的配置:
port 是HTTP訪問的端口;
maxHttpHeaderSize是HTTP請求和響應(yīng)頭的最大量,以字節(jié)為單位;
maxThreads是tomcat啟動的最大線程數(shù);
minSpareThreads當(dāng)連接器第一次啟協(xié)創(chuàng)建線程的數(shù)目,確保至少有這么多的空閑線程可用;
maxSpareThreads允許存在空閑線程的最大數(shù)目;
enableLookups是否反查域名,若設(shè)為true, 則支持域名解析,可把 ip 地址解析為主機名;
acceptCount 當(dāng)所有的可能處理的線程都正在使用時,在隊列中排隊請求的最大數(shù)目,隊列已滿,任何接收到的請求都會被拒絕;
connectionTimeout設(shè)置連接的超時值,以毫秒為單位;
disableUploadTimeout允許Servlet容器,正在執(zhí)行使用一個較長的連接超時值,以使Servlet有較長的時間來完成它的執(zhí)行;
redirectPort在需要基于安全通道的場合,把客戶請求轉(zhuǎn)發(fā)到基于SSL的端口。
port是HTTPS訪問的端口,與第一部分的redirectPort相同;
maxThreads是tomcat啟動的最大線程數(shù);
SSLEnabled啟用HTTPS;
scheme設(shè)置協(xié)議的名字,SSL連接器設(shè)為”https”;
secure在SSL連接器可將其設(shè)置為true;
clientAuth設(shè)置是否對客戶端進(jìn)行HTTPS認(rèn)證;
sslProtocol要使用的SSL協(xié)議;
keystoreFile存儲了服務(wù)器HTTPS證書的keystore文件的位置;
keystorePass用于訪問指定keystore文件的密碼。
2)修改web.xml文件
修改結(jié)果如上,表示當(dāng) WEB 目錄中沒有默認(rèn)首頁如 index.html,index.jsp 等文件時,不會列出目錄內(nèi)容。
修改結(jié)果如上,表示禁用非法HTTP方法例如PUT、DELETE等。
添加如上字段,表示強制HTTP轉(zhuǎn)HTTPS訪問頁面。
添加如上字段,表示tomcat的頁面重定向,目錄是tomcat目錄下的/webapps/ROOT。
3)修改tomcat自帶的版本信息
首先進(jìn)入tomcat目錄下的lib目錄,找到改 catalina.jar。
將其解壓:
修改成如下:
如上是tomcat修改了版本之后日志的輸出。
4)禁用manager 權(quán)限
將tomcat目錄下的webapps目錄除了ROOT目錄全部刪除。
進(jìn)入ROOT目錄,并刪除全部文件和目錄。
創(chuàng)建如下文件:
error.jsp是錯誤重定向的頁面;
index.html 是當(dāng)無其他應(yīng)用運行時的訪問頁面。
首先我們的證書是通過jdk制作的,所以需要保證我們的虛擬機有jdk環(huán)境否則無法運行命令。
添加jdk環(huán)境:
使環(huán)境生效,并測試是否成功。
證書制作:
為了方便這里的所有的口令都是一致的,而且這里的文件沒有指定目錄,將會在當(dāng)前目錄下生成。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/129101.html
摘要:作者麥冬白鯨魚是什么入門教程容器是與系統(tǒng)其他部分隔離開的一系列進(jìn)程,運行這些進(jìn)程所需的所有文件都由另一個鏡像提供,從開發(fā)到測試再到生產(chǎn)的整個過程中,容器都具有可移植性和一致性??焖偃萜鞯膯雍蛣?chuàng)建無需啟動,可以實現(xiàn)秒級甚至毫秒級的啟動。 作者: 麥冬 白鯨魚 docker 是什么 Docker 入門教程 Docker容器是與系統(tǒng)其他部分隔離開的一系列進(jìn)程,運行這些進(jìn)程所需的所有文件都由...
摘要:由于隔離的進(jìn)程獨立于宿主和其它的隔離的進(jìn)程,因此也稱其為容器。設(shè)計時,就充分利用的技術(shù),將其設(shè)計為分層存儲的架構(gòu)。鏡像實際是由多層文件系統(tǒng)聯(lián)合組成。分層存儲的特征還使得鏡像的復(fù)用定制變的更為容易。前面講過鏡像使用的是分層存儲,容器也是如此。 本文只是對Docker的概念做了較為詳細(xì)的介紹,并不涉及一些像Docker環(huán)境的安裝以及Docker的一些常見操作和命令。 閱讀本文大概需要15分...
摘要:對測試的影響讓單元測試運行的更順暢單元測試驅(qū)動開發(fā)是一個很好的應(yīng)用程序開發(fā)方式,單元測試往往也是和代碼一起被提交到代碼倉庫中。但是很多單元測試通常依賴于很多其他服務(wù),而這些服務(wù)的標(biāo)準(zhǔn)化配置往往是一個難點,如數(shù)據(jù)庫的搭建防火墻的配置等。 傳統(tǒng)的軟件開發(fā)、測試、運維需要三個團(tuán)隊在三個不同的環(huán)境中進(jìn)行,而三個環(huán)境的不同引發(fā)了很多的問題。如:工作內(nèi)容的重復(fù);開發(fā)環(huán)境中可運行的程序在測試和運維環(huán)...
閱讀 1459·2023-01-11 13:20
閱讀 1812·2023-01-11 13:20
閱讀 1263·2023-01-11 13:20
閱讀 2005·2023-01-11 13:20
閱讀 4226·2023-01-11 13:20
閱讀 2879·2023-01-11 13:20
閱讀 1488·2023-01-11 13:20
閱讀 3807·2023-01-11 13:20