一、先部署springboot项目
1、安装docker:
yum install docker -y
2、启动docker:
service docker start
重启:
service docker restart
3、设置镜像源
问题:
很多人说通过dig @114.114.114.114 registry-1.docker.io获取到可用的域名解析地址,然后将地址添加到/etc/hosts中,如下:
34.205.13.154 registry-1.docker.io
说保存之后重试几次就行,但我试了几次,dig出来的结果都在变化,重新docker pull 之后仍然提示超时。
解决方法
通过阿里云的镜像加速器。阿里云的容器镜像服务地址为:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
没有账号的可以免费注册一个。然后找到容器镜像服务,就是下面的地址。查看自己的镜像加速器地址并复制。
然后进入目录:cd /etc/docker -->daemon.json。没有就自行新建。
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://XXXXXXX.mirror.aliyuncs.com"]
}
修改好之后,保存,重启加速器,重启docker。
systemctl daemon-reload
systemctl restart docker
然后再次下载,可看到镜像还是不行。。。
问题:配置了阿里镜像源,使用docker拉取镜像还是失败
通过 docker info 查看是否配置成功
发现已经设置成功了,但此时我们还是下载失败。
解决方案
配置服务器dns解析
vim /etc/resolv.conf
加上以下内容
# 谷歌的dns域名解析地址
nameserver 8.8.4.4
nameserver localdomain
# 重启docker
systemctl restart docker
再次运行,成功!!!
设置镜像源、dns解析前:
设置镜像源、dns解析后:
6、查看版本:
docker -v
7、使设置docker.service生效(路径:/usr/lib/systemd/system/docker.servic):
sudo systemctl enable docker
8、查看docker状态:
systemctl status docker
编写Dockerfile
FROM java:8
VOLUME /tmp
ADD CmdbAddBackend.jar CmdbAddBackend.jar
RUN echo "Asia/Shanghai" > /etc/timezone
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/CmdbAddBackend.jar"]
9、Dockerfile文件要与jar包文件在同一文件夹下
10、构建镜像(点不要忘记):
docker build -t cmdbdocker .
11、要启动cmdbdocker:
大写-P表示随机分配端口 docker run -d -P cmdbdocker
小写-p 表示指定端口,主机端口:docker容器端口 docker run -d -p 8086:8080 cmdbdocker
查看正在运行的容器 docker ps
停止正在运行的容器 docker stop 容器id
启动容器 docker start 容器id
启动多个容器:docker start container1 container2 container3
12、查看镜像
docker images
13、删除镜像
# 根据id删除单个镜像
docker rmi -f 镜像id
# 根据条件删除所有none的镜像
docker rmi -f $(docker images -f "dangling=true" -q)
14、linux查看jdk安装路径:
which java
二、部署nginx服务
1、安装的命令
sudo docker search nginx
docker pull nginx
2、查看是否安装
docker images
3、创建nginx日志、页面文件夹,nginx.conf文件
mkdir -vp /home/nginx/{dist,logs}
vim nginx.conf
4、修改 nginx.conf内容
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;sendfile on;
#tcp_nopush on;#keepalive_timeout 0;
keepalive_timeout 65;#gzip on;
upstream server1{
server 192.**.55:8080;
server 192.**.56:8080;
server 192.**.57:8080;
}
upstream server2{
server 192.**.55:9090;
server 192.**.56:9090;
server 192.**.57:9090;
}
server {
listen 8000;
server_name 192.**.55;
ignore_invalid_headers off;
client_max_body_size 0;
proxy_buffering off;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 300;
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_ignore_client_abort on;
proxy_pass http://server1;
}
}
server {
listen 9000;
server_name 192.**.55;
ignore_invalid_headers off;
client_max_body_size 0;
proxy_buffering off;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 300;
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_ignore_client_abort on;
proxy_pass http://server2;
}
}
}
nginx配置解释参考如下:
5、创建docker启动脚本start.sh
#!/bin/bash docker run -d --name nginx -p 9091:8000 -p 9092:9000 --name nginx -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/dist:/usr/share/nginx/html -v /home/nginx/logs:/var/log/nginx nginx
参数说明:
启动容器:docker run --name 容器别名 -p 9091:8000 -d nginx
参数说明:
--name nginx-test:容器名称。
-p 9091:8000: 端口进行映射,将本地 9091端口映射到容器内部的 8000 端口。
-d nginx: 设置容器在在后台一直运行。
6、运行start.sh
7、访问项目
浏览器通过ip端口访问 ,可以正常访问: