docker镜像的分层

  • dockerfile中的每个指令都会创建一个新的镜像
  • 镜像层将被缓存和复用
  • 当dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
  • 某一层的镜像缓存失效之后,他之后的镜像层都会失效
  • 镜像层是不可变的,如果在某一层中添加一个添加一个文件,然后在下一层中删除它,则镜像中依然会包含该类文件

docker镜像的创建
docker镜像

  • 是应用发布的标准格式
  • 可支撑一个docker容器的运行
    docker镜像的创建方法
  • 基于已有镜像创建
  • 基于本地模板创建
  • 基于dockerfile创建
    dockerfile创建
    dockerfile是由一组指令组成的文件
    dockerfile结构四部分
  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令

dockerfile操作指令

  • FROM 镜像 :指定新镜像所基于的镜像第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
  • MAINTAINER 名字:说明镜像的维护人信息
  • RUN命令:在所基于的镜像上执行命令,并提交到新的镜像中
  • CMD[“要运行的程序”,“参数1,参数2”] :指令启动容器时要运行的命令或脚本,dockerfile只能有一条cmd命令,如果指定多条则只能最后一条被执行
  • EXPOSE 端口号 :指定新镜像加载到docker时要开启的端口
  • ENV 环境变量 变量值:设置一个环境变量的值,会被后面的RUN使用
  • ADD 源文件/目录 目标文件/目录 :将源文件复制到目标文件,源文件要与dockerfile位于相同目录中,或者是一个URL
  • COPY 源文件/目录 目标文件/目录 :将本地主机上的文件/目录复制到目标地点,源文件/目录要与dockerfile在相同的目录中
  • VOLUME[“目录”] :在容器中创建一个挂载点
  • USER 用户名/UID :指定运行容器的用户
  • WORKDIR 路径 :为后续的RUN、CMD、ENTRYPOINT指定工作目录
  • ONBUILD 命令 :指定所生成的镜像作为一个基础镜像时所要运行的命令
  • HEALTHCHECK :健康检擦

镜像创建
基于现有镜像创建

docker create -it centos /bin/bash   /创建容器
docker commit -m "new" -a "docker" 1a17d67df3cb docker:centos  ///创建名为docker:centos镜像 -m 表示参数   -a表示作者名字
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker              centos              e4909a72b3ec        2 minutes ago       237MB
centos              latest              470671670cac        3 months ago        237MB
centos              7                   5e35e350aded        5 months ago        203MB

基于本地模板创建镜像

 mkdir abc   创建目录
debian-7.0-x86-minimal.tar.gz   将镜像包挂载到abc中  mount.cifs
cat debian-7.0-x86-minimal.tar.gz | docker import - da | docker import - dacker:new  ///生成镜像

自定义镜像(dockerfile)

vim Dockerfile      创建dockerfile文件
#基于的基础镜像
FROM centos
#维护镜像用户信息
MAINTAINER The project <css>
#镜像操作指令安装apache软件
RUN yum -y update
RUN yum install -y httpd
#开启80端口
EXPOSE 80
#复制网站首页文件
ADD index.html /var/www/html/index.html
#将执行脚本复制到镜像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#启动容器时执行脚本
CMD ["/run.sh"]vim run.sh  ///创建一个脚本
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUNDecho "this is web" > index.htmldocker build -t httpd:centos .     ///生成镜像
docker run -d -p 1110:80 httpd:centos     ///新镜像运行容器

私有仓库创建

docker pull registry    ///下载registry
vim /etc/docker/daemon.json   ///进入加速文件
{"insecure-registries": ["192.168.175.151:5000"],"registry-mirrors": ["https://rqeddgpg.mirror.aliyuncs.com"]
}
systemctl restart docker.service    ///重启docker服务
docker create -it registry /bin/bash      基于registry镜像建立容器
///宿主机中的/data/registry自动创建挂载容器中的/tmp/registrydocker run -d -p 5000:5000 -v /data/registry:/tmp/registry registrydocker tag httpd:centos 192.168.175.151:5000/httpd     将镜像更改标签docker push 192.168.175.151:5000/httpd     开始上传镜像curl -XGET http://192.168.175.151:5000/v2/_catalog    ///获取私有镜像列表docker pull 192.168.175.151:5000/httpd     私有仓库下载镜像

docker数据卷

//创建关联容器其中 /var/www为宿主机目录   /data1为挂载容器的目录    -v 表示数据卷docker run -v /var/www:/data1 --name web1 -it centos /bin/bash

docker数据卷容器
///创建名为web100并且创建两个数据卷 /data1 /data2

 ///创建名为web100并且创建两个数据卷 /data1  /data2
docker run --name web100 -v /data1 -v/data2 -it centos /bin/bash
///创建新容器挂载数据容器web100

docker端口映射

docker run -d -P nginx    -P表示随机映射
docker run -d -p 3030:80 nginx  -p表示固定端口映射

容器互联

docker run -itd -P --name web centos /bin/bash  ///创建一个名为web的随机端口-P的容器
docker run -itd -P --name web1 --like web:web centos /bin/bash  ///创建一个名为web2容器且设置--like 与web连接的容器  用web1可以ping通web

docker镜像 私有创库、端口映射以及 数据卷的创建相关推荐

  1. 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联

    文章目录 一.端口映射 1.-P随机端口 2.映射指定一个端口 3.映射指定多个端口 4.映射到指定端口的指定地址 5.映射到指定端口的任意地址 6.查看端口映射情况 二.数据卷与数据卷容器 1.挂载 ...

  2. docker的简单操作和端口映射

    docker的简单操作和端口映射:https://www.cnblogs.com/lixaingyang/p/11976827.html docker的简单操作和端口映射 一:简介 Docker镜像 ...

  3. Docker下部署Mysql映射端口并挂载数据卷

    Docker下部署Mysql映射端口并挂载数据卷 1.搜索mysql镜像文件版本 2.下载最新版本mysql 或者 下载指定版本mysql 2.1 下载最新版[一般项目不直接使用最新版] 2.2 下载 ...

  4. Docker : 数据卷(创建、挂载、查看、删除)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 数据卷 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数 ...

  5. docker可道云怎么挂载移动硬盘_数据卷的挂载

    #### 命令挂载 语法:docker run –it –v /宿主机绝对路径目录:/容器内目录\[:权限\] 镜像名或镜像ID ![](https://img.kancloud.cn/de/11/d ...

  6. docker 改host_Docker容器修改端口映射

    对于已经建立的docker容器,需要新增容器对主机的端口映射,主要分为三种: 一:通过修改配置文件修改docker容器端口映射 1.使用docker ps -a命令找到要修改容器的CONTAINER ...

  7. docker 文件存放路径, 修改端口映射

    文章目录 如何获取容器的启动命令 1, 容器层:文件存放路径 后天修改容器端口 a, 先提交旧容器为新的镜像,再启动新容器 b, 修改容器配置文件置文件:hostconfig.json 2, 镜像层: ...

  8. 【docker详解07】-端口映射

    1.指定端口映射 语法: docker run  -itd  --name [容器名]  -p  [宿主机端口]:[容器端口]   [镜像名] 示例: docker run -itd --name m ...

  9. Docker(4)-容器互联与端口映射

    容器互联 默认情况下,容器都是各自独立运行,与世隔绝. Docker提供了一个名为docker0的虚拟网桥,它会为每个相连的容器分配一个虚拟子网.但是尽管容器都连在同一个虚拟网桥上,如果没有额外的配置 ...

  10. Docker中修改mysql容器端口映射

    一.问题描述: 我本地有一个mysql,端口是3306,然后我用docker开启了一个mysql容器,端口还是3306,导致我用docker上的mysql的时候没法用,于是想到端口映射出了问题,就把d ...

最新文章

  1. 26.angularJS $routeProvider
  2. Android播放器自定义,android surfaceView+mediaPlayer 自定义视频播放器
  3. 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3
  4. LeetCode 面试题 10.02. 变位词组
  5. bootstrap-table文档
  6. 原生安卓苹果APP-java抢单派单系统平台源码
  7. linux屏幕分辨率文件,Ubuntu 16.04 LTS设置屏幕分辨率显示Unknown display 解决
  8. 破局:滚动率知识在信贷风控中的系统总结
  9. Its configuration is R5 3600, ASUS B450M motherboard
  10. java实现基于关键字的文件夹(文件)的搜索、文件夹(文件)的复制、删除
  11. BeanShell变量和方法的作用域
  12. 使用Spine来完成骨骼动画
  13. 如何将在不同文件夹下的批量plt文件转换为txt文件--python
  14. 品质qc工程图_QC工程图_(品管).xls
  15. C#学习笔记:什么是哈希值
  16. 1194: 总成绩排序(结构体专题)
  17. 【EXLIBRIS】不奪
  18. web页面性能检测工具Lighthouse
  19. 突破现实的墙 | 众猎创始人Tony Guo和他的猎界风云
  20. QT210 自制bootloader 移植kernel3.4.2 制作ramdisk busybox1.20.2

热门文章

  1. 树莓派如何接硬盘_树莓派之挂载移动硬盘
  2. 开始编写寄几的 CSS 基础库
  3. 分享一道用Python基础+蒙特卡洛算法实现排列组合的题目(附源码)
  4. 传奇故事-领军AI的华裔女性-李飞飞
  5. 纯HTML+CSS实现3D炫酷魔方(相册)
  6. 解决chrome 浏览器不能看视频
  7. 【Python爬虫】IOS苹果商店指定APP评论爬取
  8. 奔梦向前-web前端开发工具-简称DW软件适合写网页制作代码-2020-04-25
  9. python内置函数可以返回列表、元组_Python内置函数_________可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。...
  10. 1.4 数列极限概念的推广