zoukankan      html  css  js  c++  java
  • 【Docker系列教程之二】如何搭建和使用Docker

    上一篇我们主要把 Docker 的一些常见概念如 Image , Container , Repository 做了详细的阐述,也从传统虚拟化方式的角度阐述了 docker 的优势,我们从下图可以直观地看到 Docker 的架构:

    Docker 使用 C/S 结构,即客户端/服务器体系结构。 Docker 客户端与 Docker 服务器进行交互,Docker服务端负责构建、运行和分发 Docker 镜像。 Docker 客户端和服务端可以运行在一台机器上,也可以通过 RESTful 、 stock 或网络接口与远程 Docker 服务端进行通信。

    这张图展示了 Docker 客户端、服务端和 Docker 仓库(即 DockerHub 和 DockerCloud ),默认情况下 Docker 会在 Docker 中央仓库寻找镜像文件,这种利用仓库管理镜像的设计理念类似于 Git ,当然这个仓库是可以通过修改配置来指定的,甚至我们可以创建我们自己的私有仓库。

    Docker的安装和使用

    Docker 的安装和使用有一些前提条件,主要体现在体系架构和内核的支持上。对于体系架构,除了 Docker 一开始就支持的 X86-64 ,其他体系架构的支持则一直在不断地完善和推进中。

    Docker 分为 CE 和 EE 两大版本。 CE 即社区版(免费,支持周期 7 个月), EE 即企业版,强调安全,付费使用,支持周期 24 个月。

    我们在安装前可以参看官方文档获取最新的 Docker 支持情况,官方文档在这里:

    https://docs.docker.com/install/

    Docker 对于内核支持的功能,即内核的配置选项也有一定的要求(比如必须开启 Cgroup 和 Namespace 相关选项,以及其他的网络和存储驱动等), Docker 源码中提供了一个检测脚本来检测和指导内核的配置,脚本链接在这里:

    https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh

    在满足前提条件后,安装就变得非常的简单了。

    DockerCE 的安装请参考官方文档:

    • MacOS:https://docs.docker.com/docker-for-mac/install/

    • Windows:https://docs.docker.com/docker-for-windows/install/

    • Ubuntu:https://docs.docker.com/install/linux/docker-ce/ubuntu/

    • Debian:https://docs.docker.com/install/linux/docker-ce/debian/

    • CentOS:https://docs.docker.com/install/linux/docker-ce/centos/

    • Fedora:https://docs.docker.com/install/linux/docker-ce/fedora/

    • 其他 Linux 发行版:https://docs.docker.com/install/linux/docker-ce/binaries/

    这里我们以 CentOS7 作为本文的演示。

    环境准备

    • 阿里云服务器(1核2G,1M带宽)

    • CentOS 7.4 64位

    由于 Docker-CE 支持 64 位版本的 CentOS7 ,并且要求内核版本不低于 3.10

    首先我们需要卸载掉旧版本的 Docker

    $ 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

    我们执行以下安装命令去安装依赖包:

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

    这里我事先已经安装过了,所以提示我已经安装了最新版本

    安装Docker

    Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令

    $ sudo yum install docker

    当然在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本, CentOS 系统上可以使用这套脚本安装:

    curl -fsSL get.docker.com -o get-docker.sh
    
    sh get-docker.sh

    具体可以参看 docker-install 的脚本:

    1. https://github.com/docker/docker-install

    执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 DockerCE 的 Edge 版本安装在系统中。

    安装完成后,运行下面的命令,验证是否安装成功:

    docker version
    
    or
    
    docker info

    返回docker的版本相关信息,证明 docker 安装成功

    启动Docker-CE

    $ sudo systemctl enable docker
    
    $ sudo systemctl start docker

    Docker的简单运用---Hello World

    由于服务器日常崩溃了, docker 出了点问题,所以以下案例的演示是基于 KaliLinux 环境下进行的。

    我们通过最简单的 image 文件 hello world,感受一下 Docker 的魅力吧!

    我们直接运行下面的命令,将名为 hello-world 的 image 文件从仓库抓取到本地。

    docker pull library/hello-world

    docker pull images 是抓取 image 文件, library/hello-world 是 image 文件在仓库里面的位置,其中 library 是 image 文件所在的组, hello-world 是 image 文件的名字。

    抓取成功以后,就可以在本机看到这个 image 文件了。

    docker images

    我们可以看到如下结果:

    现在,我们可以运行 hello-world 这个 image 文件

    docker run hello-world

    我们可以看到如下结果:

    输出这段提示以后, hello world 就会停止运行,容器自动终止。有些容器不会自动终止,因为提供的是服务,比如Mysql镜像等。

    是不是很 easy 呢?我们从上面可以看出, docker 的功能是十分强大的,除此之外,我们还可以拉去一些 Ubuntu , Apache 等镜像,在未来的教程中我们将会一一提到。

    Docker 提供了一套简单实用的命令来创建和更新镜像,我们可以通过网络直接下载一个已经创建好了的应用镜像,并通过 DockerRUN 命令就可以直接使用。当镜像通过 RUN 命令运行成功后,这个运行的镜像就是一个 Docker 容器啦,容器可以理解为一个轻量级的沙箱, Docker 利用容器来运行和隔离应用,容器是可以被启动、停止、删除的,这并不会影响 Docker 镜像。

    我们可以看看下面这幅图:

    Docker 客户端是 Docker 用户与 Docker 交互的主要方式。当您使用 docker 命令行运行命令时, Docker 客户端将这些命令发送给服务器端,服务端将执行这些命令。 docker 命令使用 docker API 。 Docker 客户端可以与多个服务端进行通信。

    总结

    本篇主要给大家介绍了一下 Docker 环境的搭建,简单的介绍了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像,下一篇将会带大家深入了解 Docker 的一些基本命令以及 Docker 容器是如何运行。

     
    努力提高自己的技术,不忘初心
  • 相关阅读:
    ES6 import、export的写法
    不带分号可能会引起出错的情况
    npm传参技巧
    深度优先遍历和广度优先遍历
    WebGL的shader
    web component
    页面的beforeunload和unload的事件应用
    暴搜
    子集树与排列树
    概率论
  • 原文地址:https://www.cnblogs.com/blackCatFish/p/9801198.html
Copyright © 2011-2022 走看看