Docker 常用软件安装(九)

首页 / 🐋Docker / 正文

摘要:本文介绍通过 Docker 安装部署常用软件 Tomcat、mysql 和 nginx 。

一、Tomcat 安装

1、查找镜像

Tomcat 镜像可以通过访问 docker hub 或者通过命令 docker search 来查找。

示例:通过 docker hub 查找 Tomcat 镜像。

image-20220805111619122

使用命令 docker search tomcat 进行镜像搜索。

image-20220805120946569

2、镜像拉取和查看

镜像拉取:

docker pull tomcat

查看镜像:

[root@localhost ~]# docker images
REPOSITORY                                          TAG       IMAGE ID       CREATED         SIZE
tomcat                                              latest    fb5657adc892   7 months ago    680MB

3、运行 tomcat 容器

运行 tomcat 命令如下:

docker run -d --name mytomcat -p 8080:8080 tomcat:latest

查看 tomcat 容器运行状态:

docker ps

image-20220805121915872

4、访问 tomcat 首页

访问 http://ip:8080 验证容器运行是否正常。

image-20220805122308098

由于 Tomcat 10 版本猫主页位置内容变更,所以进入容器需要修改主页目录内容。

# 进入 tomcat 容器
docker exec -it mytomcat /bin/bash

# 主页内容在 webapps.list 中,而我们访问的路径在 webapps 目录,所以需要复制 webapps.list 目录下的文件内容到 webapps 目录下。
root@f96e06103310:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE    NOTICE    README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work

# 复制
root@f96e06103310:/usr/local/tomcat# cp -r webapps.dist/* webapps/

再次访问 http://ip:8080 验证容器运行是否正常。

image-20220805123314694

5、附加内容:tomcat 8 版本安装

tomcat 8 版本无需修改主页,运行命令如下:

docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

注意,此镜像无需额外pull,本地无此镜像,会自动pull 该镜像。

二、mysql 安装

1、查找镜像

mysql 镜像可以通过访问 docker hub 来查找。

示例:通过 docker hub 查找 mysql:5.7 镜像。

image-20220805124459318

image-20220805124357827

2、镜像拉取和查看

镜像拉取:

docker pull mysql:5.7

查看镜像:

[root@localhost ~]# docker images
REPOSITORY                                          TAG       IMAGE ID       CREATED         SIZE
mysql                                               5.7       c20987f18b13   7 months ago    448MB

3、运行 mysql 容器

(1) 运行 mysql 命令如下:

docker run -d -p 3306:3306 \
--privileged=true \
-v /whb/mysql/log:/var/log/mysql \
-v /whb/mysql/data:/var/lib/mysql \
-v /whb/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456  \
--name mysql mysql:5.7

参数说明:

  • --privileged=true :授予权限
  • -v /whb/mysql/log:/var/log/mysql :日志数据卷挂载。
  • -v /whb/mysql/data:/var/lib/mysql :数据数据卷挂载。
  • -v /whb/mysql/conf:/etc/mysql/conf.d :配置数据卷挂载。
  • -e MYSQL_ROOT_PASSWORD=123456 :通过环境变量配置 mysql root 密码。

(2) 查看 mysql 容器运行状态:

docker ps

image-20220805125551945

4、mysql 配置文件修改

(1) my.cnf 文件修改,解决中文字符乱码文件。

在本地 /whb/mysql/conf 路径下新建文件my.cnf ,内容如下。

[root@localhost ~]# cat /whb/mysql/conf/my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

(2) 重启 mysql 容器,并查看字符编码

重启容器:

docker restart mysql

查看字符编码:

# 进入 mysql 容器
docker exec -it mysql /bin/bash

# 登录 mysql ,密码 123456
root@12d852a52332:/# mysql -u root -p 
Enter password: 

# 查看 MySQL 字符编码
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

5、创建数据库,并插入数据

# 创建数据库 whbblog
mysql> create database whbblog;
Query OK, 1 row affected (0.00 sec)

# 使用数据库 whbblog
mysql> use whbblog;
Database changed

# 创建数据表 user
mysql> create table user(id int,name varchar(20));
Query OK, 0 rows affected (0.40 sec)

# 在数据表 user 中插入数据
mysql> insert into user values(1,'whb');
Query OK, 1 row affected (0.05 sec)

# 查询 数据表 user 中的数据
mysql> select * from user;
+------+------+
| id   | name |
+------+------+
|    1 | whb  |
+------+------+
1 row in set (0.00 sec)

6、附加测试

问:删除容器,再次创建容器挂载数据卷,查看数据是否存在?

答:此处实验内容省略,数据还在。

三、nginx 安装

1、查找镜像

nginx 镜像可以通过访问 docker hub 来查找。

示例:通过 docker hub 查找 nginx 镜像。

image-20220805170952551

image-20220805171230488

2、镜像拉取和查看

命令描述
docker pull nginx下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest )
docker pull nginx:xxx下载指定版本的Nginx镜像 (xxx指具体版本号)

镜像拉取:

docker pull nginx

查看镜像:

[root@localhost ~]# docker images
REPOSITORY                                          TAG       IMAGE ID       CREATED         SIZE
nginx                                               latest    605c77e624dd   7 months ago    141MB

3、创建 nginx 配置文件

  启动前需要先创建 nginx 外部挂载的配置文件 /home/nginx/conf/nginx.conf,之所以要先创建 , 是因为 nginx 本身容器只存在 /etc/nginx 目录 , 本身就不创建 nginx.conf 文件,当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker 会将 nginx.conf 作为目录创建 , 这并不是我们想要的结果 。

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

容器中的 nginx.conf 文件和 conf.d 文件夹复制到宿主机。

# 生成容器
docker run --name nginx -d nginx
# 将容器 nginx.conf 文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器 conf.d 文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的 html 文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx

查看复制到本地的配置文件

[root@localhost ~]# tree /home/nginx
/home/nginx
├── conf
│   ├── conf.d
│   │   └── default.conf
│   └── nginx.conf
├── html
│   ├── 50x.html
│   └── index.html
└── log

删除运行的容器

docker rm -f nginx

4、创建nginx容器并运行

nginx容器运行命令:

docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
--privileged=true \
-d nginx:latest

参数说明:

参数说明
-p 80:80将容器的 80(后面那个) 端口映射到主机的 80(前面那个) 端口
–name nginx启动容器的名字
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf挂载nginx.conf配置文件
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d挂载nginx配置文件
-v /home/nginx/log:/var/log/nginx挂载nginx日志文件
-v /home/nginx/html:/usr/share/nginx/html挂载nginx内容
nginx:latest本地运行的版本
-d后台运行

查看容器运行情况:

image-20220806211642650

5、访问测试

访问 http://ip:port ,查看页面是否正常。

image-20220806213935641

修改本地数据卷 /home/nginx/html/index.html

image-20220806214429746

重启 nginx 容器,再次访问nginx容器。

docker restart nginx

image-20220806214547253

打赏
文章目录