Docker部署mysql
Docker 应用部署一、部署MySQL拉取mysql镜像3. 创建容器,设置端口映射、目录映射赋权启动查看运行镜像docker ps查看日志设置开机自动启动/取消开机启动docker update --restart=always 容器IDdocker update --restart=no 容器ID。
Docker 应用部署
一、部署MySQL
拉取mysql镜像
docker pull mysql:5.7

查看MySQL镜像是否下载成功
docker images

3. 创建容器,设置端口映射、目录映射
创建mysql目录
1、创建mysql配置文件目录,使用 -p 创建多级目录
mkdir -p /docker/mysql/conf
2.编写配置文件
vi /docker/mysql/conf/my.conf
[client]
# 端口号
port=3306
[mysql]
no-beep
# 配置了 MySQL 客户端的默认字符集
default-character-set=utf8mb4
[mysqld]
# 端口号
port=3306
# 数据目录
datadir=/var/lib/mysql
# 设置了 MySQL 服务器的字符集为 UTF-8
character-set-server=utf8mb4
# 设置了 MySQL 服务器的排序规则为 utf8mb4_unicode_ci,通常用于支持国际化和多语言字符的正确排序
collation-server=utf8mb4_unicode_ci
# 用于禁用客户端字符集握手,允许客户端和服务器之间的字符集设置更加灵活
skip-character-set-client-handshake
# 禁用了主机名解析,以提高连接性能
skip-name-resolve
# 默认存储引擎
default-storage-engine=INNODB
# 将 SQL 模式设置为严格
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
# 最大连接数
max_connections=1024
# 表缓存
table_open_cache=2000
# 表内存
tmp_table_size=16M
# 线程缓存
thread_cache_size=10
# 设置大小写不敏感
lower_case_table_names=1
# myisam设置
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=8M
read_buffer_size=0
read_rnd_buffer_size=0
# innodb设置
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=33
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
# 其他设置
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000
启动MySQL
编写脚本
cd /docker/mysql/
vi startMysql.sh
docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart=always \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
赋权
chmod -R 777 startMysql.sh
启动
./startMysql.sh
查看运行镜像
docker ps
查看日志
docker logs mysql
测试连接 navicat连接
设置开机自启动
docker ps

docker update --restart=always 容器ID
取消开机自动启动
docker update --restart=no 容器ID
修改密码
进入容器
docker exec -it mysql bash
登录MySQL
mysql -u root -proot
修改密码
# 修改普通用户,只改一个就好
SET PASSWORD FOR 'youruser' = PASSWORD('xxxxxxxx');
# 修改root用户,改两个
SET PASSWORD FOR 'root' = PASSWORD('xxxxxxxxx');
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('xxxxxxxxx');
退出MySQL服务
\q
退出容器
exit
重启服务/容器
docker restart mysql
二、部署Tomcat
拉取tomcat镜像
docker pull tomcat:9.0
创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir -p /usr/local/tomcat/webapps
docker run -d --name my-tomcat -p 8080:8080 -v ${PWD}/docker_volume/tomcat/webapps:/usr/local/tomcat/webapps tomcat:9.0
- 参数说明:
- **-p 8080:8080:**将容器的8080端口映射到主机的8080端口
-v ${PWD}/docker_volume/tomcat/webapps:/usr/local/tomcat/webapps
:**将主机中当前目录挂载到容器的webapps
在主机中安装tomcat后访问主机出现404的错误
解决办法
- 出现这个问题的原因是在高版本中webapps文件夹下的文件是空的,会有一个webapps.dist的文件夹
- 所以,只需要将原来的webapps文件夹删除,把wenapps.dist复制成webapps即可
### 进入容器,注意我之前创建的容器名字就是tomcat,注意替换
docker exec -it my-tomcat bash
### 进入tomcat目录,有可能进入tomcat后直接就在该目录
cd /usr/local/tomcat/
### 删除webapps
rm -rf webapps
### 将webapps.dist 复制成webapps
cp -r webapps.dist webapps
.5 管理 Tomcat 容器
查看运行中的容器:
docker ps
停止容器:
docker stop my-tomcat
启动已停止的容器:
docker start my-tomcat
删除容器:
docker rm my-tomcat
### 三、部署Nginx
拉取nginx镜像
docker pull nginx
3. 创建容器,设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
```
```shell
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
- 参数说明:
- **-p 80:80**:将容器的 80端口映射到宿主机的 80 端口。
- **-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf**:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
- **-v $PWD/logs:/var/log/nginx**:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
### 四、部署Redis
1. 搜索redis镜像
```shell
docker search redis
```
2. 拉取redis镜像
```shell
docker pull redis:5.0
```
3. 创建容器,设置端口映射
```shell
docker run -id --name=c_redis -p 6379:6379 redis:5.0
```
4. 使用外部机器连接redis
```shell
./redis-cli.exe -h 192.168.149.135 -p 6379
```
更多推荐
所有评论(0)