Docker 环境部署
Center OS Docker 安装
使用官方安装脚本自动安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
卸载旧版本:
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
启动Docker:
sudo systemctl start docker
重新启动Docker服务:
systemctl restart docker
关闭Docker:
systemctl stop docker
Docker 容器及服务自动启动设置:
参考:https://blog.csdn.net/wxb880114/article/details/82904765
1.Docker 服务自动启动设置
systemctl enable docker.service
2.在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
docker run --restart=always
3.如果已经启动了则可以使用如下命令:
docker update --restart=always <CONTAINER ID>
重启系统后:
docker ps -a
在下载或者进行其他操作时,如果不写TAG则默认为 latest,如果下载的不是最新的需要在后面加上TAG
查询:
docker images
例:
docker run -d -p 8080:8080 --name tomcat -v /usr/local/dev/docker-tomcat:/usr/local/tomcat/webapps --restart=always tomcat:9.0.41-jdk8-corretto
MySQL 部署:
参考:https://zhuanlan.zhihu.com/p/203653692
1.拉取MySQL(最新)
MySQL镜像库地址:https://hub.docker.com/_/mysql?tab=tags&page=1&ordering=last_updated
docker pull mysql:latest
2.创建容器(守护的方式),密码设置为 root
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:latest
3.进入容器
docker exec -it mysql /bin/bash
4.打开MySQL
mysql -uroot -p
Tomcat
部署:https://www.cnblogs.com/spll/p/9957769.html
1.搜索tomcat镜像
docker search tomcat
2.根据搜索出来的列表下载tomcat
docker pull tomcat
3.启动tomcat:
#方式1:解释一下,-d表示后台运行,-p端口映射,前面的8080是外围访问端口(也就是本机ip对外开放的端口),后面8080是docker容器内部的端口
docker run -d -p 8080:8080 tomcat #方式2:加--name tomcat的意思,表示为此容器启一个别名叫tomcat,以后再也不用操作容器id进行关闭、进容器目录什么的,直接把容器ID换成tomcat别名 加上--restart=always 表示此容器开机启动,只要docker也设置了开机自启,docker不死
docker run -d -p 8080:8080 --name tomcat --restart=always tomcat
目前使用方式1,最简单的
404错误:https://www.jb51.net/article/197174.htm
此时访问端口地址会出现404错误,出现的原因是webapps下面没有资源
解决办法:
#查找tomcat的containerID docker ps #进入tomacat目录 docker exec -it <CONTAINER ID> /bin/bash cd webapps ls -l #发现文件为空 #删除webapps,将webapps.dist修改名称为webapps rm -rf webapps mv webapps.dist webapps
没有提交的话,在镜像重启后,又会报404错误,要commit一下
docker commit <CONTAINER ID> tomcat
Tomcat挂载目录
- 设置挂载目录:意思把宿主机的一个文件夹映射到容器的webapps目录,直接把war包上传到宿主机的文件夹,不用再复制到tomcat容器里面了,tomcat容器的webapps目录会直接使用这个文件夹下的文件。
- 设置容器别名:之前不设置别名,操作关闭容器,或进入容器内我们都要找到此容器ID,并根据此容器ID来操作,很不方便。--name xxx之后我们可以直接操作xxx别名
- 设置开机自启:--restart=always参数
- 为挂载目录之前做准备:在根目录下创建一个docker目录,docker目录下再创建一个tomcat目录
- 目录创建好了,下面进行挂载目录,运行tomcat容器
#挂载usr/local/dev/docker-tomcat目录,并运行容器命令如下 docker run -d -p 8080:8080 --name tomcat -v /docker/tomcat:/usr/local/tomcat/webapps --restart=always tomcat
可能会报出容器名称已存在的错误,使用命令查看一下所有容器:
#docker查看所有容器 docker ps -a
删除之前容器:
docker rm <CONTAINER ID>
再重新运行挂载命令即可
对于此处出现404错误在于 /tomcat 目录下没有资源文件,打包一个简单的 war 包即可
Nginx 部署
1.取最新版的 Nginx 镜像
docker pull nginx
2.查看本地镜像,查看是否已安装了 nginx
docker images
3.运行容器
docker run --name nginx -p 80:80 -d nginx
参数说明:
- --name nginx:容器名称
- -p 80:80: 端口进行映射,将本地 80 端口映射到容器内部的 80 端口
- -d nginx: 设置容器在在后台一直运行
自启:
docker update --restart=always <CONTAINER ID>
4.通过浏览器直接访问 80 端口的 nginx 服务
Nginx 挂载目录:
创建文件夹:(注意需要再 /docker/nginx 目录下上传 nginx.conf 文件)
mkdir -p /docker/nginx/conf.d docker/nginx/logs /docker/nginx/cert /docker/nginx/html
挂载启动:
docker run -d --name nginx --restart always -p 80:80 -p 443:443 -e "TZ=Asia/Shanghai" \
-v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/logs:/var/log/nginx \
-v /docker/nginx/cert:/etc/nginx/cert \
-v /docker/nginx/html:/usr/share/nginx/html nginx
nginx.conf配置文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
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"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
Redis 部署
1.取最新的 Redis 镜像
docker pull redis
2.运行容器
docker run -itd --name redis -p 6379:6379 redis
3.自启
docker update --restart=always <CONTAINER ID>
4.安装成功,docker ps 查看容器信息
5.通过 redis-cli 连接测试 redis 服务
docker exec -it redis /bin/bash