Docker快速入门

作者: craneyuan | 来源:发表于2017-04-20 00:16 被阅读818次

    作者: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快速入门

        本文链接:https://www.haomeiwen.com/subject/kgrkzttx.html