码迷,mamicode.com
首页 > 其他好文 > 详细

制作docker镜像

时间:2021-01-20 11:55:13      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:-name   test   uil   pos   容器   oca   构建   index   doc   

编写Dockerfile

# 使用哪个镜像为基础
FROM nginx

# 安装apt-get后清理垃圾文件
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*

# 复制文件
COPY index.html /usr/share/nginx/html/index.html

# 声明这个容器对外使用的端口
EXPOSE 80 443

# 开启健康检查
HEALTHCHECK --interval=5s --timeout=3s   CMD curl -fs http://localhost/ || exit 1

# 添加作者信息(键值对)
LABEL maintainer="liuyalong"
LABEL documentation="https://baidu.com"

编写忽略文件.dockerignore

build的时候,会忽略的文件,不会copy到镜像中

.git/
node_modules/
*.bak
test*/
test*

执行

  • 使用docker build -t mynginx:v1 .创建镜像

    • -t name:tag 给这个镜像打个标签xxx
    • . 最后有个点,指定镜像的上下文为当前的目录路径,相当于指定了根目录路径,在Dockerfile中的路径就以此路径为根路径
  • 使用docker images 查看所有镜像

  • 使用docker inspect imageidxxxx可以查看到镜像的详细信息

  • 使用docker run -itd -p 80:80 --name mynginx mynginx:v1用刚才做的镜像启动一个容器,并命名为mynginx,端口映射为80

  • 使用docker container ls 查看所有启动的容器

  • 使用docker rm xxx 删除容器

  • 使用docker rmi xxx 删除镜像,必须先停止容器才可以删除

注意事项

  • docker build 默认找名字为Dockerfile的文件,忽略文件找.dockerignore
  • FROM的镜像选最小的
  • Dockerfile中每一个指令都会建立一层,在其上执行这些命令,执行结束后,commit这一层的修改
  • RUN执行多个命令用&&连接,应保证层级最少,把不经常变化的层级放到最前面,这样可以最大程度使用镜像缓存,因为当某一层改变后,之后的几层就需要重新在这层的基础上构建.
  • EXPOSE 只是声明使用哪些端口,具体使用不受这个影响,通过-p命令指定内外端口
  • RUN命令是在打包成镜像的时候就执行了
  • CMDENTRYPOINT 区别可以看这个文章

制作docker镜像

标签:-name   test   uil   pos   容器   oca   构建   index   doc   

原文地址:https://www.cnblogs.com/lyalong/p/14299299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!