场景:云服务器上已经搭建了一个Apache服务器,但是我想在不干扰的情况下再搭建一个Tomcat服务器。想到Docker技术能够实现,就想着在docker上搭建一个Tomcat服务器对外提供8080的端口访问;

为了省事,我没有去编写docker-file,也没有编写docker-compose,对我来说最高效的方式莫过于直接从dockerhub上拉去一个centos的镜像,然后在上面修改并保存为新的镜像;因此步骤如下:

  1. 拉centos官方镜像并配置国内源
  2. 安装依赖+java+mysql+tomcat并配置
  3. 保存镜像并提交到自己的dockerhub

二话不说,直接上干货;

拉取镜像并配置源

首先拉镜像并启动镜像申城容器后进入容器内部;

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

这个时候是什么都没有的,我们需要先配置环境,在配置环境前最先需要的是配置国内的源(不然太慢了);后面的连接改成你的centos版本,比如你的是centos7,那么就是Centos-7.repo;

默认情况下,在第一步执行的是 /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

修改密码:查看初始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

Docker定制mysql+Tomcat镜像相关推荐

  1. 由Docker的MySQL官方镜像配置的容器无法启动问题解决办法(修改配置后无法启动)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 为了方便阅读,我在原文基础上加了一些批注,说明我自己的情况,用红色标示. 这篇文章记录了我在使用 D ...

  2. kitematic利用docker下载mysql的镜像

    -> 点击mysql的 "Create" 按钮. kitematic利用docker下载mysql的镜像 点击右侧"Setting" 按钮, 在" ...

  3. Linux下使用Docker做mysql的镜像部署

    接着上一篇文档,上一篇文档讲述了如何使用Docker在Linux环境中部署一个javaWeb项目,这篇文档来讲一下如何做mysql镜像部署. 一.拉取mysql镜像 Docker中执行命令: # do ...

  4. docker命令介绍,镜像制作,容器启动,进入容器操作等

    1:在linux安装docker环境一键安装命令: curl -sSL https://get.daocloud.io/docker | sh 2:查看 Docker 是否安装成功: docker v ...

  5. docker 安装mysql 实战文档_在docker上安装运行mysql实例

    ps:实验环境是:CentOS Linux release 7.3  64位 1.获取mysql镜像 从docker hub的仓库中拉取mysql镜像 docker pull mysql 查看镜像 d ...

  6. 在WSL下安装MYSQL的实验报告_Linux(wsl)安装docker和mysql主从搭建

    开始安装 参考文档:https://www.jianshu.com/p/3eb1e178f51b (最后使用windows本地docker,wsl中代理,因为当前版本不支持,最新版本据说支持了,没有尝 ...

  7. docker 安装mysql,不区分大小写配置

    //拉取mysql镜像 docker pull mysql //查看镜像 docker images 启动mysql docker run --name mysq.db -p 3306:3306 -e ...

  8. Docker部署mysql主从模式

    文章目录 1. 获取mysql镜像 2. 拉取mysql镜像 3. 启动mysql容器 4. 使用Navicat连接mysql 5. 更改my.cnf配置 7.在master数据库(主库)中创建同步用 ...

  9. Docker+Jenkins+GIT+Tomcat实战持续化集成

    Docker基础教程可参考:容器Docker详解 Jenkins基础知识可参考:jenkins笔记(1) Git基础知识可参考:GIT笔记 文件脚本内容参考:junsansi,可以根据实际项目具体修改 ...

最新文章

  1. Cocos creator加载场景、加载场景回调、预加载场景
  2. OpenCV-Python:K值聚类
  3. leetcode算法题--Can I Win
  4. 如何访问自定义键值的二维数组
  5. Python列表之for循环应用
  6. js下载文件及命名(兼容多浏览器)
  7. C/C++程序语言概念
  8. 【大数据】企业级大数据技术体系概述
  9. 【实战篇】| 模拟 20 万数据快速查询 IP 归属地
  10. python mysql数据库操作grid控件_Python学习笔记_02:使用Tkinter连接MySQL数据库实现登陆注册功能...
  11. 出现的是乱码_cad状态栏出现了方框乱码怎么办?
  12. 第4章 MySQL数据库结构优化
  13. 使用 Laravel sharedLock 与 lockForUpdate 进行数据表行锁
  14. sv_labs学习笔记——sv_lab4(System Verilog)
  15. java 基础知识2
  16. Java 如何使用protobuf
  17. LINUX下Android NDK下载并配置
  18. Unity TimeLine学习笔记
  19. kmeans python interation flag_Python自学笔记-第六章面向对象编程(下)
  20. EBS 取消PO订单、订单行、订单发运行

热门文章

  1. 关于支付宝小程序在 安卓机(米10) 倒计时问题
  2. C# 实现卡布列克数
  3. android解决ScrollView嵌套ListView不能下拉刷新
  4. 程序员必须会的基本算法7-Kruskal算法(库拉斯卡尔算法)
  5. RIL 机制---消息从RIL到RILJ
  6. IT主管要管理好一个部门两种最有效的方法
  7. 51.网页设计规则#1_字体设计
  8. abiword_AbiWord是适用于Windows,Linux和Mac的免费文字处理器
  9. Spring 事务事件监控及实现原理
  10. 【正点原子STM32连载】第四十二章 FLASH模拟EEPROM实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1