资讯专栏INFORMATION COLUMN

Docker入门

netScorpion / 1486人阅读

摘要:隔离的进程独立于宿主和其它的隔离的进程。容器可以被创建启动停止删除暂停等。添加内核参数使用看到下面的这些警告信息解决方法内核配置参数以启用这些功能。然后重新加载

Docker简介

Docker 是使用 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。

隔离的进程独立于宿主和其它的隔离的进程。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等

优点是没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

Docker的优势

高效的利用系统资源

快速的启动时间

一致的运行环境

持续交付和部署:对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。

使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。

Docker 确保了执行环境的一致性,使得应用的迁移更加容易

Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。社区健壮,一堆开源项目团队维护一批高质量的官方景象。


对比图
特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 MB GB
性能 接近原生 较弱
系统支持量 单机支持上千个容器 一般几十个

相关基本概念

Docker 包括三个基本概念

镜像(Image)

容器(Container)

容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。

仓库(Repository)

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

三个概念包括Docker的生命周期

安装(CentOS)

卸载旧版本

$ sudo yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-selinux 
                  docker-engine-selinux 
                  docker-engine

使用 yum 安装

$sudo yum install -y yum-utils 
           device-mapper-persistent-data 
           lvm2

国内网络问题,强烈建议使用国内源

$ sudo yum-config-manager 
    --add-repo 
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 官方源
$ sudo yum-config-manager 
    --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker CE

sudo yum makecache fast
sudo yum install docker-ce

使用脚本自动安装

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

启动 Docker CE

$ sudo systemctl enable docker
$ sudo systemctl start docker

建立 docker 用户组

建立 docker 组:

sudo groupadd docker

将当前用户加入 docker 组:

sudo usermod -aG docker $USER

测试Docker是否安装正确

$ docker run hello-world

Unable to find image "hello-world:latest" locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

镜像加速器

Ubuntu 14.04、Debian 7 Wheezy 配置

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

重新启动服务。

$ sudo service docker restart

Ubuntu 16.04+、Debian 8+、CentOS 7 在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

添加内核参数

CentOS 使用 Docker CE 看到下面的这些警告信息:

  WARNING: bridge-nf-call-iptables is disabled
  WARNING: bridge-nf-call-ip6tables is disabled

解决方法:内核配置参数以启用这些功能。

  sudo tee -a /etc/sysctl.conf <<-EOF
  net.bridge.bridge-nf-call-ip6tables = 1
  net.bridge.bridge-nf-call-iptables = 1
  EOF

然后重新加载sysctl.conf

  sudo sysctl -p

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27817.html

相关文章

  • Docker入门(一)用hello world入门docker

    摘要:初识是什么是一个开源的应用容器引擎,基于语言并遵从协议开源。容器是完全使用沙箱机制,相互之间不会有任何接口更重要的是容器性能开销极低。命令为,如下由此可知,我们新打包的镜像的为。登录账号再输入自己的账号密码即可。 初识Docker Docker是什么?   Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从Apache2.0协议开源。  Docker 可以让开发者打包他们的...

    tolerious 评论0 收藏0
  • docker入门概览

    摘要:至于很具体的操作指令,比如怎么安装,怎么和来跑一个简单的,请参考官方文档部分的或者也可参考文末的一些参考资料参考资料官方文档入门教程系列简明教程使用演示中文系列资源从入门到实践作者更多文章个人网站 docker入门概览 标签 : docker [TOC] 本文对docker进行大致介绍,包括概述,安装,简单使用,架构,基本原理等方面 写在前面 本文是自己学习docker的一个记录...

    yy13818512006 评论0 收藏0
  • Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上

    摘要:入门系列之一在一个容器里运行指定的应用入门系列之二使用制作包含指定应用的镜像本文我们会介绍如何将这个本地制作好的镜像发布到,让全世界其他爱好者能够使用您的镜像。首先您得在上注册一个帐号然后创建一个新的,用于存放镜像。 这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像。 Docker入门系列之一:在一...

    maochunguang 评论0 收藏0
  • 不正宗 docker 入门教程-启动一个容器(1/3)

    摘要:从命名上就知道这是一篇简单粗暴的新手入门教程,为什么要简单粗暴我认为有自学能力的人帮他入门就够了,不能自学的一时半会儿也教不会,不符合入门教程的初衷,建议出门左拐去找找视频教程本章目标大概了解是个什么玩意知道常用的指令参数能启动一个容器不然 从命名上就知道这是一篇简单粗暴的docker新手入门教程, 为什么要简单粗暴? 我认为有自学能力的人帮他入门就够了, 不能自学的一时半会儿也教不会...

    YorkChen 评论0 收藏0
  • 这是一次 docker 入门实践

    摘要:前言其实接触也有一段时间了,但是一直没有做下总结,现在网上关于的介绍也有很多了,本着好记性不如烂笔头的原则,还是自己再记录一波吧。实现目标安装探索基本概念及用法环境准备位,内核版本不低于安装以下命令均需在权限下执行。 showImg(https://segmentfault.com/img/remote/1460000017894270?w=538&h=344); 前言 其实接触 do...

    ashe 评论0 收藏0
  • Docker零基础入门指南(一):Docker介绍

    摘要:原文地址零基础入门指南一介绍简介源代码托管在上,公司开源的一个基于技术之上构建的容器引擎,基于语言并遵从协议开源。通过等实现内核虚拟化技术,并提供容器的资源隔离与安全保障等。 原文地址:Docker零基础入门指南(一):Docker介绍 Docker简介 Docker源代码托管在 GitHub上,Docker 公司开源的一个基于LXC技术之上构建的Container容器引擎,基于Go...

    DevTTL 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<