关于Docker
Docker 是一个应用打包、分发、部署的工具,包括镜像Image、容器Container、仓库Repository
- 镜像:可以理解为软件安装包,可以方便的进行传播和安装。
- 容器:软件安装后的状态,每个软件运行环境都是独立的、隔离的,称之为容器。
- 仓库:镜像便于传播,而仓库就是专门用来传播这些镜像的地方,他有点类似与Github。
安装Docker(Linux)
安装docker
yum install docker-ce docker-ce-cli containerd.io
查看Docker版本
docker -v
启动Docker
systemctl start docker #启动
systemctl enable docker #自启
配置下载docker镜像的仓库
docker
的默认仓库Docker Hub
下载速度在国内很慢,所以需要替换为阿里云的仓库。
- 打开阿里云搜索容器,选择容器镜像服务
- 点击镜像加速器
- 根据页面提示输入以下指令,注意
registry-mirrors
的地址每个人都不一样,要查看页面上显示的地址。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["xxxxxxxxxxxxxxx"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
拉取镜像
docker pull nginx
启动容器
docker run -d --name nginx01 -p18880:80 nginx
前端Docker部署
打包前端应用
执行前端的打包命令,生成静态文件目录。
npm run build
生成Dockerfile
FROM nginx:latest
COPY ./dist /usr/share/nginx/html/test/
COPY ./nginx.conf /
#构建自定义环境变量
CMD envsubst < /nginx.conf > /etc/nginx/nginx.conf \
&& cat /etc/nginx/nginx.conf \
&& nginx -g 'daemon off;'
Dockerfile常用命令如下:
FROM —指定基础镜像
MAINTANIER --提供Dockerfile 制作者提供本人信息
COPY --把宿主机中的文件复制到镜像中去
ADD --类似COPY命令
WORKDIR --指定工作目录
VOLUME --卷
EXPOSE --为容器打开指定要监听的端口以实现与外部通信
ENV --指定环境变量
nginx.conf文件配置
user nginx;
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 ^~ /test{
root /usr/share/nginx/html;
#设置访问端口首页
index index.html index.htm;
}
#设置报错跳转页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
最后将三个文件打包:
构建镜像
docker build -t test:1.0
运行镜像
docker run test:1.0 -p 18880:80
总结
将开发好的项目打包成Docker镜像(可以理解为软件安装包),在各种服务器上只需要一个命令就能部署好,确保了不同机器下都是一致的运行环境,而且Docker可以创建多个容器,不同容器可以互相通信,比如前端和后端的服务,可以创建虚拟网络docker network create test-net
,此时两个容器在执行docker run
的时候指定同一个虚拟网络test-net
即可互相通信。