Docker --- 常用服务 -- 单机部署 -- 测试环境

1. 总体步骤

1. 搜索镜像

docker search 镜像名

2. 拉取镜像

docker pull 镜像名:版本标签

3. 查看镜像

docker images

4. 创建并启动容器

docker run 镜像名/镜像ID -d -p 主机端口:容器端口 --privileged=true -v /主机根目录/主机目录:/容器内目录/容器内目录:读写规则 --name 容器名 镜像名 

5. 停止容器

docker stop 容器名/容器ID

6. 移除容器

docker rm -f 容器名/容器ID

2. Tomcat

1. 搜索tomcat

docker search tomcat

2. 拉取镜像

docker pull tomcat

3. 查看是否拉取成功

docker images

4. 创建并启动容器

docker run -d -p 8080:8080 --name t1 tomcat

5. 访问首页

localhost:8080

6. 首页未找到,情况说明并解决问题

# 1. 可能没有映射端口或没有开放防火墙8080端口


# 2. 最新版的tomcat 将之前 webapps 中的内容移植到了 webapps.dist中,只要将webapps目录删除,并将 webapps.dist 目录换成webapps,即可访问
rm -f webapps
mv webapps.dist webapps

7. 简化问题,可以直接下载tomcat8

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

3. Mysql 5.7

1. 搜索 mysql

docker search mysql

2. 拉取镜像

docker pull mysql:5.7

3. 查看是否拉取成功

docker images

4. 创建并启动容器

# 查看 3306 端口是否被占用
ps aux|grep 3306

# 启动 mysql 实例,加数据卷
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d  -e MYSQL_ROOT_PASSWORD=14yhl9t --name mysql5.7_0  mysql:5.7

# 修改配置文件,指定字符集
cd /usr/local/mysql/conf
vim my.conf

# 写入如下配置内容
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
haracter_set_server=utf8


# 重启容器
docker restart mysql5.7_0

5. 查看容器是否启动成功

docker ps

6. 进入mysql 容器

docker exec -it mysql /bin/bash

7. 连接mysql 服务端

mysql -uroot -p 

# 输入密码
auth 14yhl9t

4. Mysql 8.0.31

1. 下载并运行镜像

docker run -p 33060:3306 --name mysql8 --restart always -v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -v --privileged=true -e MYSQL_ROOT_PASSWORD=y4yhl9t -d mysql:8.0.31

2. 基础配置

1. 创建配置文件

cd /data/mysql/conf/my.cnf
vim mysql.cnf

mysql.cnf

max_connections=10000
default-time_zone='+8:00'

2. 进入容器

docker exec -it mysql8 bash

3. 进入MySQL

mysql -p

4. 给远程用户root所有表的所有权限

GRANT ALL ON *.* TO 'root'@'%';

5. 更改加密规则

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

6. 配置远程访问

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

7. 刷新权限

flush privileges;

8. 退出mysql

exit

3. 开放云服务器防火墙端口

将云服务器的33060端口打开

4. 低版本客户端无法连接8.0的mysql

这个错误通常是在 MySQL 8.0 和更高版本中由于默认使用了 caching_sha2_password 认证插件,而老旧的 MySQL 客户端默认仅支持 mysql_native_password 认证插件造成的。

# 可以通过修改用户认证插件来使用
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

5. Redis

1. 搜索 redis

docker search redis

2. 拉取镜像

docker pull redis:6.0.8

3. 查看是否拉取成功

docker images

4. 创建并启动容器

官方配置文件入口

# 查看 6379 端口是否被占用
ps aux|grep 6379

# 修改配置文件,指定字符集
mkdir -p /app/redis

# 拷贝一个redis.conf配置模板 到/app/redis目录下
cp redis.conf /app/redis

5. 修改配置项

vim /app/redis/redis.conf

# 1. 开启redis密码验证
requirepass 14yhl9t

# 2. 允许redis外地连接,注释掉 bind 127.0.0.1
# bind 127.0.0.1

# 3. 将daemonize 改为 no 因为该配置和docker run 中的 -d 参数冲突,会导致容器一直启动失败
daemonize no

# 4. 关闭 redis 保护模式
protected-mode no

# 5. 开启redis 数据持久化
appendonly yes

6. 指定配置文件启动 redis 实例,添加数据卷映射

docker run -d -p 6379:6379 --privileged=true -v /app/redis/data:/data -v /app/redis/redis.conf:/etc/redis/redis.conf  --name redis6_0  redis:6.0.8 redis-server /etc/redis/redis.conf

5. 查看容器是否启动成功

docker ps

6. 进入redis 容器

docker exec -it redis6_0 /bin/bash

7. 连接 redis 服务端

redis-cli 

# 输入密码
14yhl9t

6. Nginx

1. 拷贝Nginx原始配置文件到当前目录

cd /data/nginx
# 先启动nginx 用于复制其主页和配置文件到本机
docker run -d -p 8855:80 nginx

# 复制文件到主机
docker cp 容器名/容器ID:/etc/nginx/nginx.conf .
docker cp 容器名/容器ID:/etc/nginx/nginx.conf .

2. 启动 Nginx

docker run -d -p 80:80 --restart=always \
--privileged=true \
-v /data/nginx/html:/usr/share/nginx/html:ro \
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf:ro  \
--name mynginx  \
nginx
posted @ 2023-07-31 15:14  河图s  阅读(86)  评论(0)    收藏  举报