提示:以下是本篇文章正文内容,Docker 系列学习将会持续更新
一、部署 MySQL
①搜索并拉取 mysql 镜像
docker search mysql
docker pull mysql:5.7
②创建容器目录映射
# 在/root/docker-data目录下创建mysql目录
mkdir ~/docker-data/mysql
cd ~/docker-data/mysql
③创建并启动容器,设置端口映射:$PWD
表示当前宿主机位置,即 /root/docker-data/mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf \
-v $PWD/conf/conf.d:/etc/mysql/conf.d \
-v $PWD/logs:/var/log/mysql \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
自定义 my.cnf
内容如下:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
default-time-zone='+08:00'
innodb_buffer_pool_size = 128M
port = 3306
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid
# 允许连接失败的次数。
max_connect_errors=10
#引擎
default-storage-engine=INNODB
log-bin = mysql-bin
# #设置保存时间
expire_logs_days=7
# #注意5.7以及更高版本需要配置本项:server-id=123454(自定义,保证唯一性); server-id 一般去ip后三位
server-id=1
# #binlog格式,有3种statement,row,mixed
binlog-format=ROW
# #表示每1次执行写入就与硬盘同步,会影响性能,为0时表示,事务提交时mysql不做刷盘操作,由系统决定
sync-binlog=1
# ##开启慢sql
slow_query_log=on
slow_query_log_file=/var/lib/mysql/slow-query.log
long_query_time=1
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
④进入容器,操作 mysql
docker exec -it c_mysql /bin/bash
mysql -uroot -p123456
⑤使用外部机器连接容器中的 mysql
二、部署 Tomcat
①搜索并拉取 tomcat 镜像
docker search tomcat
docker pull tomcat:8
②创建容器目录映射
# 在/root/docker-data目录下创建tomcat目录
mkdir ~/docker-data/tomcat
cd ~/docker-data/tomcat
③创建并启动容器,设置端口映射
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:8
④使用外部机器访问 tomcat
pwd # /root/docker-data/tomcat
mkdir test
cd test
touch a.html
vim a.html # <h1>Hello,I am dockerCloud tomcat<h1>
三、部署 Nginx
①搜索并拉取 nginx 镜像
docker search nginx
docker pull nginx
②创建容器目录映射
# 在/root/docker-data目录下创建nginx目录用于存储nginx数据信息
mkdir ~/docker-data/nginx
cd ~/docker-data/nginx
mkdir conf
cd conf
# 在conf下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
官方提供的 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;
}
③创建并启动容器,设置端口映射
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/conf.d/default.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
④使用外部机器访问 nginx
a. 此时 nginx 的 html 目录为空,也没有做任何代理。
b. 调用自己 html 目录下的 index.html 文件
c. 用 nginx 做反向代理
如果 nginx 代理宿主机的应用,则参考:Linux 安装 nginx 详细教程 nginx 做反向代理。
如果 nginx 想代理其它容器中的应用,则参考:Docker Compose 构建多容器应用 编排 Nginx + Springboot 项目。
四、部署 Redis
①搜索并拉取 redis 镜像
docker search redis
docker pull redis:4.0
②创建容器目录映射
mkdir ~/docker-data/redis
cd ~/docker-data/redis
③创建并启动容器,设置端口映射
可以不挂载数据卷,直接启动:
docker run -id --name=c_redis -p 6379:6379 redis:4.0
挂载数据卷:
docker run -id --name=c_redis \
-p 6379:6379 \
-v /$PWD/conf/redis.conf:/etc/redis.conf \
-v /$PWD/data:/data \
redis:4.0
启动前,先在宿主机中添加 /redis/conf/redis.conf
自定义配置文件:
bind 0.0.0.0
port 6379
daemonize yes
logfile "6379.log"
dir /data
databases 16
# rdb 相关配置
dbfilename dump-6379.rdb
# rdb保存时压缩数据
rdbcompression yes
# rdb文件格式校验
rdbchecksum yes
stop-writes-on-bgsave-error yes
save 10 2
# aof 相关配置
appendonly yes
appendfsync always
appendfilename appendonly-6379.aof
④使用外部机器连接 redis
redis-cli.exe -h 1.15.76.95 -p 6379
总结:
提示:这里对文章进行总结:
本文是对Docker的学习,学会了如何在 Docker 中进行应用部署,并且将我们常用的开发工具如mysql、tomcat、nginx、redis进行了部署,还给它们配置了数据卷。之后的学习内容将持续更新!!!