将docker中的镜像打包教程(本地使用docker打包部署镜像的方法)
类别:服务器 浏览量:273
时间:2021-10-28 10:31:03 将docker中的镜像打包教程
本地使用docker打包部署镜像的方法第一次在本地使用docker打包、部署镜像
首先说下我的笔记本系统是MACOS 10.15.4
我安装的docker版本是v19.03.5
一、项目结构如下:
这是一个react项目,打包后的静态资源路径是dist目录。
二、重点看Dockerfile文件和docker/nginx.conf文件
1. Dockerfile是一个用来构建镜像的文本文件,详细介绍可以参考链接:Docker Dockerfile
我的Dockerfile内容如下:
FROM nginx WORKDIR /usr/src/app/ COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf COPY ./dist /usr/share/nginx/html/ EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
Dockerfile中的大写单词是命令,各个命令的含义解释:
- FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
- RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
- WORKDIR:指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。WORKDIR 指定的工作目录,必须是提前创建好的。docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
- COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
- EXPOSE:仅仅只是声明端口。作用:帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
- CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:CMD 在docker run 时运行。RUN 是在 docker build。作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
2. docker/nginx.conf
server { listen 80; # gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on; gzip_disable "MSIE [1-6]\."; client_max_body_size 100m; root /usr/share/nginx/html; location / { try_files $uri $uri/ /index.html; } location /api/ { # 此处为后端地址 proxy_pass http://www.XXX.com/; } }
三、执行docker build命令制作镜像
我执行的命令是:docker build -t mydocker .
-t : 为镜像打一个tag,tag名称为mydocker
不要忘了后面有个点,表示在当前路径下制作镜像
四、执行docker run部署镜像
我执行的命令是:docker run -p 80:80 mydocker
-p 是指定映射到本机的端口
docker run -p 本机端口:镜像端口 镜像名
五、打开localhost:80就可以看到项目啦
初次体验docker本地部署,很多原理和docker命令还不太清楚,以后还会进一步学习~
补充一个小问题,我今天突然无法将镜像推到公司的私有云了,是网络环境有问题,就让同事帮忙推一下。
我先将打包好的镜像保存到本地:
docker save 10.10.10.52:5000/zhanwu-study/prod:4.1.2 > study.tar
然后将生成到当前目录下的study.tar通过钉钉发给同事,他下来study.tar到本地,然后执行:
docker load < study.tar
更新一下版本(没有生成新的镜像,两个版本是同一个镜像):
docker tag 10.10.10.52:5000/zhanwu-study/prod:4.1.2 10.10.10.52:5000/zhanwu-study/prod:4.1.3
然后推到私有云:
docker push 10.10.10.52:5000/zhanwu-study/prod:4.1.3
到此这篇关于本地使用docker打包部署镜像的方法的文章就介绍到这了,更多相关本地docker打包部署镜像内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
您可能感兴趣
- docker node 分阶段构建(Docker安装、创建镜像、加载并运行NodeJS程序的详细过程)
- 群晖docker搭建代理服务(群晖NAS利用Docker容器搭建KMS激活服务器实现激活windows系统和office操作步骤)
- navicat连接mysql1045解决方法(Navicat 连接服务器端中的docker数据库的方法)
- docker配置redis集群(基于Docker搭建Redis主从集群的实现)
- docker镜像如何打包(Docker打包镜像及修改配置的实现)
- docker默认网桥设置(Docker默认网段修改实现方法解析)
- docker-compose启动单个容器(docker-compose快速搭建docker私有仓库的步骤)
- docker执行shell脚本(基于Docker搭建ELK 日志系统的方法)
- centos7 docker容器目录(CentOS7使用docker部署Apollo配置中心的实现)
- docker数据库如何初始化(Docker启动PostgreSQL时创建多个数据库的解决方案)
- netcorelinux后台运作(Linux系统Docker 部署 ASP.NET Core应用的流程分析)
- docker pull 更新本地镜像(Docker 拉取镜像及标签操作 pull | tag)
- docker清理占用空间(docker清理大杀器/docker的overlay文件占用磁盘太大的解决)
- docker 限制cpu使用率(docker CPU限制的实现)
- 更改docker容器的ip地址(docker容器通过ping直接运行获取公网IP操作)
- django框架教程第100讲(详解Django+Vue+Docker搭建接口测试平台实战)
- 袁冰妍终于接到新剧,饰演反追男主,看到合作演员 眼光果然毒辣(袁冰妍终于接到新剧)
- 记忆中的台词(记忆中的台词)
- 袁冰妍轧戏 拍《琉璃》的同时还在拍《将夜》,难怪被骂演技差(拍琉璃的同时还在拍将夜)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
- 《祝卿好》台词又土又甜,就喜欢这么直接的恋爱(祝卿好台词又土又甜)
热门推荐
- idea 远程部署docker(IDEA使用Docker插件菜鸟教程)
- mysqldata数据如何恢复(mysql5.7.33误删除ibdata文件找回数据的方法)
- 阿里云服务器无法连接(阿里云香港服务器远程连接不上,本地网络都ping不通服务器)
- css盒子内阴影效果(CSS 实现多彩、智能的阴影效果)
- laravel视图组件(Laravel5.4框架中视图共享数据的方法详解)
- isapi和cgi限制
- pythonlambda详解(Python的条件表达式和lambda表达式实例)
- dedecms分页修改(dedecms 自动审核会员发表的最新文章的修改方法)
- docker-compose项目部署(使用Docker Compose部快速署ELK亲测有效)
- dedecms更新后设置不显示(dedecms中tags页面显示错位的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9