美文网首页
Docker初体验

Docker初体验

作者: hutou | 来源:发表于2017-05-01 13:22 被阅读69次

    概念和理解

    Docker是一个容器引擎。doker官方网站
    一个容器实际上是运行在宿主机上的一个进程。只不过在启动这个进程之前,进行了一些特别的处理,让这个进程进入一个虚拟的环境。
    每个docker容器运行在独立的虚拟环境中,最重要的是文件系统的读写系统。依赖于Linux内涵的两个特性:
    Namespaces命名空间:是一种封装的概念,提供了系统资源的隔离

    1. PID 进程隔离
    2. NET 管理网络接口
    3. IPC 管理跨进程通信的访问
    4. MNT 管理挂载点
    5. UTS 隔离内核

    Control groups控制组:用来分配资源,Linux kernel 2.6.24 版本开始拥有

    1. 资源限制:对进程组进行内存使用限制
    2. 优先级设置
    3. 资源计量
    4. 资源控制:可以将进程组挂起和恢复

    Docker容器的能力:

    1. 文件系统隔离
    2. 进程隔离
    3. 网络隔离
    4. 资源隔离和分组
    aaaa

    目标:

    1. 轻量级的建模方式
    2. 职责与逻辑分离
    3. 快速高效开发生命周期
    4. 鼓励使用面向服务的框架

    什么场合可以使用:

    1. 使用Docker容器进行开发,测试,部署服务
    2. 创建隔离的运行环境
    3. 搭建测试环境,特别是集群环境
    4. 构建Paas
    5. 提供Saas

    安装

    # 确认64位系统
    uname -i
    # 确认Linux内涵版本,内部版本必须>=3.10
    uname -r
    # 安装在CentOS 7 
    yum -y install docker
    # 安装在CentOS 6 
    yum -y install docker-io
    

    启动

    # 启动
    systemctl start docker.service
    # 停止
    systemctl stop docker.service
    # 运行命令的帮助
    sudo docker help run
    

    加速器

    https://dashboard.daocloud.io/
    https://cloud.docker.com

    Docker核心概念

    Docker是C/S架构(客户端,守护进程)


    整体示意图整体示意图

    有下面三个核心概念:

    1. 仓库
      Registry概念:本地Registry,官方Registry
      保存用户的镜像,Docker Hub是一个官方仓库。减少构建时间
      从官方仓库拉取镜像,可以使用daocloud提供的加速器服务
    docker pull redis:2.8.19
    
    1. 镜像
      Docker镜像:暂时可以理解为目录,是容器的源代码,每一个容器启动的时候在镜像中进行复制,然后启动容器。
      最底端是引导文件系统 bootfs
      引导文件系统 rootfs永远是只读状态,联合加载(加载多个文件系统,进行叠加)
      基础镜像+联合加载文件系统
    # 查看镜像
    # 镜像ID,镜像tag,镜像仓库,仓库+tag可以唯一标识一个镜像
    docker images
    
    pagepage
    1. 容器
      是启动和执行阶段,通过镜像来启动。镜像中只读层永远是只读的,在写的时候进行复制,生成副本
      Docker容器:守护式容器,交互式容器
      参数:
      -it 用于创建交互式容器
      -d 用于创建守护式容器
      -name 给容器指定名称
    2. 试验一个web服务器
    # 创建交互式容器
    docker run -p 80 --name web -i -t ubuntu /bin/bash
    # 安装Nginx
    apt-get update
    apt-get install -y nginx
    # 安装vim
    apt-get install -y vim
    # 创建网站目录
    mkdir -p /var/www/html
    cd /var/www/html
    # vim创建一个静态页面
    # nginx配置文件
    

    镜像

    镜像:名字,TAG
    镜像文件是分层的

    1. 可以使用pull命令从仓库获取镜像
    sudo docker pull registory.hub.docker.com/ubuntu:latest
    

    从注册服务器:registory.hub.docker.com
    仓库:ubuntu
    标记:latest

    1. 通过镜像创建容器
    sudo docker run -i -t ubuntu /bin/bash
    
    1. 查看镜像信息
    docker images
    

    查看信息包括:仓库,TAG,唯一ID,创建时间,镜像大小
    通过仓库和TAG可以唯一确定一个镜像
    可以为本地镜像增加TAG

    docker tag docker.io/konstruktoid/ubuntu:latest ubuntu:linxm
    

    查看镜像详细信息

    docker inspect ununtu:linxm
    

    镜像寻找

    docker search mysql
    

    删除镜像

    docker rmi ubuntu:linxm
    

    创建镜像

    创建镜像有三种:

    1. 基于已有镜像的容器创建
    $ docker run -it ubuntu:linxm /bin/bash
    $ touch test
    $ exit
    $ docker ps -a
    $ docker commit -m "增加一个文件" -a "作者" 6b1924dabf20 test 
    

    上面的例子是增加了一个文件,更新镜像

    1. 基于本地模板导入
    # 存出:镜像保存到本地文件
    $ docker save -o ubuntu.tar ubuntu:linxm
    # 载入:将镜像载入
    $ docker load --input ubuntu.tar
    # 上传镜像
    $ docker push NAME:tag
    
    1. 基于Dockerfile创建

    容器

    查看本机存在的容器

    # 查看容器
    $ docker ps -a
    # 删除容器,指定一个容器ID
    $ docker rm 394
    

    容器是镜像的一个运行实例,它带有额外的可写文件层
    创建容器,启动容器,终止容器,进入容器执行操作,删除容器,容器迁移

    # 创建容器
    $ docker create -it ubuntu:lastest
    $ docker ps -a
    $ docker run ubuntu /bin/echo 'Hello world'
    

    一种是基于镜像新建一个容器并启动,另一个是将终止状态的容器重新启动。
    获取容器的输出信息

    $ docker logs 1afe
    

    终止容器

    $ docker stop 1afe
    

    主要命令如下:

    # 会启动新的shell,镜像有自己的默认命令
    sudo docker run -it centos:6 /bin/bash
    # 查看docker容器
    docker ps
    docker ps -a
    # docker容器的详细信息
    docker inspect
    docker inspect -f 
    # 查看IP地址
    docker inspect -f  '{{.NetworkSettings.IPAddress}}' f311b
    

    交互式容器的操作:
    在交互式容器基础上,ctrl+p,ctrl+q进入守护式容器
    进入守护式容器:docker attach 容器名字
    停止容器:docker stop 容器名
    运行容器的端口:-p 80 -P 全部

    相关文章

      网友评论

          本文标题:Docker初体验

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