docker

docker概述

利用容器技术,软件可以快速在各类云服务和基础设施上转换。
未来一个很大的趋势是——无服务器计算服务。
Docker,就是容器引擎中的佼佼者,并且已经得到了广泛的实践和应用。
开发人员可以按自己的想法在任何基础设施之间转移自己的软件。这也是未来的一个愿景——机器和基础设施是可以互相替代的,整个互联网就是一个巨大的计算机。
Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
按照这种方式容器化软件,开发人员和 IT 专业人员只需进行极少修改或不修改,即可将其部署到不同的环境。
Docker 是一个开放平台,使开发人员和管理员可以在称为容器的松散隔离的环境中构建镜像、交付和运行分布式应用程序。以便在开发、QA 和生产环境之间进行高效的应用程序生命周期管理。

镜像

镜像:一个特殊的文件系统
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

容器

容器:镜像运行时的实体
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。

docker的优点

通过 DevOps 的实践,Docker 正在给应用交付带来很多可以量化的提升
Docker 对混合云策略至关重要,它使得用户可以根据需求自由选择私有和公有环境
Docker 实现了微服务架构,也让遗留的单体应用转变为现代应用
使用微服务架构进行交付是 Docker 的关键优势!

dockerfile

Dockerfile就是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它简化了从头到尾的构建流程并极大的简化了部署工作。
使用dockerfile构建镜像有以下好处:像编程一样构建镜像,支持分层构建以及缓存;可以快速而精确地重新创建镜像以便于维护和升级;便于持续集成;可以在任何地方快速构建镜像

主要指令

1.FROM
FROM 指令用于设置在新映像创建过程期间将使用的容器映像。
格式:FROM
示例:
FROM nginx
FROM microsoft/dotnet:2.1-aspnetcore-runtime
2.RUN
RUN 指令指定将要运行并捕获到新容器映像中的命令。 这些命令包括安装软件、创建文件和目录,以及创建环境配置等。
格式:
RUN ["", “”, “”]
RUN
示例:
RUN apt-get update
RUN mkdir -p /usr/src/redis
RUN apt-get update && apt-get install -y libgdiplus
RUN [“apt-get”,“install”,"-y",“nginx”]
注意:每一个指令都会创建一层,并构成新的镜像。当运行多个指令时,会产生一些非常臃肿、非常多层的镜像,不仅仅增加了构建部署的时间,也很容易出错。因此,在很多情况下,我们可以合并指令并运行,例如:RUN apt-get update && apt-get install -y libgdiplus。在命令过多时,一定要注意格式,比如换行、缩进、注释等,会让维护、排障更为容易,这是一个比较好的习惯。使用换行符时,可能会遇到一些问题,具体可以参阅下节的转义字符。
3.COPY
COPY 指令将文件和目录复制到容器的文件系统。文件和目录需位于相对于 Dockerfile 的路径中。
格式:
COPY
如果源或目标包含空格,请将路径括在方括号和双引号中。
COPY ["", “”]
示例:
COPY . .
COPY nginx.conf /etc/nginx/nginx.conf
COPY . /usr/share/nginx/html
COPY hom* /mydir/
4.ADD
ADD 指令与 COPY 指令非常类似,但它包含更多功能。除了将文件从主机复制到容器映像,ADD 指令还可以使用 URL 规范从远程位置复制文件。
格式:
ADD
示例:
ADD https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe /temp/python-3.5.1.exe
此示例会将 Python for Windows下载到容器映像的 c:\temp 目录。
5.WORKDIR
WORKDIR 指令用于为其他 Dockerfile 指令(如 RUN、CMD)设置一个工作目录,并且还设置用于运行容器映像实例的工作目录。
格式:
WORKDIR
示例:
WORKDIR /app
6.CMD
CMD指令用于设置部署容器映像的实例时要运行的默认命令。例如,如果该容器将承载 NGINX Web 服务器,则 CMD 可能包括用于启动Web服务器的指令,如 nginx.exe。 如果 Dockerfile 中指定了多个CMD 指令,只会计算最后一个指令。
格式:
CMD ["", “”]
CMD
示例:
CMD [“c:\Apache24\bin\httpd.exe”, “-w”]
CMD c:\Apache24\bin\httpd.exe -w
7.ENTRYPOINT
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。
格式:
ENTRYPOINT ["", “”]
示例:
ENTRYPOINT [“dotnet”, “Magicodes.Admin.Web.Host.dll”]
8.ENV
ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。
格式:
ENV==…
示例:
ENV VERSION=1.0 DEBUG=on
NAME=“Magicodes”
9.EXPOSE
EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互。
格式:
EXPOSE
示例:
EXPOSE 80
优化的准则

  1. 选择合适的基础镜像,能满足运行应用所需要的最小的镜像
  2. 优化指令顺序,将最不可能产生更改的指令放在前面,按照这个顺序来编写dockerfile指令。
  3. 合并指令
  4. 删除多余文件和清理没用的中间结果
  5. 使用 .dockerignore

docker使用

隔离运行进程的工具,docker将此进程称为容器

  1. 下载安装docker
    下载适用于你操作系统的docker桌面
  2. 打开docker桌面,粘贴命令docker run -d -p 80:80 docker/getting-started至命令提示符(黑框)窗口执行,如若端口被占用请更换端口
  3. 之后再看docker桌面,你会发现上面已经有了正在run的容器
  4. 准备一个工程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值