• docker(2)


    docker三大核心组件的概念

    1镜像:

     Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了 Apache 应用程序(或用户需要的其他软件)。可以把它称为一个 Apache镜像。
    
      镜像是创建Docker 容器的基础。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的镜像直接使用
    View Code

    2.容器

    Docker 容器类似于一个轻量级的沙箱,Docker 利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不相见的。
    可以把容器看做是一个简易版的Linux系统环境
    View Code

    3.仓库

    Docker 仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前最大的公开仓库是Docker Hub, 存放了数量庞大的镜像供用户下载。国内也有阿里云等
    View Code

    docker的初步安装与使用

    要求:可以使用uname -a,查看

    Docker 运行在CentOS 7 上,要求系统为64位、系统内核为3.10以上
    Docker 运行在CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为2.6.32-431 或者更高版本。
    View Code

    安装:

    yum -y install docker

    systemctl start docker

    systemctl status docker

    systemctl enable docker

    查看版本信息:

    docker version

    基础镜像命令的使用:

    1.搜索镜像:

    docker search centos

    docker search --automated=ture -s 3 nginx

    解释:查找评价为三星+的nginx的镜像,仅显示自动创建的镜像

    2.获取镜像docker pull

    docker pull centos

    3.查看镜像:

    docker images或者docker images ls

    4.删除镜像:

    docker rmi imagesID或者唯一标示的名字

    5.导出镜像

    docker save centos > /tmp/docker_centos.tar

    或者使用:docker image save centos > /tmp/docker_centos.tar

    6.导入镜像:

    docker image load < /tmp/docker_centos.tar

    7.给镜像打标签

    docker image tag centos centos7.3

    docker容器管理

    启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一种是将在终止状态(stopped)的容器重新启动

    创建镜像

    docker create -it centos /bin/bash

    docker ps -a

    docker start id

    docker attach id【根据已经启动的容器的id,进入容器中】

    退出使用:exit

    启动一个bash终端,允许用户进行交互
    
    复制代码
    [root@server ~]# docker run --name mydocker -t -i centos /bin/bash
    [root@8bad1a6db7b2 /]# pwd
    /
    [root@8bad1a6db7b2 /]# ls
    anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    
    --name: 给容器定义一个名称
    -t:让Docker分配一个伪终端并绑定到容器的标准输入上
    -i:让容器的标准输入保持打开
    /bin/bash:执行一个命令
    View Code
    docker run 的参数
    -i, --interactive 交互式 -t, --tty 分配一个伪终端 -d, --detach 运行容器到后台 -a, --attach list 附加到运行的容器

    当利用docker run 来创建容器时,Docker在后台运行的标准操作包括

    1检查本地是否存在指定的镜像,不存在就从公有仓库下载;
    2利用镜像创建一个容器,并启动该容器;
    3分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层;
    4从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中;
    5从网桥的地址池配置一个 IP 地址给容器;
    6执行用户指定的应用程序;
    7执行完毕后容器被自动终止。
    View Code

    守护进程运行(后台运行)

    更多的时候,需要让Docker容器在后台运行,而不是直接把执行命令的结果输出在当前宿主机下。此时可以加 -d 参数来实现

    [root@server ~]# docker run -d centos /bin/bash -c "while true; do echo hello world; sleep 1; done" 
    0ca1770a1fd0b21ae05f2f6bd9befbb9eef55576ab0a0b51fc6dc7e427128174
    [root@server ~]# docker ps  #查看正在运行的docker容器
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    0ca1770a1fd0        centos              "/bin/bash -c 'while…"   27 seconds ago      Up 25 seconds                           ecstatic_wu
    8bad1a6db7b2        centos              "/bin/bash"              18 minutes ago      Up 10 minutes                           mydocker
    [root@server ~]# docker logs 0ca1770a1fd0  #获取容器输出信息,通过docker logs命令
    hello world
    hello world
    hello world
    View Code

    但是使用attach命令有时候并不方便,当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示,当某个窗口因命令阻塞,其他窗口也无法执行操作了。且通过exit退出后容器就自动终止了。这时可以考虑使用nsenter

    导入,导出,删除容器

    [root@server ~]# docker export mydocker > centos.tar  #导出一个容器,也可以使用docker export -o centos.tar mydocker。 -o 指定导出的名字
    [root@server ~]# ll centos.tar 
    -rw-r--r-- 1 root root 209473024 1月   5 17:56 centos.tar
    导入容器
    导出的文件又可以使用 docker import 命令导入变成镜像,例如
    [root@server ~]# cat centos.tar | docker import - test/centos:7.3
    
    [root@server ~]# docker rm a661c9dd4470   #删除已经停止的容器
    [root@server ~]# docker rm $(docker ps -a -q)   # 获取全部容器的ID,进行删除
    View Code
  • 相关阅读:
    CentOS 7 下Emacs无法录入中文的问题
    GPS文件中的C1--->P1转换
    centos7上搭建http服务器以及设置目录访问
    在Linux和Windows之间的远程控制的实现
    Emacs中的代码折叠控制
    Fortran程序调试中的“吐核”错误
    CentOS 7.6 系统上添加最新版 NetCDF 4.6.1
    迁移 Emacs 的自定义设置
    CentOS 7系统上制作Clonezilla(再生龙)启动U盘并克隆双系统
    [CentOS 7] TexLive2017中kpsewhich Bug的修复
  • 原文地址:https://www.cnblogs.com/topass123/p/12566934.html
走看看 - 开发者的网上家园