戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

Docker实战(六)搭建自己的Docker Registry

日期:2016年5月4日 作者: 分类:运维 阅读:2,354

Docker Registry 是一个用来管理Docker镜像的服务,本身也是一个Docker容器。大部分情况下都可以使用Docker Hub,私有的Docker Registry使用场景主要在当需要对容器镜像存储进行完全控制或需要把镜像管理进行集成的情况。

一、Docker Registry 部署

由于 Docker Registry 已经被制作成一个Docker镜像,所以安装部署非常简单,只需要按照我们通常的docker run就可以,如果本地没有 registry 的镜像,则会自动从 Docker Hub 上获取。

需要注意的是 Registry 默认的对外服务端口是 5000,如果我们宿主机上运行的 Registry 需要对外提供服务,可以通过映射端口的方式提供。

本节实验中我们使用 registry:2 镜像,这个镜像为2.0版本的Registry。

部署 Docker Registry的命令:

docker run -d -p 5000:5000 --restart=always --name registry registry:2

停止和删除 Registry 只需要用容器管理中学到的 docker stopdocker rm命令。

阅读全文…

Docker实战(五)编写Dockerfile

日期:2016年5月3日 作者: 分类:运维 阅读:1,223

目标:编写Dockerfile搭建LAMP环境,并能通过ssh连接到容器。

一、创建Dockerfile文件

首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件:

编写Dockerfile

二、Dockerfile 基本框架

Dockerfile一般包含下面几个部分:

  1. 基础镜像:以哪个镜像作为基础进行制作,用法是FROM 基础镜像名称
  2. 维护者信息:需要写下该Dockerfile编写人的姓名或邮箱,用法是MANITAINER 名字/邮箱
  3. 镜像操作命令:对基础镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN 命令
  4. 容器启动命令:当基于该镜像的容器启动时需要执行哪些命令,常见的是CMD 命令ENTRYPOINT

在本节实验中,我们依次先把这四项信息填入文档。Dockerfile中的#标志后面为注释,可以不用写。

打开Dockerfile,依次输入下面的基本框架内容:

阅读全文…

Docker实战(四)网络管理

日期:2016年4月29日 作者: 分类:运维 阅读:760

一、Docker网络基本配置

1)默认配置

Docker服务启动时会自动创建一个 docker0 的虚拟网桥,后续新创建的容器都会有个虚拟接口连接到这个网桥:

Docker网络管理

Docker网桥会设置为NAT模式,自动分配一个网段,本机环境中docker0的地址是172.17.0.1,每个容器都会自动分配的到一个IP地址。

可以通过docker inspect redis查看名为redis容器的网络配置信息。

我们可以为 Docker 服务指定不同的网桥以及网段,这些配置都可以写在 /etc/default/docker 文件中,作为服务启动的参数。

2)配置文件 /etc/default/docker

该文件为LMDE2 操作系统中 Docker 服务启动时使用的配置文件,不同的操作系统位置会有不同。这个文件本身是个 Shell 脚本。

首先查看文件内容:

阅读全文…

Docker实战(三)镜像管理

日期:2016年4月28日 作者: 分类:运维 阅读:1,342

简单的说镜像就是一个容器的只读模板,用来创建容器。当运行容器时需要指定镜像,如果本地没有该镜像,则会从Docker Registry下载。默认查找的是Docker Hub。Docker的镜像是增量的修改,每次创建新的镜像都会在老的镜像上面构建一个增量的层,使用到的技术是Another Union File System(AUFS)。

一、使用 Docker Hub

镜像存储中的核心概念仓库(Repository)是镜像存储的位置。Docker 注册服务器(Registry)是仓库存储的位置。每个仓库包含不同的镜像。

比如一个镜像名称 ubuntu:14.04,冒号前面的ubuntu是仓库名,后面的14.04是TAG,不同的TAG可以对应相同的镜像,TAG通常设置为镜像的版本号。

Docker Hub 是Docker官方提供公共仓库,提供大量的常用镜像,由于众所周之的原因经常连接Docker Hub会比较慢,所以我们也可以选择一些国内提供类似Docker Hub镜像服务站点。连接Docker Hub的常用命令包括:

# 搜索镜像
docker search ...

# 下载镜像
docker pull ...

阅读全文…

Docker实战(二)数据卷管理

日期:2016年4月27日 作者: 分类:运维 阅读:1,432

Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。

数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数据卷,类似在系统中使用 mount 挂载一个文件系统。

一、数据卷创建

容器管理实验中我们学习的命令 docker run 用来创建容器,可以在使用改命令时添加 -v 参数,就可以创建并挂载一个到多个数据卷到当前运行的容器中,-v的作用是将宿主机的一个目录作为容器的数据卷挂载到容器中,使宿主机和容器之间可以共享一个目录,如果本地路径不存在,Docker也会自动创建。

# 创建两个目录
mkdir /tmp/data1 /tmp/data2 

# 分别将两个目录挂载到新创建的容器上
docker run -t -i --name docker2 -v /tmp/data1:/data1 -v /tmp/data2:/data2 ubuntu /bin/bash

Docker数据卷管理

上述命令中 -v 参数可以使用多次,并挂在多个数据卷到容器中。后面的参数信息中冒号前面是宿主机的本地目录,冒号后面是容器中的挂载目录。

阅读全文…

Docker实战(一)容器管理

日期:2016年4月26日 作者: 分类:运维 阅读:471

Linux容器技术很早就有了,比较有名的是被集成到主流Linux内核中的LXC项目。容器通过对操作系统的资源访问进行限制,构建成独立的资源池,让应用运行在一个相对隔离的空间里,同时容器间也可以进行通信。

容器技术对比虚拟化技术,容器比虚拟化更轻量级,对资源的消耗小很多。容器操作也更快捷,启动和停止都要比虚拟机快。但Docker容器需要与主机共享操作系统内核,不能像虚拟机那样运行独立的内核。

Docker是一个基于LXC技术构建的容器引擎,基于GO语言开发,遵循Apache2.0协议开源。Docker的发展得益于为使用者提供了更好的容器操作接口。包括一系列的容器,镜像,网络等管理工具,可以让用户简单的创建和使用容器。

Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念就是 Build once, Run anywhere。

Docker容器技术的典型应用场景是开发运维上提供持续集成和持续部署的服务。

一、Docker安装

Docker的安装教程非常多,此处就不写了,各种系统下安装教程可以点击查看官方安装文档

二、创建第一个容器

如果我们需要一个保持运行的容器呢,最简单的方法就是给这个容器一个可以保持的应用,比如bash,运行 ubuntu 容器并进入容器的 bash:

docker run -t -i ubuntu /bin/bash

Screenshot from 2016-04-26 12:52:40

阅读全文…