Docker简介和入门

作者: JellyC | 来源:发表于2017-12-04 12:26 被阅读208次

简介

Docker百度百科

Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于
2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在
GitHub上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动
开放容器联盟(OCI)
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。
Docker 使用 Google 公司推出的Go 语言进行开发实现,基于 Linux 内核的
cgroupnamespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的libcontainer,从 1.11 开始,则进一步演进为使用runCcontainerd
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

基本概念
  • 镜像(Image)

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

  • 容器(Container)

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

  • 仓库(Repository)

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

安装并启动

在这里以centOS系统为例

  • 添加国内源
[root@Jelly-Test-32 ~]#sudo yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
  • 安装Docker-ce
[root@Jelly-Test-32 ~]#sudo yum makecache fast
[root@Jelly-Test-32 ~]#sudo yum install docker-ce
  • 使用脚本快速安装
[root@Jelly-Test-32 ~]#curl -fsSL get.docker.com -o get-docker.sh
[root@Jelly-Test-32 ~]#sudo sh get-docker.sh --mirror Aliyun
  • 启动
[root@Jelly-Test-32 ~]#sudo systemctl enable docker
[root@Jelly-Test-32 ~]#sudo systemctl start docker
  • 建立docker用户组
[root@Jelly-Test-32 ~]#sudo groupadd docker
[root@Jelly-Test-32 ~]#sudo usermod -aG docker $USER
  • 执行docker images
[root@Jelly-Test-32 ~]# docker images
REPOSITORY                                               TAG                 IMAGE ID            CREATED             SIZE

到这里docker的安装就完成了。

一个简单的例子
  • 使用docker运行Nginx
//拉取Nginx镜像,可以指定版本pull
[root@Jelly-Test-32 ~]#docker pull nginx 
//新建文件夹
[root@Jelly-Test-32 ~]# mkdir -p jelly/test
//在文件夹内随意新建一个html文件,内容自己定义
[root@Jelly-Test-32 ~]# vim jelly/test/test.html
//通过docker运行nginx服务器的容器,并分别将静态目录映射到我们刚刚创建的目录中,将7777端口映射到容器中的80端口
[root@Jelly-Test-32 ~]# docker run --name nginx-test -d -p 7777:80 -v /root/jelly/test:/usr/share/nginx/html nginx
//使用浏览器访问localhost:7777/test.html 就可以看到我们刚刚新建的网页内容了
结束语

docker中的知识点非常的多,这里仅仅是一点简单的介绍,作者本人也是刚刚学习docker相关的知识。毫无疑问的是docker这门技术非常的有用并且高效,有兴趣进一步了解的童鞋可以看Docker — 从入门到实践,本文中的绝大多数概念摘抄自这本书。

相关文章

  • Docker简介和入门

    简介 Docker百度百科 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国...

  • Docker安装与国内加速

    Docker 简介 Docker官网Docker GithubDocker —— 从入门到实践Docker是一个开...

  • Docker入门简介

    Docker是什么? docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器...

  • Docker入门简介

    Docker是什么 Docker是一种虚拟化技术,类似虚拟机,这使得安装在其中的程序能够只依赖虚拟机的环境,而不受...

  • Docker入门

    Docker入门 一、Docker简介 1.什么是Docker Docker 是一个开源的应用容器引擎,让开发者可...

  • k8s 与 spring cloud分布式服务架构

    01.docker入门 docker的安装及入门例子 什么是docker? 为什么使用docker?它和虚拟...

  • Docker入门

    Docker入门 1. 简介 (1)容器(Container) vs 虚拟机(Virtual Machine) 容...

  • 开源API网关系统(Kong教程)入门到精通

    Kong网关快速入门 1、Kong的简介和安装 2、使用Docker安装Kong Kong网关基本使用指南 1、配...

  • docker入门之简介

    什么是docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器...

  • docker入门简介 安装

    http://www.jb51.net/article/94208.htm: 1:安装docker ubuntu服...

网友评论

    本文标题:Docker简介和入门

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