寫在前面
- 公司專案去
Oracle用teleDB,都在容器上部署,所以系統的學習下,之前著急忙慌的, - 本博客筆記屬于
實戰類,適用于小白 - 博文有錯誤的地方,或者關于博文的問題,可以留言討論,
- 生活加油!另 關于Docker的一些基本命令,小伙伴不熟悉的可以移步到我的筆記Docker、Podman 容器“掃盲“ 學習筆記
我所渴求的無非是將心中脫穎欲出的本性付諸生活,為什么竟如此艱難呢? ----黑塞
安裝 Docker
Win 10 安裝 Docker
-
具體步驟可以參考菜鳥教程
-
因為
Docker是運行在Linux上的所以需要安裝虛擬機,win10 默認有Hyper-V,不需要安裝,還需要安裝一個Linux內核,可以參考適用于 Linux 的 Windows 子系統安裝指南 (Windows 10)
關于 WSL 簡單了解下
WSL允許您直接在Windows上運行Linux環境(包括命令列工具和應用程式),而不需要傳統虛擬機或雙引導設定的開銷,WSL特別有助于web開發人員以及使用Bash和linux優先工具(例如,Ruby, Python)在Windows上使用它們的工具鏈,并確保開發環境和生產環境之間的一致性,當您在Windows上安裝Linux版本時,您將獲得一個完整的Linux環境,WsL1與Windows是隔離的- Ul是終端,你可以安裝工具,在不修改或中斷Windows安裝的情況下,將語言和編譯器匯入Linux環境,我們推薦使用WsL2,
完成上述步驟之后,可以啟動docker:

##這是一個基本docker教程
git clone https://github.com/docker/getting-started.git
cd getting-started
docker build -t docker101tutorial .
之后啟動點擊restart 完成Dokcer啟動
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3Ak86kxZ-1627389782504)(imgclip_1.png "imgclip_1.png")]](https://img.uj5u.com/2021/07/30/251364301016031.png)
PS C:\Users\lenovo> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
PS C:\Users\lenovo> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

Linux 安裝 Docker
安裝條件:
- 需要64位作業系統,至少 RHEL6.5 以上的版本,強烈推薦 RHEL7
- docker安裝時,內核要求在3.0以上,RHEL7的內核默認在3.0以上,不滿足可以單獨升級系統內核,
uname -r或者cat /proc/version - 關閉防火墻 (不是必須):firewalld【RHEL7使用】,Iptables【RHEL6使用】,Docker安裝時,會自動的接管防火墻,并向防火墻里添加配置,如果防火墻存在,會產生沖突,
安裝步驟:
- 卸載防火墻
yum remove -y firewalld-* - 安裝軟體包
yum install docker - 開啟路由轉發
/etc/sysctl.conf net.ipv4.ip_forward=1使用sysctl -p讓配置立刻生效(否則需要重新虛擬機)docker是通過虛擬互動機來進行通訊的,需要開啟路由轉發的功能,

軟體的 BUG : iptables -nL FORWARD 版本 大于 1.12 時會設定 FORWARD 的默認規則,被設定為 DROP,對于有些docker的版本中,FORWARD鏈的規則被設定成了DROP,會造成容器和宿主機之間無法通訊,

解決辦法:修改 /lib/systemd/system/docker.server

多載組態檔,重啟服務
systemctl daemon-reload
systemctl restart docker

基于Docker構建CentOS_7&JDK_1.8&Tomcat8.5 的鏡像,
使用 commit構建基礎環境鏡像:拉取一個centOS_7&jdk_1.8的鏡像,基于該鏡像啟動容器后裝一個tomcat8.5,另存為一個新鏡像,
PS E:\docker> docker pull docker.io/mamohr/centos-java
Using default tag: latest
latest: Pulling from mamohr/centos-java
469cfcc7a4b3: Pull complete
6c9a0d503960: Pull complete
Digest: sha256:11988ca920fe0a3f3dd382b62690d993e843b668b1fb7f31142494f1e7b5d136
Status: Downloaded newer image for mamohr/centos-java:latest
docker.io/mamohr/centos-java:latest
PS E:\docker> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 7 months ago 209MB
mamohr/centos-java latest e041132b8b32 3 years ago 577MB
- 根據鏡像啟動容器
docker run -it --privileged mamohr/centos-java:latest /usr/sbin/init
# 進入容器
docker exec -it f6209e004f2f /bin/bash
- 下載一個tomcat
[root@f6209e004f2f /]# cd /tmp/;wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz
--2021-07-27 02:52:02-- https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 101.6.8.193, 2402:f000:1:408:8100::1, ...
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10561246 (10M) [application/octet-stream]
Saving to: 'apache-tomcat-8.5.69.tar.gz'
100%[==================================================================================>] 10,561,246 7.44MB/s in 1.4s
2021-07-27 02:52:07 (7.44 MB/s) - 'apache-tomcat-8.5.69.tar.gz' saved [10561246/10561246]
[root@f6209e004f2f tmp]# tar -zxvf apache-tomcat-8.5.69.tar.gz
[root@f6209e004f2f tmp]# ls
apache-tomcat-8.5.69 apache-tomcat-8.5.69.tar.gz hsperfdata_root ks-script-hE5IPf yum.log
[root@f6209e004f2f tmp]# mkdir /usr/tomcat8.5 ; mv apache-tomcat-8.5.69 /usr/tomcat8.5
[root@f6209e004f2f tmp]# cd /usr/tomcat8.5/
[root@f6209e004f2f tomcat8.5]# ls
apache-tomcat-8.5.69
[root@f6209e004f2f tomcat8.5]# chown -hR tomcat:tomcat apache-tomcat-8.5.69
chown: invalid user: 'tomcat:tomcat'
#create tomcat user and group
[root@f6209e004f2f tomcat8.5]# groupadd tomcat;useradd -g tomcat -s /sbin/nologin tomcat
[root@f6209e004f2f tomcat8.5]# chown -hR tomcat:tomcat apache-tomcat-8.5.69
- 添加tomcat自啟動systemd服務單元檔案
vim /lib/systemd/system/tomcat.service
#=====
[Unit]
Description=Apache Tomcat 8.5
After=syslog.target network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/java/latest/jre
## tomcat as link -s
Environment=CATALINA_PID=/usr/tomcat8.5/apache-tomcat-8.5.69/temp/tomcat.pid
Environment=CATALINA_HOME=/usr/tomcat8.5/apache-tomcat-8.5.69
Environment=CATALINA_BASE=/usr/tomcat8.5/apache-tomcat-8.5.69
Environment='CATALINA_OPTS=-Xms512M -Xmx4096M -server -XX:+UseParallelGC'
Environment='CATALINA_OPTS=-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/usr/tomcat8.5/apache-tomcat-8.5.69/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 加載systemd服務單元配置,并啟動測驗,
[root@cdd43dfcdf88 system]# systemctl daemon-reload
[root@cdd43dfcdf88 system]# systemctl start tomcat
[root@cdd43dfcdf88 system]#
[root@cdd43dfcdf88 system]# systemctl enable tomcat
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.
[root@cdd43dfcdf88 system]#
[root@cdd43dfcdf88 system]# systemctl status tomcat
● tomcat.service - Apache Tomcat 8.5
Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2021-07-27 08:24:19 UTC; 18s ago
Process: 1179 ExecStart=/usr/tomcat8.5/apache-tomcat-8.5.69/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1186 (java)
CGroup: /docker/cdd43dfcdf8828b963c7b761ba2301fbd14643d99a44232badefa0a641fde60b/system.slice/tomcat.service
└─1186 /usr/java/latest/jre/bin/java -Djava.util.logging.config.file=/usr/tomcat8.5/apache-tomcat-8.5.69/conf/logging.properties -Djava.util....
? 1186 /usr/java/latest/jre/bin/java -Djava.util.logging.config.file=/usr/tomcat8.5/apache-tomcat-8.5.69/conf/logging.properties -Djava.util....
Jul 27 08:24:18 cdd43dfcdf88 systemd[1]: Starting Apache Tomcat 8.5...
Jul 27 08:24:19 cdd43dfcdf88 systemd[1]: Started Apache Tomcat 8.5.
[root@cdd43dfcdf88 system]# curl http://127.0.0.1:8080
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/8.5.69</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
.,,,,
- tomcat 沒有起來問題排查,一般為加載腳本的路徑錯誤,或者說是設計到讀寫的權限問題,
[root@cdd43dfcdf88 bin]# systemctl start tomcat
Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details.
## 日志訊息寫到文本里,在文本里排查問題: cat log | grep tomcat
journalctl -xe >> log
- 生成新的鏡像
[root@f6209e004f2f /]# yum clean all
Loaded plugins: fastestmirror, ovl
Cleaning repos: base extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@f6209e004f2f /]# exit
exit
PS E:\docker> docker commit cdd43dfcdf88 centos7_java8_tomcat8.5:latest
sha256:b8c89e810729ae3f9870bac9273f883f9f0bb5ca88ffec7b84f88b64451d805b
PS E:\docker> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7_java8_tomcat8.5 latest b8c89e810729 7 seconds ago 700MB
centos7_java8_tomcat8.5_base latest e9e848ab97f6 2 hours ago 679MB
centos latest 300e315adb2f 7 months ago 209MB
mamohr/centos-java latest e041132b8b32 3 years ago 577MB
hub.c.163.com/housan993/centos7_jdk8 latest 0f793ba5281b 3 years ago
- 使用docker run 來驗新的容器
docker> docker run -it --privileged mamohr/centos-java:latest /usr/sbin/init

- 備份做好的鏡像
PS E:\docker> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7_java8_tomcat8.5 latest b8c89e810729 39 minutes ago 700MB
centos7_java8_tomcat8.5_base latest e9e848ab97f6 3 hours ago 679MB
centos latest 300e315adb2f 7 months ago 209MB
mamohr/centos-java latest e041132b8b32 3 years ago 577MB
hub.c.163.com/housan993/centos7_jdk8 latest 0f793ba5281b 3 years ago 356MB
PS E:\docker> docker save centos7_java8_tomcat8.5:latest -o centos7_java8_tomcat8.5.tar
通過 Dockerfile 創建服務鏡像
這里的話,我們用之前的一個鏡像為基礎鏡像,發布一個web應用,如果有使用docker客戶端工具,那么每次可以遠程直接替換,war實作部署, UAWeb.war 是我們自己的應用war包,
- 撰寫
Dockerfile檔案:
FROM centos7_java8_tomcat8.5:latest
MAINTAINER LIRUILONG
COPY UAWeb.war /usr/tomcat8.5/apache-tomcat-8.5.69/webapps/UAWeb.war
EXPOSE 8080
- 創建新的鏡像
docker build -t uag_image .

- 因為容器的特殊性,所以資料沒辦法持久,所以一般會通過映射宿主機的方式,
# 給一下權限
chmod 777 /usr/tomcat8.5/apache-tomcat-8.5.69/logs
docker run -it -v /logs:/usr/tomcat8.5/apache-tomcat-8.5.69/logs --privileged uag_image:latest /usr/sbin/init
- 發布docker服務,同樣需要和宿主機做埠映射,
docker run -it -v /logs:/usr/tomcat8.5/apache-tomcat-8.5.69/logs -p 9090:8080 --privileged uag_image:latest /usr/sbin/init
關于Docker的一些基本命令,小伙伴不熟悉的可以移步到我的筆記 Docker、Podman 容器“掃盲“ 學習筆記
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290991.html
標籤:其他
上一篇:gitlab基本配置和使用
下一篇:優化的三子棋
