最近要部署项目, 因为前后端都有, 所以最终是决定通过 docker 部署, 并且通过 docker+jenkins 还能实现自动化部署.
本文记录的是简单的一个 web 应用的部署, 学会这个之后其他应用部署其实都大同小异了, 使用的工具有: docker, nginx
关于 docker 的学习, 如果不熟悉 docker 可以在自己电脑上下载一个有图形界面的 docker 客户端, 通过客户端+命令行来学习, 能更直观了解镜像 容器 应用之间的关系, 以及整个部署的流程.
安装 docker
可以参考官方文档
- 卸载老版本 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 设置仓库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装 docker
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动 docker 服务
# 启动设置开机自启
systemctl start docker
systemctl enable docker
# 查看docker服务启动状态
systemctl status docker
构建镜像和容器
- 创建工作目录和项目文件
cd /home/workspace/
mkdir hello-world && cd hello-world
touch index.html && echo '<h1>hello world</h1>' >> index.html
- 通过 Dockerfile 来构建一个镜像
# 创建Dockerfile来构建镜像
vi Dockerfile
# 使用Nginx作为镜像
FROM nginx
# 将宿主主机的项目入口文件复制进容器里的nginx默认入口文件
COPY ./index.html /usr/share/nginx/html/index.html
# 容器对外暴露80端口
EXPOSE 80
构建镜像
docker image build ./ -t hello-world-image:1.0.0
- 通过镜像构建并启动容器
docker run -d --name hello-world-container -p 81:80 hello-world-image:1.0.0
启动完成后就可以打开[host]:81
查看页面或者通过curl [host]:81
查看
docker 的常用命令
镜像相关
# 查询镜像
docker search [image-name]
# 拉取镜像
docker pull [image-name]
# 导入镜像
docker load < /home/node.tar.gz
# 导出镜像
docker save > /home/node.tar.gz
# 查询所有镜像
docker images
# 修改镜像名
docker tag docker.io/node node
# 删除奖项
docker rmi [image-name]
容器相关
查看容器状态
docker ps -a
创建容器
# 不挂载宿主目录
docker run -d --name demo-nginx -p 81:80 nginx
# 挂载宿主目录
docker run \
-p 80:80 \
--name homepage-nginx \
-v /home/workspace/demo/nginx.conf:/etc/nginx/nginx.conf \
-d nginx:latest
重启 暂停 删除容器
# 重启容器
docker restart [container-name]
# 暂停容器, 容器名称, 容器id需要前3位数字
docker stop [container-name]
# 删除容器
docker rm [container-name]
# 删除正在运行的容器
docker rm -f [container-name]
进入容器
docker exec -it [container-name] bash
-it 以交互式进入容器, bash 保留为容器终端的输入形式
查看日志
docker logs [container-name]
总结
使用docker部署流程
- 编写
Dockerfile
创建镜像 - 根据
Dockerfile
使用docker image build
来创建镜像 - 使用
docker run
来启动容器
下一篇文章会包含一些简单的nginx配置和jenkins自动化部署
© 版权声明
文章版权归作者所有,未经允许请勿转载,侵权请联系 admin@trc20.tw 删除。
THE END