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