Docker快速入门

作者:crane-yuan 日期:2017-04-19


简介

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源),主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动开放容器联盟。

Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 3 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

基本概念

Docker 包括三个基本概念

  • 仓库(Repository)
  • 镜像(Image)
  • 容器(Container)

这里先不介绍了,看完后面就有概念了

安装Docker

下面只介绍ArchLinux下的安装方式,其他系统的可以参考这个Docker安装指南

> pacman -S docker #安装Docker
> docker -v #查看下Docker版本
> systemctl start docker #启动Docker服务

安装完后如果启动不了docker服务,重启一下电脑就可以了

由于国内的网络问题,一般建议配置下镜像代理

配置镜像加速源

对于使用 systemd 的系统(比如,ArchLinux),用 systemctl start docker 启用服务后,
编辑 /etc/systemd/system/multi-user.target.wants/docker.service 文件,找到 ExecStart= 这一行,在这行最后添加加速器地址 --registry-mirror=<加速器地址>,如:

ExecStart=/usr/bin/dockerd --registry-mirror=https://jxus37ad.mirror.aliyuncs.com

注:对于 1.12 以前的版本,dockerd 换成 docker daemon。

重新加载配置并且重新启动。

> sudo systemctl daemon-reload
> sudo systemctl restart docker

获取镜像

docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
> docker pull ubuntu:14.04

启动容器

> docker run -it --rm ubuntu:14.04 bash
-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
ubuntu:14.04:这是指用 ubuntu:14.04 镜像为基础来启动容器。
bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。

关闭/删除容器

> docker ps -a #列出正在运行的容器
> docker stop {CONTAINER ID} #停止运行的容器
> docker rm {CONTAINER ID} #删除容器,注意镜像并没有删除

列出镜像

> docker images

删除镜像

> docker rmi {IMAGE ID}

参考文章

  • Docker — 从入门到实践

你可能感兴趣的:(Docker快速入门)