1、docker的优势,为啥用docker
2、docker的核心概念
镜像【Image】- 只读模板
容器【Container】- 运行镜像的一个外壳,相当于一个独立的虚拟机
仓库【repository】- 镜像的管理工具,可公开,可私有;类似git仓库
3、centos安装docker
查看是否有docker服务
docker --version
sudo systemctl status docker
-方便添加软件
sudo yum install -y yum-utils
-添加Docker的官方软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-刷新yum源
sudo yum update
-安装dockery引擎
sudo yum install docker-ce
-启动docker
sudo systemctl start docker
-centos避免每次使用docker都要切换到特权身份
sudo groupadd docker (提示存在执行执行下一行)
sudo usermod -aG docker $USER
-重启docker
sudo systemctl restart docker
-完成这些步骤后,你就可以直接运行Docker命令而不需要sudo,安装完毕
docker -ps
4、安装常用软件镜像
- nginx安装
docker run -d -p 80:80 --name nginx nginx
- mysql安装
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=wuyongqiang -d mysql:5.7
- reids安装
docker run -d --name redis redis
- jdk 安装
docker run -d --name jdk openjdk:8
5、使用nginx镜像部署Vue项目
执行命令(一行命令):
docker run
-d -p 8080:80 --name ruoyi-web
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/logs/nginx:/var/log/nginx
-v /data/web/ruoyi-web/dist:/usr/share/nginx/html
nginx:latest
执行命令解释:
docker run
#将宿主机的8080端口映射容器的80端口
-d -p 8080:80
#容器命名为mr-web
–name mr-web
#将nginx的配置挂载在宿主机的/data/conf/nginx.conf 下
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf
#将nginx的日志输出到宿主机的/data/logs/nginx目录下
-v /data/logs/nginx:/var/log/nginx
#将要部署的项目挂载在宿主机的/data/web/dist下
-v /data/web/dist:/usr/share/nginx/html
#使用的nginx镜像版本声明
nginx:latest
/home/mr-web/conf nginx.conf配置文件
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
# 这里重点关注以下:这里是容器内部地址
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
error_page 404 index.html;
}
#和上面vue文件对应上,访问后端都加mr-api
#这里看情况,有的vue项目访问后端接口不需要代理
location /dev-api {
#rewrite ^/rest/(.*) /$1 break;
proxy_pass http://124.223.59.141:8081;
#proxy_cookie_path / /rest;
proxy_redirect off;
#client_max_body_size 500m;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
6、使用JDK镜像部署java项目
编写dockerfile文件,制作java-service的镜像
#基础镜像
FROM openjdk:8
#将应用jar挂在到容器内:根服务器的相对路径,容器内的绝对路径
COPY app.jar /data/app.jar
#指定工作目录
WORKDIR /data
#暴露对外端口
EXPOSE 8080
#应用执行命令
CMD ["java", "-jar", "app.jar"]
在dockerfile所在目录下执行镜像构建命令,构建镜像:java-service-name
#构建镜像
docker build -t java-service-name
启动容器运行该镜像
docker run -d java-service-name -p 8080:8080 --name java-app java-service-name