docker使用手册

更新时间:2023-12-18 06:08:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

概念

Docker daemonDocker imagesDocker clientDocker RegistriesDocker containers Docker client

用户通过Docker client向Docker daemon发送指令

Docker daemon

Docker的核心运行在一台机器上,内部包含三个组件。

Docker images

是一个模板,内部可以包含自己的中间件和程序。类似于一个归档文件。系统的改变可以通过增加image来实现。多个image文件通过unionFS(linux,unix中的一个module)被整合成一个新文件,作为linux的rootfs。如果你的程序需要升级,而不需要更改操作系统,那

么你可以删除原有程序所在的image,然后加入新的image即可。通常会从doceker hub上下载一个基础image,例如一个centos的系统,或者是一个装了mysql的centos系统,然后通过加入自己的层来达到个性化部署的目的。

Hub上的Image name有两种格式

1. image_name 就是一个名字,例如centos或者centos:v5。这个名字代表是hub官方维护的image

2. username/image_name 用户名/image_name。例如wwh/Hadoop。这个名字代表是该用户负责维护这个image

image_name由三部分组成REGISTRY_HOST/REPOSITORY:TAG。如果省略TAG,这时候TAG=latest。如果省略REGISTRY_HOST,REGISTRY_HOST=hub的网址。docker会自动为最后创建的image加上一个latest的标签。例如centos:7和centos:latest代表同一个image,他们的image相同。

注意:“/“前的REGISTRY_HOST和username是互斥的。REGISTRY_HOST要和username注意区分,猜测docker区分的方式是字符串中是否包含有”.”。所以REGISTRY_HOST可以是ip地址或者是一个包含有”.”的网址。尤其在docker push或docker pull的时候要注意。如果REGISTRY_HOST不是ip地址,需要标注--insecure-registry,如果是ip地址docker会自动标注--insecure-registry。

Docker registries

用来存放images。分公有registry和私有registry,公有的就叫docker hub,公有的也可以设置对外是否可见。可以使用docker hub上别人发布的image。大多数情况下我们会使用私有registry,就是在你的内网,防火墙的后面。可以使用docker search来找到已经发布的image,下载到本机并创建container。

Docker container

基于image创建。可以理解成一台轻量级虚拟机。当一个container开始运行时,需要知道image的名字和container启动时需要运行的命令。如果image已经存在于本地就使用本地的,否则使用docker hub的。

原理

在同一个kernel(bootfs)上运行多个linux distributions(rootfs)。这个内核就是docker所在主机的内核。docker挂载每个rootfs时不再只读,而是通过union mount将多个只读文件连接在一起,然后校验完整性。这些所有的文件整合在一起形成docker的文件系统UFS(Union File System),然后被内核挂载。

涉及Linux技术

用到了一些linux的底层技术

Namespace

linux namespaces用来独立各个container pid namespace: 用来独立Process ID。 net namespace: 用来独立network interfaces。 ipc namespace: 用来独立 IPC资源。 mnt namespace: 用来独立管理挂载点 uts namespace: 用来独立内核。

Control groups

linux cgroup--container之间共享硬件资源并配额

Union file system

docker可以使用unionfs的几个变种AUFS, btrfs, vfs, DeviceMapper

Container format

目前docker支持的容器格式有libcontainer和lxc

安装

目前版本是1.3,支持centos6(内核需要大于2.6.32-431)和centos7,

不支持centos5。6和7的命令集也有差别。后续版本官方已经声明只支持3.8及以上内核。意味着后续的版本如果要在centos6上运行,需要升级6的内核。

Docker只能运行在64位操作系统上。

Centos7

先安装yum install device-mapper-event-libs 再安装yum install docker 请确保你的yum源有

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras

因为docker是在centos-extras软件仓库中。FirewallD在centos7中新引入,并用来包装iptables。目前已知bug是,如果在docker之后进行FirewallD的(重)启动操作,FirewallD将从iptables中移出docker的chain。所以要确保docker daemon在FirewallD之后启动,或者是在FirewallD(重)启动后重启docker daemon。

Centos6

配置EPEL的yum源 yum install docker-io

如果你之前已经装过了docker,请移除,否会有冲突,已经有bugreport了。

本文来源:https://www.bwwdw.com/article/gwv5.html

Top