Docker入门系列–Docker应用部署(九)
MySQl部署
在docker容器中部署MySQl,并通过外部mysql客户端操作MySQl Server
部署MySQL
1.搜索MySQL像
docker search mysql
2.拉取mysql镜像
docker pull mysql:5.6
3.创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir /root/mysql //创建mysql目录
cd /root/mysql //进入mysql目录
docker run -it \
-p 3307:3306 \
--name=c_mysql
-v $pwd/conf:/etc/mysql/conf.d \
-v $pwd/logs:/logs \
-v $pwd/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
参数说明:
* -p 3307:3306:将容器的3306端口映射到宿主机的3307端口
* -v $pwd/conf:/etc/mysql/conf.d:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf。配置目录。
* -v $pwd/logs:/logs:将主机当前目录下logs目录挂载到容器的logs。日志目录
* -v $pwd/data:/var/lib/mysql:将主机当前目录下的data目录挂载到容器的/var/lib/mysql。数据目录
* -e MYSQL_ROOT_PASSWORD=123456:初始化root用户密码
4.进入创建的容器
docker exec -it c_mysql /bin/bash
5.进入mysql数据库
mysql -uroot -p123456
Tomcat部署
1.搜索Tomcat镜像
docker search tomcat
2.拉取tomcat镜像
docker pull tomcat
3.创建容器、设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir /root/tomcat
cd /root/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $pwd/tomcat:/usr/local/tomcat/webapps \
tomcat
参数说明:
* -p 8080:8080:将容器的8080端口映射到宿主机的8080端口
* -v $pwd/tomcat:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps
4.使用浏览器访问
192.168.199.100:8080
nginx部署
在Docker容器中部署nginx,并通过外部机器访问Nginx
1.搜索nginx镜像
docker search nginx
2.拉取nginx镜像
docker pull nginx
3.创建容器,设置端口映射、目录映射
# 在/root/目录下创建nginx目录用于存储nginx数据信息
mkdir /root.nginx
cd /root/nginx
docker run -id --name=c_ngixn \
-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挂载到容器(将官方给出的nginx配置文件粘贴到nginx.conf文件中)
nginx配置文件如下:
#user nobody;
#nginx进程,一般数值为cpu核数
worker_processes 1;
#错误日志存放目录
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程pid存放位置
#pid logs/nginx.pid;
#工作模式及连接数上限
events {
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
}
http {
#文件扩展名与类型映射表
include 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"';
#nginx访问日志
#access_log logs/access.log main;
#开启高效传输模式
sendfile on;
#激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布, 积极的作用是减少网络报文段的数量
#tcp_nopush on;
#连接超时时间,单位是秒
#keepalive_timeout 0;
keepalive_timeout 65;
#开启gzip压缩功能
#gzip on;
#基于域名的虚拟主机
server {
#监听端口
listen 80;
server_name localhost;
#编码识别
#charset koi8-r;
#日志格式及日志存放路径
#access_log logs/host.access.log main;
location / {
#站点根目录,即网站程序存放目录
root html;
#首页排序
index index.html index.htm;
}
#错误页面
#error_page 404 /404.html;
# 将服务器错误页面重定向到静态页面/50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#代理PHP脚本到Apache上监听127.0.0.1:80
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#将PHP脚本传递到正在监听127.0.0.1:9000的FastCGI服务器
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
#如果Apache的文档根目录与nginx的根目录一致,则拒绝访问.htaccess文件
#location ~ /\.ht {
# deny all;
#}
}
#另一个虚拟主机,混合使用IP、名称和基于端口的配置
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# 服务的证书
# ssl_certificate cert.pem;
# 服务端key
# ssl_certificate_key cert.key;
# 会话缓存
# ssl_session_cache shared:SSL:1m;
# 会话超时时间
# ssl_session_timeout 5m;
# #加密算法
# ssl_ciphers HIGH:!aNULL:!MD5;
# 启动加密算法
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
Redis部署
1.搜索redis镜像
docker search docker
2.拉取redis镜像
docker pull redis:5.0
3.创建容器,设置端口映射
docker run -id --name c_redis -p 6379:6379 redis:5.0
4.使用外部机器连接redis
./redis-cli.exe -h 192.168.199.100 -p 6379