mysql國內鏡像為何比官網小,Docker定制mysql+Tomcat鏡像

 2023-12-06 阅读 34 评论 0

摘要:場景:云服務器上已經搭建了一個Apache服務器,但是我想在不干擾的情況下再搭建一個Tomcat服務器。想到Docker技術能夠實現,就想著在docker上搭建一個Tomcat服務器對外提供8080的端口訪問; 為了省事,我沒有去編寫docker-file,也沒有編

場景:云服務器上已經搭建了一個Apache服務器,但是我想在不干擾的情況下再搭建一個Tomcat服務器。想到Docker技術能夠實現,就想著在docker上搭建一個Tomcat服務器對外提供8080的端口訪問;

為了省事,我沒有去編寫docker-file,也沒有編寫docker-compose,對我來說最高效的方式莫過于直接從dockerhub上拉去一個centos的鏡像,然后在上面修改并保存為新的鏡像;因此步驟如下:

  1. 拉centos官方鏡像并配置國內源
  2. 安裝依賴+java+mysql+tomcat并配置
  3. 保存鏡像并提交到自己的dockerhub

mysql國內鏡像為何比官網小?二話不說,直接上干貨;

拉取鏡像并配置源

首先拉鏡像并啟動鏡像申城容器后進入容器內部;

$ docker pull centos
$ docker run -itd   --privileged --name mycentos centos /usr/sbin/init
$ docker exec -it mycentos /bin/bash

這個時候是什么都沒有的,我們需要先配置環境,在配置環境前最先需要的是配置國內的源(不然太慢了);后面的連接改成你的centos版本,比如你的是centos7,那么就是Centos-7.repo;

docker導入本地鏡像、默認情況下,在第一步執行的是 /bin/bash,而因為docker中的bug,無法使用systemctl
所以我們使用了 /usr/sbin/init 同時 --privileged 這樣就能夠使用systemctl了,但覆蓋了默認的 /bin/bash
因此我們如果想進入容器 就不能再使用 docker attach myCentos
而只能使用 docker exec -it myCentos /bin/bash 因為 exec 可以讓我們執行被覆蓋掉的默認命令 /bin/bash

$ java -version
bash: java: command not found
$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
$ yum makecache
$ yum update -y

安裝依賴+java+mysql+tomcat

Centos的yum有個好處是會自動安裝需要的依賴,比如我想要安裝java,直接yum install就能搞定;

  1. 安裝java
$ yum install -y java
$ java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
  1. 安裝mysql并配置
$ yum install -y mysql-server
$ systemctl start  mysqld.service

查看狀態:保險起見我們看下mysql的運行狀態;

$ systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database serverLoaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)Active: active (running) since Fri 2020-08-14 09:25:58 UTC; 46s ago

docker構建自己的鏡像?修改密碼:查看初始root密碼,并修改root密碼(不修改啥都干不了)

$ grep "password" /var/log/mysqld.log
$ mysql -uroot -p
$ ALTER USER 'root'@'localhost' IDENTIFIED BY 'yb123456';
Query OK, 0 rows affected (0.02 sec)

設置遠程連接:默認安裝后,MySQL禁止遠程連接,所以需要打開該權限。我這里都是在同一臺機器上,所以可以不設置(注意,我這里直接用了root為了安全起見建議創建一個新的mysql用戶);

mysql> use mysql
mysql> update user set host = '%' where user = 'root';
  1. 安裝tomcat并配置
    首先要下載tomcat,為了方便我直接貼出來下載地址(這種方式有點慢,建議直接通過搭建ssh再通過ftp服務器上傳);
$ curl -o http://ftp.tc.edu.tw/pub/Apache/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.zip
或者下這個
$ curl -O http://ftp.tc.edu.tw/pub/Apache/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz

下載完之后就是解壓;

$ tar -xf apache-tomcat-8.5.57.tar.gz  -C /home/tomcat

設置開機啟動,通過使用rc.local文件實現,然后啟動tomcat

#rc.local 增加如下代碼
$ /home/tomcat/apache-tomcat-8.5.57/bin/startup.sh
$ ./startup.sh

保存鏡像

將安裝好的容器打包為新的鏡像,便于以后使用:

$ docker commit -a "zhonglunshun" -m "a tomcat server with java and mysql installed" centos8web  zhonglunshun/web
# 推到dockerhub
$ docker push zhonglunshun/web

解釋一下:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的鏡像作者;
-c :使用Dockerfile指令來創建鏡像;
-m :提交時的說明文字;
-p :在commit時,將容器暫停。

也可以直接導出到本地

# 導出打成本地 tar 包
docker export -o tomcat.tar a404c6c174a2
# 將 tar 包導入成鏡像
docker import tomcat.tar tomcat_images

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/193364.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息