docker学习之二镜像创建
继上一篇docker入门之后写一点使用的经验。
通过命令:docker run -it REPOSITORY或IMAGE ID 注:-it后面跟的字段可以通过下面指令获得

创建运行的容器,会进入一个伪终端,如果使用ctrl+D或者使用exist命令来退出伪终端,会造成容器也终止运行。正确推出伪终端的姿势是:ctrl+P之后再按ctrl+q 这样就能把伪终端与容器分离了。
Ps:到现在为止可以自己粗略自己发现一些命令了,使用docker --help可以查看到一些命令。其中attach的功能可以实现重新登录到容器中,只是这时候attach后面跟的是container id,记住是容器的id不时镜像的id,docker ps命令可获得。attach命令输入之后回车会停住,需要再回车才能进入伪终端。

创建镜像:
创建镜像与Windows平台上类比的话就相当于你在虚拟机里面装了个系统(比如win7),然后在系统里面装上你自己的应用或软件,然后你就可以不用在别的机器上重新装系统了,只需要克隆这个虚拟机到其他机器上用。
创建镜像有两种方法,一个是使用docker commit命令在公有仓库里面的镜像的基础上创建一个新的镜像,这种方式不适合一个团队正在使用和配置的镜像;另一个方法是使用配置文件的方式官方叫做Dockerfile,与之配合的命令是docker build。
接下来详细介绍第二种方法
1.cd ~ 回到自己的用户目录下(之所以这样做是因为官方教程里面说了一句如果你是在windows系统中使用docker,那么就需要cd到/c/user/your_user_name目录下,所以类推,linux上我就cd ~一下)
2.创建一个文件夹,并在文件夹下创建一个Dockerfile
mkdir fileName
cd fileName
touch Dockerfile
3.在Dockerfile中输入如下内容
# 井号实现注释 #必须第一行指出基础的镜像,这里使用ubuntu FROM ubuntu:14.04 #创建者信息说明 MAINTAINER Kate Smith <ksmith@example.com> 镜像中需要运行的指令 RUN apt-get update && apt-get install -y ruby ruby-dev RUN gem install sinatra
这是很简易的dockerfile,一般情况下,Dockerfile中包括四部分信息:基础镜像信息(必选),创建者信息(可选),镜像操作的指令(按需添加)和容器启动时执行的指令(按需添加)。
指令的格式是:指令 执行任务(原文为:INSTRUCTION statement)
RUN这条指令可以让任务命令在镜像中运行,前面用到的FROM,MAINTAINER都是命令,除了这三个还有:
ADD <src> <targetDirectory> 该指令可以实现将本地文件复制添加到容器中。<src>可以是Dockerfile所在目录的一个相对路径(文件或目录);<targetDirectory> 是容器中的路径,会被创建。还有一个命令是COPY,格式和add一样,实现复制本机文件到容器中,推荐使用COPY。
expose(暴露容器端口号)命令格式是:EXPOSE <PORT> [<PORT> <PORT>......]
例如:EXPOSE 8081 22 23 暴露这些端口可以供互联的系统使用,比如你想虚拟个Hadoop集群啊,内存数据库集群什么的。
其它命令cmd(可运行.sh文件),env(指定环境变量),entrypoint,volume,user(指定容器运行时的用户名),workdir,onbuild就不一一介绍了。
4.dockerfile创建完成之后使用docker build来创建新的镜像
docker build -t ouruser/sinatra:v2 .
注意命令最后的点,这个是需要的,表示我们的Dockerfile在当前文件夹中。-t 指定ouruser拥有这个新镜像,sinatra指定镜像名,v2是版本号
5.从我们自己创建的镜像创建一个新的容器运行
docker run -t -i ouruser/sinatra:v2 /bin/bash
Ps:创建镜像这一部分我基本是翻译了官网的教程,但也补充了其他的资料。当你创建本地的镜像是基于ubuntu或者centos这些系统的时候,你可以先用docker pull从公有仓库中拉一个系统下来,拉镜像的时间根据你的网络资源而定,可能非常长,我就拉了很长时间,中间还是失败过好几次。本文创建镜像的部分没有截图实例就是因为ubuntu镜像没有拉下来,我就只是翻译了一下官网的教程,感觉应该没什么问题,后续有时间把图都补上。这两篇文章对付简单的应用大概都能应付了,可能有些指令什么的我没有详细介绍,但是你只要使用docker --help就可以查看到有哪些命令了,在使用docker subcommand --help 就可以查看命令具体有哪些参数可以设置了。
docker学习之二镜像创建的更多相关文章
- InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移
系列目录 InterSystems Ensemble学习笔记(一) Ensemble介绍及安装InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移 一 ...
- Docker学习(二): 镜像的使用与构建
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
- docker学习笔记二:常用命令
docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...
- Docker学习笔记二(linux下安装Docker)
Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...
- Docker学习(二)docker镜像操作
上一篇:docker学习(一)在centos7上安装docker 列出所有docker镜像 docker images 拉取镜像 docker pull 镜像名 我这里一Tomact为例 首先在Doc ...
- Docker学习笔记--2 镜像的创建
如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等应用服务环境,有下面三种方法: 1,根据系统镜像创建Docker容器,这时容器就相当于是一个虚拟机,进入容 ...
- Docker入门之二镜像
Docker大部分的操作都是围绕三大核心概念:镜像.容器.仓库.学Docker首先得了解这几个词.这几个词可能平时也会有涉及,但Docker中可能不是同样得概念. 一.三大核心概念 镜像:可能在安装软 ...
- 【Docker学习之二】Docker部署安装
环境 docker-ce-19.03.1-3.el7.x86_64 一.Docker的部署安装 Docker采用Linux(内核)技术,所以只能运行在Linux上,官方说Linux kernel至少3 ...
- Docker那些事儿之镜像创建
之前已经了解了docker的基本使用方式,简单的上手,也能让大部分人了解到这个技术的使用方法,今天继续说明docker如何构建自己所需要的镜像,开发人员掌握使用基础即可,有兴趣的可以自行深入研究 前言 ...
随机推荐
- 第4月第2天 nsinvocation崩溃 mvc videotrack
1. __unsafe_unretained id result = nil; [invocation getReturnValue:&result]; return result; http ...
- JSPatch热更新的利器.
如果用一句话来描述JSPatch,就是利用系统自带的JavaScriptCore.framework配合RunTime机制,进行实时的代码下载与运行.. 而且使用也很简单,启动,加载JS,运行... ...
- css3伪类、伪元素选择器---nth-child()和nth-of-type()选择器的区别
p:nth-child(2) 要满足两个条件,1:选择的是p元素的父元素的第二个子元素 2:选择的第二个子元素必须是p元素,如果不满足,则将不显示 p:nth-of-type(2) 选择父元素下的 ...
- 解决Unsupported major.minor version 51.0错误
解决Unsupported major.minor version 51.0错误使用jdk6运行项目时发生了Unsupported major.minor version 51.0错误.经过网上搜索发 ...
- 通过style控制圆形imageView显示
1. 2.drawable--style <?xml version="1.0" encoding="utf-8"?> <layer-list ...
- 函数floor(n)
Matlab函数floor(n): 仅取整数部分,剔除小数部分 例如: floor(9.2)=9; 仅此
- Excel2013 基本用法(上)
自动填充 对于数字填充 Excel对于处理数据非常方便,比如我们需要输入一个班级的学号,就可以只输入2个学号然后快捷填充就可以完成一个班的学号输入(如下图). 快捷填充,就是将鼠标移动到选中的单元格边 ...
- [MySQL]MySQL之权限管理
一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连接m ...
- GitHub for Windows呆瓜级操作1
如何安装.注册.创建仓库等操作请参考http://www.cnblogs.com/foreveryt/p/4077380.html 1.点击右上角+号创建本地新仓库LHJ.点击Create repos ...
- ABAP 出库单打印 产品 A搭A A搭B显示方式
*&---------------------------------------------------------------------* *& Report *& ...