在Ubuntu22.04和24.04中安装Docker并安装和配置Java、Mysql、Tomcat

目录

一、准备工作

二、安装Docker

(一)安装Docker

(二)镜像设置

三、jdk-17.0.12的安装

三、docker中安装mysql

四、在Docter中安装Tomcat


一、准备工作

准备条件:服务器操作系统Ubuntu 22.04 64位 UEFI版/Ubuntu 24.04 64位

使用工具FinalShell4.3.10

Docker基本使用指令:

停止容器:docker stop mysql-8.4.5

启动容器:docker start mysql-8.4.5

重启容器:docker restart mysql-8.4.5

删除容器(需先停止):docker rm mysql-8.4.5

查看所有容器:docker ps -a

(注:标红部分只是以mysql为例,仅仅指代容器名称,红色部分也可以更换为容器id)

点击下载所需安装包

二、安装Docker

(一)安装Docker

1.打开FinalShell工具,创建一个SSH连接,使用自己的服务器IP连接。

2.卸载旧版本(如果没有安装过就不必执行)

指令:

复制代码
sudo apt-get remove docker docker-engine docker.io containerd runc

3.更新 apt 包索引。

指令:

复制代码
sudo apt-get update

4.安装 apt 依赖包,用于通过HTTPS来获取仓库

指令:

复制代码
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

出现以下提示请输入Y

若提示有其他包需要更新,可以执行指令:

复制代码
sudo apt-get upgrade

5.添加 Docker 的官方 GPG 密钥:

指令:

复制代码
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

6.使用以下指令设置稳定版仓库

指令:

复制代码
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

7.安装 Docker Engine-Community

更新 apt 包索引。

指令:

复制代码
sudo apt-get update

8.创建自定义Docker安装目录

指令:

复制代码
sudo mkdir -p /usr/local/docker

9.安装 Docker Engine-Community 到自定义路径

注意:Docker默认安装路径在/var/lib/docker,我们需要在安装后迁移数据

指令:

复制代码
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

如果出现以下请提示输入Y

如果出现以下提示,按回车同意就好。

10.停止Docker服务

指令:

复制代码
sudo systemctl stop docker

11.备份原有Docker数据(如果存在)

指令:

复制代码
if [ -d "/var/lib/docker" ]; then
    sudo cp -r /var/lib/docker /var/lib/docker.backup
fi

12.创建符号链接,将Docker数据目录指向自定义路径

指令:

复制代码
sudo ln -sf /usr/local/docker /var/lib/docker

(二)镜像设置

设置镜像的前提下需要保证Docker已经安装成功

1.启动Docker服务

指令:

复制代码
sudo systemctl start docker

2.查看Docker版本

指令:

复制代码
sudo docker version

3.进入Docker指令:

复制代码
cd /etc/docker

sudo mkdir -p /etc/docker

4.创建daemon.json配置文件

复制代码
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
    "registry-mirrors": [
        "https://docker.1panel.live",
        "https://hub.rat.dev"
    ],
    "data-root": "/usr/local/docker"
}
EOF

5.重新加载配置并重启Docker

指令:

复制代码
sudo systemctl daemon-reload

sudo systemctl restart docker

6.验证安装和配置

指令:

复制代码
sudo docker info | grep "Docker Root Dir"

7.拉取镜像hello-world镜像

指令:

复制代码
sudo docker pull hello-world

8.运行镜像

指令:

复制代码
sudo docker run hello-world

三、 jdk-17.0.12 的安装

1.准备工作 在/usr/local 路径下创建java文件夹,上传jdk压缩包jdk-17.0.12_linux-x64_bin.tar.gz

完成后如图所示:

2.解压jdk

指令:

复制代码
tar -zxvf jdk-17.0.12_linux-x64_bin.tar.gz

完成后如图所示:

3.配置环境变量

指令:

复制代码
vim /etc/profile

进去按i后左下脚会出现INSERT字样,这是就能修改配置文件,如图所示:

接下来将以下内容添加到最后并按esc键,此时左下角insert字样会消失:

复制代码
export JAVA_HOME=/usr/local/java/jdk-17.0.12
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

随后直接输入指令并回车强制保存 :

指令:

复制代码
:wq!

4.使配置环境生效

指令:

复制代码
source /etc/profile

5.检查是否安装成功

指令:

复制代码
java -version

如图所示便是安装成功:

三、 docker 中安装 mysql

1.查了docker是否运行

指令:

复制代码
sudo systemctl status docker

运行状态如图所示:

2.创建数据持久化存储目录

指令:

复制代码
sudo mkdir -p /usr/local/mysql/data
sudo chmod -R 777 /usr/local/mysql/data

进入路径:

复制代码
cd /usr/local/mysql 

如图所示:

3.在docker中拉取mysql8.4.5镜像,并等待所有进度条加载完成

指令:

复制代码
docker pull mysql:8.4.5

进度条图:

拉取成功图:

4.创建mysql容器

指令:

复制代码
sudo docker run -d \
--name mysql_8.4.5 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /usr/local/mysql/data:/var/lib/mysql \
mysql:8.4.5

代码解释:

--name mysql_8.4.5 \ 创建名字可以自定义

-p 4060:3306 \ 设置mysql端口 只用设置冒号前面的

-e MYSQL_ROOT_PASSWORD=123456 \ 设置root密码 现在是123456

注意:斜杠是换行的意思

成功如图所示:

5.检查步骤创建的容器是否运行

指令:

复制代码
sudo docker ps | grep mysql_8.4.5

运行状态如图所示:

6.启动mysql容器

指令:

复制代码
docker start mysql_8.4.5

7.进入mysql输入密码(密码由第四步设置)

指令:

复制代码
docker exec -it mysql_8.4.5 mysql -u root -p

输入密码界面:

成功进入后:

8.退出mysql

指令:

复制代码
exit

成功退出出现bye字样如图所示:

9.设置自动重启的策略

指令:

复制代码
docker update --restart=always mysql_8.4.5

成功如图所示:

10.检查是否设置成功

指令:

复制代码
docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' mysql_8.4.5

成功出现always字样如图所示:

11.开放步骤4的端口,并重新启动服务器

指令:

复制代码
sudo ufw allow 3306/tcp
sudo ufw allow 3306/udp
sudo ufw reload
sudo ufw status

12.再次查看容器是否运行(同步骤5)

指令:

复制代码
sudo docker ps | grep mysql_8.4.5

运行状态如图所示:

13.使用工具进行远程连接测试

四、在 Docter 中安装 Tomcat

准备条件:在服务器上需要配置安装成功Docter,在阿里云服务器上面产看是否配置端口(8080/8080),如果没有需要配置端口。

端口配置过程:

登录阿里云服务器---云服务器ESC---安全组---管理规则---手动添加(授权策略:允许,优先级:1,协议类型:自定义TCP,目的:8080/8080,授权对象:所有IPv4(0.0.0.0/0))

1.拉取Tomcat 9镜像(稳定版)

指令:

复制代码
docker pull tomcat:9

2.创建自定义目录并设置权限(核心路径:/usr/local/tomcat)

指令:

复制代码
mkdir -p /usr/local/tomcat/{webapps,conf,logs,temp,work}
chmod -R 777 /usr/local/tomcat  # 避免权限不足导致启动失败

3.启动Tomcat容器(正确挂载路径,避免配置文件丢失)

先启动一个临时容器,复制默认配置文件到宿主机

指令:

复制代码
docker run --name temp-tomcat tomcat:9 \
sh -c "mkdir -p /tmp/conf/ && cp -r /usr/local/tomcat/conf/* /tmp/conf/"

将临时容器的配置文件复制到宿主机自定义目录

指令:

复制代码
docker cp temp-tomcat:/tmp/conf/. /usr/local/tomcat/conf/

正式启动容器(带完整配置)

指令:

复制代码
docker run -d \
  --name tomcat9 \
  -p 8080:8080 \
  -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps \
  -v /usr/local/tomcat/conf:/usr/local/tomcat/conf \
  -v /usr/local/tomcat/logs:/usr/local/tomcat/logs \
  -v /usr/local/tomcat/temp:/usr/local/tomcat/temp \
  -v /usr/local/tomcat/work:/usr/local/tomcat/work \
  --restart=always \
  tomcat:9

4.复制默认欢迎页(解决访问空白问题)

指令:

复制代码
docker cp tomcat9:/usr/local/tomcat/webapps.dist/ROOT /usr/local/tomcat/webapps/

5.验证容器状态

指令:

复制代码
docker ps | grep tomcat9 

显示"Up"状态表示启动成功

如果已经在服务器上开放端口(Tomcat默认端口为8080),以上没有出错就直接可以去浏览器上访问是否有"猫",访问地址:http://服务器IP:8080

感谢2022级软件工程3班杨凡/赵仁珍同学的积极测试和整理,若有问题请及时联系。

相关推荐
二宝1522 小时前
黑马商城day1-MyBatis-Plus
java·开发语言·mybatis
235162 小时前
【MQ】RabbitMQ:架构、工作模式、高可用与流程解析
java·分布式·架构·kafka·rabbitmq·rocketmq·java-rabbitmq
Porunarufu2 小时前
JAVA·类和对象③封装及包
java·开发语言
霍小毛3 小时前
Kubernetes云平台管理实战:滚动升级与秒级回滚
java·容器·kubernetes
代码充电宝3 小时前
LeetCode 算法题【简单】20. 有效的括号
java·算法·leetcode·面试·职场和发展
q_19132846953 小时前
基于RuoYi框架+Mysql的汽车进销存后台管理系统
数据库·vue.js·spring boot·mysql·汽车·个人开发·若依
祈祷苍天赐我java之术3 小时前
Redis 的原子性操作
java·redis
wdfk_prog3 小时前
klist 迭代器初始化:klist_iter_init_node 与 klist_iter_init
java·前端·javascript
凸头3 小时前
Collections.synchronizedList()详解
java