Docker容器学习与分享05
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的镜像了。
现在以这个镜像为模板运行容器:
可以看到这里启动容器之后默认运行了我刚刚写在Dockerfile中CMD里面的命令,总结一下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的更多相关文章
- Docker容器学习与分享07
Docker容器网络 在分享06中学完了bridge网络,接着学习none网络和host网络. Docker在安装时会在host上默认创建三个网络,分别是bridge.host.null. [root ...
- Docker容器学习与分享04
Docker容器的基本操作(2) 基于docker分享03的centos容器,接着学习docker容器的基本操作. docker分享03中创建了一个centos镜像,如果想要查看容器的具体信息就要使用 ...
- Docker容器学习与分享03
Docker容器的基本操作 所有的docker命令都是以docker开头,也就是指调用docker程序.我学习的第一个命令就是docker run,运行一个容器.以Docker分享02中的容器为例: ...
- Docker容器学习与分享12
Docker多主机管理 之前在一台Centos7上安装了Docker,如果是在多台主机上都安装Docker,用手动安装的方法不光效率低下,而且有可能出错,所以可以使用Docker Machine进行多 ...
- Docker容器学习与分享10
Docker容器向外提供服务 用分享04中的Nginx服务来试一下. 不过这次我直接用Nginx镜像创建容器,先下载Nginx镜像. [root@promote ~]# docker search n ...
- Docker容器学习与分享09
Docker容器之间的相互通信 先新建两个不同的网段,就用分享08里的两个网段作为新建的网段. [root@promote ~]# docker network ls NETWORK ID NAME ...
- Docker容器学习与分享08
Docker容器网络 Docker除了默认创建的三种网络外,还可以自定义网络. 首先创建一个bridge类型的网络,使用docker network create命令. [root@promote ~ ...
- Docker容器学习与分享06
Docker容器网络 Docker有三种原生网络:none网络.host网络.bridge网络. 先来学习一下bridge网络. 首先使用ifconfig命令查看一下本机的网络设备: 从图中可以看见多 ...
- Docker容器学习与分享02
1.docker容器的创建 首先运行一个centos容器,感受一下Docker容器的便捷 首先先看一下镜像仓库 发现仓库里没有镜像,也就是没有创建容器的模板,这时考虑从REPOSITORY中拉取镜像( ...
随机推荐
- Java设计模式学习记录-简单工厂模式、工厂方法模式
前言 之前介绍了设计模式的原则和分类等概述.今天开启设计模式的学习,首先要介绍的就是工厂模式,在介绍工厂模式前会先介绍一下简单工厂模式,这样由浅入深来介绍. 简单工厂模式 做法:创建一个工厂(方法或类 ...
- 并发编程—— FutureTask 源码分析
1. 前言 当我们在 Java 中使用异步编程的时候,大部分时候,我们都会使用 Future,并且使用线程池的 submit 方法提交一个 Callable 对象.然后调用 Future 的 get ...
- AngularJS学习笔记(四)内置指令
说说指令 不得不赞叹,指令是ng最为强大的功能之一,好吧,也可以去掉之一,是最强大的功能.ng内置了许多自定义的指令,这避免了我们自己去造轮子.同时,ng也提供了自定义指令的功能,可以让我们的页面元素 ...
- tomcat 防火墙如何设置
tomcat 防火墙能够有效的防护我们电脑,那么我们要怎么样去设置呢?下面由学习啦小编给你做出详细的tomcat 防火墙设置方法介绍!希望对你有帮助! tomcat 防火墙设置方法一: 1.为tomc ...
- [日常] Go语言圣经--浮点数习题
练习 3.1: 如果f函数返回的是无限制的float64值,那么SVG文件可能输出无效的多边形元素(虽然许多SVG渲染器会妥善处理这类问题).修改程序跳过无效的多边形. 练习 3.2: 试验math包 ...
- chomd文件权限授予
drwxr -x r- x 什么意思| | | | | | | | | | 12345678910 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道第2-4位表示这个文件的属主拥 ...
- Android-Messenger跨进程通信
http://blog.csdn.net/lmj623565791/article/details/47017485 一.概述 我们可以在客户端发送一个Message给服务端,在服务端的handler ...
- Android照片墙-多图加载
http://blog.csdn.net/guolin_blog/article/details/9526203 照片墙这种功能现在应该算是挺常见了,在很多应用中你都可以经常看到照片墙的身影.它的设计 ...
- ubuntu修改ssh服务的端口号
一.找到ssh配置文件位置 vim /etc/ssh/sshd_config 二.修改ssh登录端口号 修改 port 22 为 port xxxx 三.重启ssh服务 /etc/init.d/ssh ...
- gulp常用插件汇总
1.gulp-sass 预编译 sass 文件为 css 文件,SASS 不多说,如果项目中有使用 sass ,那么这个插件应该是必备的.前面的一篇文章中,已经对该插件有所使用了,可配置编译后输出风格 ...