Docker镜像操作

学完了一些最基本的操作之后,我学习了一些关于docker镜像的基本操作。
首先来学习一下从docker hub上拉取镜像,以centos镜像为例,使用docker search命令搜索镜像:

从图上可以看见在docker hub搜索到很多镜像,接着学习镜像的拉取,使用docker pull命令将镜像从docker hub拉取到本地:

这样就可以通过docker images命令来查看本地的镜像:

而下载到本地的镜像存放在/var/lib/docker/overlay2

第一行就是下载的centos镜像在本地的文件。
学会了下载镜像,然后学习了删除镜像,删除镜像使用docker rmi命令:

删除时可以使用镜像的名字也可以使用镜像的ID。
接着学习如何构建镜像,构建镜像有以下两种方法:docker commit命令和dockerfile,先来学习用docker commit命令构建镜像。
docker commit命令一般用于将修改过后的镜像提交为一个新的镜像,首先使用centos镜像起一个容器,接着对容器进行更改,然后使用docker commit命令构建新的镜像,接着用这个修改过的容器构建新的镜像:


docker commit命令的语法是这样的docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS有如下几个选择:

  • -a :提交的镜像作者名字。

  • -c :使用Dockerfile指令来创建镜像。

  • -m :提交时的说明文字。

  • -p :在commit时,将容器暂停。
    构建完成镜像之后,来试一下构建好的镜像是不是能用:

    可以看到刚刚构建的镜像可以用。
    接下来是使用Dockerfile构建镜像:

    首先建立一个空的docker文件夹,然后再docker文件夹里面新建一个Dockerfile文件(注意:这里的文件名字只能用dockerfile命名)

    创建完成之后执行以下操作,(注意:构建操作只能在和Dockerfile同级目录下执行):

    构建完成之后可以使用docker images命令查看:

    这里就可以看到刚刚构建的名为centos的镜像了。
    现在以这个镜像为模板运行容器:
    可以看到这里启动容器之后默认运行了我刚刚写在DockerfileCMD里面的命令,总结一下Dockerfile中需要使用的命令。
  • FROM指令
    DockerFile第一条必须为FROM指令。如果同一个DockerFile创建多个镜像时,可使用多个FROM指令。
  • MAINTAINER
    指定维护者的信息。
  • RUN
    每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像,因为镜像是分层的
  • CMD
    CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。
  • EXPOSE
    Docker 容器对外映射的端口,需要在 docker run 的时候使用-p或者-P选项生效。
  • ENV
    指定一个环境变量,会被后面的RUN指令使用。
  • ADD
    ADD复制本地主机文件、目录或者远程文件URLS添加到容器指定路径中,ADD命令会在复制时解压压缩文件。
  • COPY
    COPY复制新文件或者目录从 并且添加到容器指定路径中,不能添加远程文件的URLS。
  • VOLUME
    创建一个可以从本地主机或其他容器挂载的挂载点。
  • WORKDIR
    为后续的RUN命令指定工作目录
    这样就知道了如何构建镜像。

Docker容器学习与分享05的更多相关文章

  1. Docker容器学习与分享07

    Docker容器网络 在分享06中学完了bridge网络,接着学习none网络和host网络. Docker在安装时会在host上默认创建三个网络,分别是bridge.host.null. [root ...

  2. Docker容器学习与分享04

    Docker容器的基本操作(2) 基于docker分享03的centos容器,接着学习docker容器的基本操作. docker分享03中创建了一个centos镜像,如果想要查看容器的具体信息就要使用 ...

  3. Docker容器学习与分享03

    Docker容器的基本操作 所有的docker命令都是以docker开头,也就是指调用docker程序.我学习的第一个命令就是docker run,运行一个容器.以Docker分享02中的容器为例: ...

  4. Docker容器学习与分享12

    Docker多主机管理 之前在一台Centos7上安装了Docker,如果是在多台主机上都安装Docker,用手动安装的方法不光效率低下,而且有可能出错,所以可以使用Docker Machine进行多 ...

  5. Docker容器学习与分享10

    Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...

  6. Docker容器学习与分享09

    Docker容器之间的相互通信 先新建两个不同的网段,就用分享08里的两个网段作为新建的网段. [root@promote ~]# docker network ls NETWORK ID NAME ...

  7. Docker容器学习与分享08

    Docker容器网络 Docker除了默认创建的三种网络外,还可以自定义网络. 首先创建一个bridge类型的网络,使用docker network create命令. [root@promote ~ ...

  8. Docker容器学习与分享06

    Docker容器网络 Docker有三种原生网络:none网络.host网络.bridge网络. 先来学习一下bridge网络. 首先使用ifconfig命令查看一下本机的网络设备: 从图中可以看见多 ...

  9. Docker容器学习与分享02

    1.docker容器的创建 首先运行一个centos容器,感受一下Docker容器的便捷 首先先看一下镜像仓库 发现仓库里没有镜像,也就是没有创建容器的模板,这时考虑从REPOSITORY中拉取镜像( ...

随机推荐

  1. (转)Spring常见注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...

  2. 基于opencv将视频转化为字符串Java版

    基于opencv将视频转化为字符串Java版 opencv java  先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...

  3. Re:从零开始的Spring Session(三)

    上一篇文章中,我们使用Redis集成了Spring Session.大多数的配置都是Spring Boot帮我们自动配置的,这一节我们介绍一点Spring Session较为高级的特性. 集成Spri ...

  4. 使用cgroup进行系统资源使用限制

    环境:Centos 7 64 一.对某个进程限制它使用cpu为50% 1.先写一个占用cpu较高的脚本 x=0 while [ True ];do x=$x+1 done; 2.可以看到运行后cpu使 ...

  5. git中的ssh和https方式的使用(gitee为例)

    在使用git管理代码,或者使用github,国内的码云(gitee)的时候,有两种方式可以使用,分别是https和ssh,以下均使用gitee为例. ssh方式 配置ssh,如果不配置ssh的话,cl ...

  6. 百度智能小程序弹窗组件wcPop|智能小程序自定义model弹窗模板

    百度智能小程序自定义弹窗组件wcPop|百度小程序model对话框|智能小程序弹窗界面模板 最近百度也推出了自己的智能小程序,如是就赶紧去试了下,官方提供的api还不是狠完整.而且官方提供的弹窗组件也 ...

  7. 【读书笔记】iOS-自动布局

    自动布局是一项强大的功能,它允许开发者创建一个单一的用户界面,它会自动调整屏幕大小,方向和本地化,Xcode5中的编辑界面的自动布局功能已经大大增强了.当约束缺失或错误配置时,界面生成器可以修复布局. ...

  8. CSS控制Span强制换行亲测

    span { word-wrap: break-word; word-break: break-all; white-space: pre-wrap !important; }

  9. OpenCV 图像特效

    1.RGB ->灰度 #灰度 方式1 img=cv2.imread('b.png',0) img1=cv2.imread('b.png',1) height=img1.shape[0] widt ...

  10. Android--PullToRefreshListView的onRefreshComplete()不起作用的问题

    今天用到了网上开源的下拉刷新组件PullToRefreshListView的第三方下拉刷新的ListView 我们发现 有时候我们当使用它的onRefreshComplete()方法是,我们下拉出来的 ...