Dockerfile------介绍和常用命令

1.镜像从哪里来的?

python 复制代码
1 远程仓库拉取的 docker pull   (hub.docker---》搭建私有仓库)
2 用容器做成的镜像 docker commit 
3 把备份的恢复 docker load
4 使用Dockerfile来构建

2.什么是Dockerfile

python 复制代码
Dockerfile是由一系列命令和参数构成的脚本文件,这些命令应用于基础镜像并最终创建一个新的镜像
# centos7中,装了vim,在根路径下新建了一个文件 lqz.txt,写了写内容

3.Dockerfile的命令

python 复制代码
FROM 基础镜像 	       #基于哪个基础镜像来构建
MAINTAINER lqz 	     # 声明镜像的创建者
ENV key value 	     # 设置环境变量 (可以写多条)
RUN command 	     #是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file 	#将宿主机的文件复制到容器内,
                                            如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 	# 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR lqz 	# 设置工作目录,运行起这个容器,来到的路径就是这个路径
    

4.常用和不常用命令

python 复制代码
FROM: 指定基础镜像
RUN: 构建镜像过程中需要执行的命令。可以有多条。docker build
CMD:添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改
ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。
MLABELAINTAINER:表明镜像的作者。将被遗弃,被LABEL代替。
EXPOSE:设置对外暴露的端口。
ENV:设置执行命令时的环境变量,并且在构建完成后,仍然生效
ARG:设置只在构建过程中使用的环境变量,构建完成后,将消失
ADD:将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件
COPY:将本地文件或目录拷贝到镜像的文件系统中。
VOLUME:添加数据卷
USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
WORKDIR:设置工作目录

5.CMD ENTRYPOINT相同点与不同点

python 复制代码
#相同点:
只能写一条,如果写了多条,那么只有最后一条生效。
容器启动时才运行,运行时机相同。
# 不同点:
ENTRYPOINT不会被运行的command覆盖,而CMD则会被覆盖。
如果我们在Dockerfile中同时写了ENTRYPOINT和CMD,并且CMD指令不是一个完整的可执行命令,那么CMD指定的内容将会作为ENTRYPOINT的参数

6.dockerfile构建一个djagno项目(books图书管理系统)

python 复制代码
# 以图书管理系统为例---》公司使用docker流程



# 公司中,使用Docker开发的工作流程
第一步:有一个项目,pycharm开发着,开发完后
第二步:在项目路径下新建Dockerfile,写入
FROM python:3.8
MAINTAINER lqz
WORKDIR /soft
COPY ./requirements.txt /soft/requirements.txt
RUN pip install -r requirements.txt -i https://pypi.doubanio.com/simple
CMD ["python","manage.py","runserver","0.0.0.0:8080"]
第三步:把代码提交到git



------------------
第四步:上线人员:在上线机器上,把代码啦下来
git clone https://gitee.com/liuqingzheng/books.git
第五步:构建镜像
docker build -t='django_books' .
第六步:运行容器
docker run -id --name=books -v /root/lqz/books:/soft -p 8080:8080 django_books:latest
第七步:其它人访问宿主机的8080端口就能看到项目了

---------
第八步:开发人员继续提交代码
第九步:运维人员pull代码,重启容器,用户就可以看到最新的了
重启docker容器即可(第三方依赖变了)--》重写构建镜像,运行容器

详情可见:纯干货!Docker Dockerfile指令大全 - 知乎

相关推荐
无尽的沉默4 小时前
使用Spring Initializr 快速创建Maven管理的springBoot项目
spring boot·spring·maven
有来技术4 小时前
ASP.NET Core 权限管理系统(RBAC)设计与实现|vue3-element-admin .NET 后端
vue.js·后端·c#·asp.net·.net
qq_12498707534 小时前
基于springboot的林业资源管理系统设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
shuair4 小时前
springboot整合redisson单机模式
java·spring boot·后端
qq_12498707535 小时前
基于springboot的竞赛团队组建与管理系统的设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·信息可视化·毕业设计·计算机毕业设计
Dr.Kun5 小时前
【鲲码园PsychoPy】Go/No-go范式
开发语言·后端·golang
一起养小猫5 小时前
Flutter for OpenHarmony 实战:天气预报应用UI设计与主题切换
jvm·数据库·spring·flutter·ui·harmonyos
源代码•宸5 小时前
Redis 攻略(Redis Object)
数据库·redis·后端·缓存·字符串·哈希表·type
林shir5 小时前
3-14-后端Web进阶(SpringBoot原理)
java·spring boot·后端
虾说羊6 小时前
公平锁与非公平锁的区别与不同的使用场景
java·开发语言·spring