Docker应用部署实战

98 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情

前言

本篇讲述在Docker容器中部署MySQL、Tomcat、Nginx、Redis希望可以给大家带来一点帮助。

1. MySQL部署

1.1 拉取MySQL镜像

[root@localhost ~]# docker pull centos/mysql-57-centos7

本次安装的是MySQL5.7版本的镜像

1.2 创建容器

docker run -di --name=mydemo_mysql(容器名称) -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 centos/mysql-57-centos7(镜像名称)

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口

-e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码

1.3 远程登录mysql

连接宿主机的IP ,指定端口为3306

2. Tomcat部署

2.1 拉取镜像

docker pull tomcat

2.2 创建容器

创建容器 -p表示地址映射

docker run -di --name=mytomcat -p 8081:8080 
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat

注意:在进行容器创建的时候如果如下错误

docker: Error response from daemon: driver failed programming external connectivity on endpoint mytomcat (5c00584138635695e468da46ab71212003baa243cf31da20dfbdf4fe8eabf8e4):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8081 -j DNAT --to-destination 172.17.0.3:8080 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).

原因

docker服务启动时定义的自定义链DOCKER由于某种原因被清掉 重启docker服务及可重新生成自定义链DOCKER

解决

重启docker服务后再启动容器

  • systemctl restart docker
  • docker start tomcat

2.3 测试

在Tomcat中/usr/local/webapps目录下部署WEB应用进行测试

本次测试用例部署的事CAS。

通过IP:端口号/cas进行访问

如果不能访问可以重新启动Tomcat容器,在进行访问

Docker应用部署01.png

3. Nginx部署

3.1 拉起Nginx镜像

docker pull nginx

3.2 创建Nginx容器

docker run -di --name=mynginx -p 80:80 nginx

3.3 通过浏览器访问

Docker应用部署02.png

出现上述页面说明访问成功

3.4 将项目的静态页面部署到Nginx中

3.4.1 将dockerdemo文件中的静态页面部署到nginx中

[root@localhost ~]# ls
dockerdemo

3.4.2 进入到Nginx容器目录

[root@localhost ~]# docker exec -it nynginx /bin/bash

3.4.3 进入/etc目录下展示目录信息

root@680871a6344e:/# cd etc/
root@680871a6344e:/etc# ls

Docker应用部署03.png

在文件中可以找到nginx文件

进入到nginx目录,查看文件信息

root@680871a6344e:/etc# cd nginx
root@680871a6344e:/etc/nginx# ls
conf.d	fastcgi_params	koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params	uwsgi_params  win-utf

3.4.4 使用cat命令查看nginx.conf配置文件中的信息

Docker应用部署04.png

可以看到include 对应的路径是: /etc/nginx/conf.d/*.conf

3.4.5 查看nginx目录下的conf.d/default.conf配置文件信息

Docker应用部署05.png

location 下的root就是nginx欢迎页的存放目录

3.4.6 进入/usr/share/nginx/html/目录进行查看

root@680871a6344e:/# cd /usr/share/nginx/html/
root@680871a6344e:/usr/share/nginx/html# ls
50x.html  index.html

3.4.7 退出nginx容器目录

root@680871a6344e:/usr/share/nginx/html# exit
exit

3.4.8 将dockerdemo文件改名成html然后将nginx中的html目录进行替换

[root@localhost ~]# mv dockerdemo html
[root@localhost ~]# docker cp html/ nynginx:/usr/share/nginx/

3.4.9 再次浏览器访问测试

Docker应用部署06.png

部署成功

4. Redis部署

4.1 拉取镜像

docker pull redis

4.2 创建容器

[root@localhost ~]# docker run -di --name=myredis -p 6379:6379 redis
730f00f73defe7b1832b7ed7ddb216085e55ac8954a9b180392ea0d5784c9881

4.3 进行连接测试

在windows客户端打开redis客户端进行连接测试

Docker应用部署07.png