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
python防脱发技巧

浙公网安备 33010602011771号