Docker学习第二天
CentOS 系列安装 Docker
Docker 支持 CentOS6 及以后的版本。
CentOS6
对于 CentOS6,可以使用 EPEL 库安装 Docker,命令如下
[root@MSJTVL-MJSP-A35 opt]# yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
Loaded plugins: fastestmirror, security
Setting up Install Process
epel-release--.noarch.rpm | kB :
Examining /var/tmp/yum-root-dp2p3m/epel-release--.noarch.rpm: epel-release--.noarch
/var/tmp/yum-root-dp2p3m/epel-release--.noarch.rpm: does not update installed package.
Error: Nothing to do
[root@MSJTVL-MJSP-A35 opt]# yum install docker-io
CentOS7
CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装:
$ sudo yum install docker
安装之后启动 Docker 服务,并让它随系统启动自动加载。
[root@MSJTVL-MJSP-A35 opt]# service docker start
Starting cgconfig service: [ OK ]
Starting docker: [ OK ]
[root@MSJTVL-MJSP-A35 opt]# chkconfig docker on
Docker 镜像
镜像是 Docker 的三大组件之一
Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库)。
下面介绍:
- 从仓库获取镜像;
- 管理本地主机上的镜像;
- 介绍镜像实现的基本原理。
获取镜像
可以使用 docker pull 命令来从仓库获取所需要的镜像。
下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。
[root@MSJTVL-MJSP-A35 docker]# docker pull ubuntu:12.04
12.04: Pulling from ubuntu
191c4e1e4400: Pull complete
fd04a9dc157f: Pull complete
be08d59fa177: Pull complete
ecf8c2069900: Pull complete
8ea067ad7a27: Pull complete
8ea067ad7a27: Pulling fs layer
Digest: sha256:57a83f4b4f43f2d008c8ceaa9663a6f7ecd061fefa80da8f32e0f22c7b923390
Status: Downloaded newer image for ubuntu:12.04
下载过程中,会输出获取镜像的每一层信息。
该命令实际上相当于 $ sudo docker pull registry.hub.docker.com/ubuntu:12.04 命令,即从注册服务器registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 12.04 的镜像。
为了方便在后续工作中使用这个镜像,还可以使用docker tag 命令为本地镜像添加新的标签,例如:
[root@MSJTVL-MJSP-A35 docker]# docker tag ubuntu:12.04 unbutn:02.09
[root@MSJTVL-MJSP-A35 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 12.04 8ea067ad7a27 weeks ago 103.6 MB
unbutn 02.09 8ea067ad7a27 weeks ago 103.6 MB
列出本地镜像
使用 docker images 显示本地已有的镜像。
[root@MSJTVL-MJSP-A35 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 12.04 8ea067ad7a27 7 weeks ago 103.6 MB
unbutn 02.09 8ea067ad7a27 7 weeks ago 103.6 MB
在列出信息中,可以看到几个字段信息
- 来自于哪个仓库,比如 ubuntu
- 镜像的标记,比如 12.04
- 它的
ID号(唯一) - 创建时间
- 镜像大小
其中镜像的 ID 唯一标识了镜像,注意到 ubuntu:12.04 和 ubuntu:02.09 具有相同的镜像 ID,说明它们实际上是同一镜像。
TAG 信息用来标记来自同一个仓库的不同镜像。例如 ubuntu 仓库中有多个镜像,通过 TAG 信息来区分发行版本,例如 10.04、12.04、12.10、13.04、14.04 等。例如下面的命令指定使用镜像 ubuntu:12.04 来启动一个容器。
[root@MSJTVL-MJSP-A35 docker]# docker run -t -i ubuntu:12.04 /bin/bash
root@d67d32057f1c:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
root@d67d32057f1c:/# pwd
/
root@d67d32057f1c:/# id
uid=(root) gid=(root) groups=(root)
root@d67d32057f1c:/# ip a
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc noqueue state UP
link/ether ::ac::: brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/ scope global eth0
inet6 fe80:::acff:fe11:/ scope link
valid_lft forever preferred_lft forever
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
inet6 ::/ scope host
valid_lft forever preferred_lft forever
root@d67d32057f1c:/# exit
如果不指定具体的标记,则默认使用latest标记信息。
创建镜像
创建镜像的方法有三种:基于已有镜像的容器创建,基于本地模板导入,基于Dockerfile创建
接下来重点介绍前两种,最后一种基于Dockerfile创建的方法将在后续的专门详细介绍
基于已有镜像的容器创建
该方法主要使用docker commit命令,其命令格式为docker commit[OPTIONS]CONTAINER[REPOSUTORY[:TAG]] 主要选项包括:
·-a,--author="作者信息"
·-m,--message="提交信息"
·-p,--pause=true提交时暂停容器运行
下面演示如何使用命令创建新的镜像。
首先启动一个镜像,并在其中进行修改操作,例如创建一个test文件,之后退出:
[root@MSJTVL-MJSP-A35 docker]# docker run -t -i ubuntu:12.04 /bin/bash
root@5b098fe766ca:/# touch test
root@5b098fe766ca:/# exit
exit
[root@MSJTVL-MJSP-A35 docker]#
注:记住容器的ID:5b098fe766ca。
此时该容器跟原Ubuntu:12.04镜像相比,已经发生了改变,可以使用docker commit命令来提交一个新的镜像。提交时可以使用ID或者名称来指定容器
[root@MSJTVL-MJSP-A35 docker]# docker commit -m "Added a new file" -a "Docker Tian" 5b098fe766ca test
1a67c55ea39412ca5f64b9b56050683dd5d269ef0c6c037412d1a20b033d6c3d
[root@MSJTVL-MJSP-A35 docker]#
此时查看本地镜像列表,即可看到先创建的镜像:
[root@MSJTVL-MJSP-A35 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test latest 1a67c55ea394 About a minute ago 103.6 MB
ubuntu 12.04 8ea067ad7a27 weeks ago 103.6 MB
unbutn 02.09 8ea067ad7a27 weeks ago 103.6 MB
基于本地模板导入
也可以直接从一个操作系统模板文件导入一个镜像。在这里,推荐使用Open VZ提供的模板创建。在OPENVZ模板的下载地址为:https://openvz.org/Download/template/precreated
比如,笔者现在一个下载一个centos的模板压缩包后,可以使用以下的命令导入,并且查看新导入的镜像,已经在本地存在了:
[root@MSJTVL-MJSP-A35 docker]# cat centos--x86-minimal.tar.gz |docker import - centos:14.04
2197ed1032f71381bf4746f2423aea5b22f9dacd7407c1794ea36d0b6a70a84e
[root@MSJTVL-MJSP-A35 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 14.04 2197ed1032f7 minutes ago 512.1 MB
test latest 1a67c55ea394 hours ago 103.6 MB
ubuntu 12.04 8ea067ad7a27 weeks ago 103.6 MB
unbutn 02.09 8ea067ad7a27 weeks ago 103.6 MB
存出和载入镜像
可以使用docker save 和docker load命令来存出和载入镜像。
存出镜像
如果要存出镜像到本地文件,可以使用docker save命令。例如ubuntu:12.04镜像为文件ubuntu_12.04.tar
[root@MSJTVL-MJSP-A35 docker]# docker save -o ubuntu_12..tar ubuntu:12.04
[root@MSJTVL-MJSP-A35 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 14.04 2197ed1032f7 minutes ago 512.1 MB
test latest 1a67c55ea394 hours ago 103.6 MB
ubuntu 12.04 8ea067ad7a27 weeks ago 103.6 MB
unbutn 02.09 8ea067ad7a27 weeks ago 103.6 MB
<none> <none> 511136ea3c5a years ago B
[root@MSJTVL-MJSP-A35 docker]# ll
total
-rw-r--r-- root root Feb : centos--x86-minimal.tar.gz
-rw-r--r-- root root Feb : ubuntu_12..tar
[root@MSJTVL-MJSP-A35 docker]#
导入镜像
可以使用docker load从存出的本地文件中再导入到本地镜像库,例如从文件ubuntu_12.04.tar到入镜像到本地镜像列表,如下所示:
[root@MSJTVL-MJSP-A35 docker]# docker load --input ubuntu_12..tar
Docker学习第二天的更多相关文章
- Docker学习第二天-容器
Docker 容器 容器是 Docker 又一核心概念. 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环 ...
- Docker学习第二天(Docker容器管理)
简介 emmmm Docker 容器管理 推荐文章:容器技术概述 run里面的子选项 1.使用run命令创建容器 docker container run -it ubuntu /bin/bash / ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...
- Docker 入门 第二部分: 容器
目录 Docker 入门 第二部分: 容器 先决条件 介绍 你的新开发环境 使用 Dockerfile 定义一个容器 Dockerfile 应用本身 requirements.txt app.py 构 ...
- docker学习教程
我们的docker学习教程可以分为以下几个部分,分别是: 第一:docker基础学习 第二:docker日志管理 第三:docker监控管理 第四:docker三剑客之一:docker-machine ...
- [转帖]Docker学习之Dockerfile命令详解
Docker学习之Dockerfile命令详解 https://it.baiked.com/system/docker/2436.html 图挺好的 前言 之前,制作镜像的伪姿势搭建已经见过了,今天介 ...
- DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结
前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...
- Docker学习(六)——Dockerfile文件详解
Docker学习(六)--Dockerfile文件详解 一.环境介绍 1.Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级父目录下,可以为Dockerfile父目录的子目录 ...
随机推荐
- c#定时调用作业
1.在Global.asax文件中添加启动线程 protected void Application_Start(object sender, EventArgs e) { Thread ThServ ...
- 展讯通信:文章"紫光收购后展讯困难重重”失实(展讯的成就确实很高)
6月22日上午消息,展讯通信官方微信对自媒体文章<五大危机缠身,紫光收购后展讯困难重重>作出声明,称,其中内容严重失实,对公司造成了不良影响,并表示,将坚决采取法律手段维护自身的合法权益. ...
- 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
原文:使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理 摘要 通过对博客文章的管理,实现外键操作. 目录[-] 八.博客文章管理 1.查看文章 2.添加博客 3 ...
- php 如何利用 soap调用.Net的WebService asmx文件
原文:php 如何利用 soap调用.Net的WebService asmx文件 最近,帮一个同行测试用.net写的WebService接口,C#调用通过,现在需要测试一下php版本对它的调用,经过各 ...
- ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区 1 学习资源 用户在学习和应用过程中,可以参考的资源如下: 1. ...
- 危险的DDD聚合根
原文:危险的DDD聚合根 DDD的核心是聚合.这没有问题,大家都认同.但关于DDD中的聚合方式,其实我还是有些担心,下面说说我的想法,希望大家参与讨论.其实当初第一次看到DDD中关于聚合根部分论述的时 ...
- 解决C/C++程序执行一闪而过的方法(使用getchar,或者cin.get,不推荐system(“pause”))
简述 在VS编写控制台程序的时候,包括使用其他IDE(Visual C++)编写C/C++程序,经常会看到程序的执行结果一闪而过,要解决这个问题,可以在代码的最后加上system(“pause”).g ...
- ab fails to connect to localhost
The following command fails: $ ab -n 1 localhost:8000/ ... Benchmarking localhost (be patient)...apr ...
- java关键字之synchronized
1.synchronized可以用了修饰一个普通方法,或者代码块,这个时候synchronized锁定的是当前对象,只要有一个线程在访问对应的方法或代码块,其他线程必须等待.2.synchronize ...
- python网络爬虫(10)分布式爬虫爬取静态数据
目的意义 爬虫应该能够快速高效的完成数据爬取和分析任务.使用多个进程协同完成一个任务,提高了数据爬取的效率. 以百度百科的一条为起点,抓取百度百科2000左右词条数据. 说明 参阅模仿了:https: ...