Docker上安装常用软件

基础准备

1
2
3
4
5
6
# 检查 Docker 是否正常运行
docker --version
docker info

# 拉取基础镜像(可选,部分软件启动时会自动拉取)
docker pull alpine # 轻量基础镜像

Docker上安装mysql

在这里就装 mysql 8.0 吧,没必要装太低

拉取mysql镜像到本地

1
docker pull mysql:8.0 (tag不加默认最新版本)
1
2
3
4
# 创建必要的目录(避免权限问题)
sudo mkdir -p /usr/local/mydata/mysql/log
sudo mkdir -p /usr/local/mydata/mysql/data
sudo mkdir -p /usr/local/mydata/mysql/conf
1
2
# 赋予适当权限
sudo chmod -R 777 /usr/local/mydata/mysql
1
2
3
4
5
6
7
# 启动MySQL容器(修正后的命令)
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/mydata/mysql/log:/var/log/mysql \
-v /usr/local/mydata/mysql/data:/var/lib/mysql \
-v /usr/local/mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=zjm10086 \
-d mysql:8.0
1
2
3
4
5
# 验证容器是否启动成功
docker ps | grep mysql

# 查看容器日志(确认是否正常运行)
docker logs mysql
1
2
# 平常启动mysql容器可以用这个
sudo docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD='zjm10086' --name mysql8.0 mysql:8.0

可以看到安装已经进行完成了,接下来就是进行配置

image-20250715143822680

Docker上配置mysql

确保容器启动

1
2
3
docker ps | grep mysql
# 确保看到类似输出:
# 4edf18026efe mysql:8.0 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp mysql

进入挂载的mysql配置目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建配置目录(如果不存在)
sudo mkdir -p /usr/local/mydata/mysql/conf

# 创建配置文件
sudo vim /usr/local/mydata/mysql/conf/my.cnf

# 粘贴以下内容(按 i 进入编辑模式,粘贴后按 Esc,输入 :wq 保存退出)
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
1
2
# 重启 MySQL 容器使配置生效
docker restart mysql
1
2
# 设置容器随 Docker 自动启动
docker update mysql --restart=always

验证一下配置是否生效

1
2
3
4
5
6
7
8
9
10
11
12
13
# 进入 MySQL 容器
docker exec -it mysql bash

# 连接 MySQL
mysql -uroot -p
# 输入密码:zjm10086

# 查看字符集配置
SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';

# 预期输出应包含 utf8/utf8mb4 相关值
# 例如:character_set_server = utf8mb4, collation_server = utf8mb4_unicode_ci
image-20250715145346075

防火墙配置

如果你需要外部访问 MySQL,需开放 3306 端口:

1
2
3
4
5
6
# 临时开放端口(重启后失效)
sudo iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

# 永久开放端口(CentOS/RHEL)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

MySQL 安全加固(建议)

1
2
# 进入容器并运行安全配置向导
docker exec -it mysql mysql_secure_installation

尝试从宿主机或者其他客户端连接 Mysql

1
mysql -h localhost -P 3306 -uroot -pzjm10086

如果能成功连接,说明配置和启动均正常。

Docker上安装Tomcat

先在docker hub搜索tomcat

1
docker search tomcat

注意:不指定版本号默认下载最新的

然后我们拉取其中的镜像,拉取最新的就可以

1
docker pull tomcat

如果需要特定版本的 Tomcat(例如 Tomcat 9),可以指定标签:

1
docker pull tomcat:9

拉取完成后,可以使用以下命令查看本地已有的 Tomcat 镜像:

1
docker images | grep tomcat

使用以下命令运行 Tomcat 容器:

1
docker run -d -p 8080:8080 --name my-tomcat tomcat

参数说明:

  • -d:后台运行容器
  • -p 8080:8080:将主机的 8080 端口映射到容器的 8080 端口(主机端口:容器端口)
  • --name my-tomcat:给容器指定一个名称(可自定义)
  • tomcat:使用的镜像名称(如果使用特定版本需加上标签,如tomcat:9

然后查看 Tomcat 是否正在运行

1
docker ps

如果能看到名为my-tomcat的容器且状态为Up,说明运行成功

打开浏览器,访问http://localhost:8080,初次访问可能会看到 404 页面,这是因为官方镜像的 webapps 目录默认是空的,实际应用需要部署 war 包。

Docker 上安装 nginx

Docker上安装redis