美文网首页
dockerfile

dockerfile

作者: why_not_ | 来源:发表于2018-12-30 14:35 被阅读0次

在dockerfile

dockerfile常用指令

FROM 指定base镜像
MAINTAINER 设定镜像的作者
COPY 将文件build context到镜像(上下文)
ADD 和COPY类似 如果scr为归档文件,文件会被解压到dest
ENV 设置环境变量
ENV tools net-tools
RUN yum install $tools
EXPOSE 指定容器中的进程监听某个端口,docker可以将这个端口暴露出来
VOLUME 将文件或目录声明为volume(卷) 等效于 -v 参数
WORKDIR 为后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令设置镜像中的当前工作目录
RUN 在容器中运行指定命令
CMD 在容器中运行指定命令
ENTRYPOINT 设置容器启动时运行的命令

FROM busybox
WORKDIR /test
RUN touch tmp
COPY tmp2 .
ADD bun.tar.gz .
ENV welcome "you are in my container"

1、RUN执行命令并创建镜像层,RUN经常在安装软件时使用
2、CMD设置容器启动后执行的命令及其参数,但是可以被docker run后面跟的命令行参数替换掉
3、ENTRYPOINT设置容器启动时运行的命令

两种命令风格

  • shell
    <命令> <命令>
    RUN apt-get install python3
    CMD echo "Hello world"
    ENTRYPOINT echo "Hello world”
  • exec
    <命令> [“指令”,”参数”,”对象”]
    ENV name cloud man
    ENTRYPOINT [“bin/bash”,”-c”,”echo hello $name"]

RUN在当前镜像的顶层执行命令,创建新的镜像层
RUN apt-get update && apt-get install -y xxx xxx \ xxxx \ xxxxx

CMD指令允许用户指定容器的默认执行的命令
此命令会在docker run 没有指定其他命令的时候运行

1、docker run 指定了其他命令 CMD 指定的命令失效
2、如果dockerfile中有多条CMD命令,只有最后一条生效

ENTRYPOINT指令可让容器以应用程序或者服务的形式运行
不同于CMD的指令ENTRYPOINT指令不会被忽略,一定会被执行,即使 docker run 指定其他命令

在多个docker host上使用镜像

1、使用相同的dockerfile在其他host 上重新构建镜像
2、将镜像上传到公共Registry,host直接下载使用
3、搭建私有的Registry

特定的镜像名由 repository和tag组成

  • image name = repository:tag
    如果运行命令时没有指定tag 默认使用latest
    # docker build -t ubuntu:latest .

Tag 常用于描述镜像的版本
latest其实并没用特殊的含义

docker tag 镜像名 镜像名

使用公共Registry

docker hub 是docker公司维护的公共镜像库

docker login -u username

修改镜像的repository与hub账号匹配 docker 为了区分不同用户的同名镜像

格式为:
username/repository:tag
docker push cinder/ubuntu-vim:16:04

官方维护的镜像没有用户名

Docker 会上传镜像的每一层如果base镜像是hub 上pull 的其实hub已经有全部的镜像层,只有很少的内容被上传
如果想上传同一个repository的所有镜像,省略tag就可以了

搭建本地Registry

# docker run -d -p 5000:5000 -v /data/:/var/lib/registry registry:2
>-d:后台运行容器
-p:将容器的端口映射到host主机(registry服务端口5000)
-v:将容器的/var/lib/redistry目录映射到host/data

images 显示镜像列表
history 显示镜像构建历史
commit 从容器创建新镜像
build 从 Dockerfile 构建镜像
tag 给镜像打 tag
pull 从 registry 下载镜像
push 将 镜像 上传到 registry
rmi 删除 Docker host 中的镜像
search 搜索 Docker Hub 中的镜像

相关文章

网友评论

      本文标题:dockerfile

      本文链接:https://www.haomeiwen.com/subject/jdevlqtx.html