Docker的安装及镜像的获取、查看、搜索、删除、创建

(1)docker简介:

起源

Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。

Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。

一款开源软件能否在商业上成功,很大程度上依赖三件事 - 成功的 user case(用例), 活跃的社区和一个好故事。 dotCloud 自家的 PaaS 产品建立在docker之上,长期维护且有大量的用户,社区也十分活跃,接下来我们看看docker的故事。

  • 环境管理复杂 - 从各种OS到各种中间件到各种app, 一款产品能够成功作为开发者需要关心的东西太多,且难于管理,这个问题几乎在所有现代IT相关行业都需要面对。
  • 云计算时代的到来 - AWS的成功, 引导开发者将应用转移到 cloud 上, 解决了硬件管理的问题,然而中间件相关的问题依然存在 (所以openstack HEAT和 AWS cloudformation 都着力解决这个问题)。开发者思路变化提供了可能性。
  • 虚拟化手段的变化 - cloud 时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需使用的需求以及保证可用性和隔离性。然而无论是KVM还是Xen在 docker 看来,都在浪费资源,因为用户需要的是高效运行环境而非OS, GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速
  • LXC的移动性 - LXC在 linux 2.6 的 kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可迁移性,决定其构建出的环境难于迁移和标准化管理(相对于KVM之类image和snapshot的概念)。docker 就在这个问题上做出实质性的革新。这是docker最独特的地方。

VM技术和容器技术对比

面对上述几个问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型

特性

编辑

在docker的网站上提到了docker的典型场景:

  • Automating the packaging and deployment of applications
  • Creation of lightweight, private PAAS environments
  • Automated testing and continuous integration/deployment
  • Deploying and scaling web apps, databases and backend services

由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。

  1. 构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。
  2. PaaS环境是不言而喻的,其设计之初和dotcloud的案例都是将其作为PaaS产品的环境基础
  3. 因为其标准化构建方法(buildfile)和良好的REST API,自动测试和持续集成/部署能够很好的集成进来
  4. 因为LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源

(2) docker的安装

  1.1 如果是Centos7,直接使用sudo yum install -y docker

  1.2 如果是Centos6,sudo yum install -y http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm

    sudo yum install -y docker-io

(3)docker的基本操作
  1.1 系统条件,本系统使用的linux操作系统是Centos7_x64
  1.2 启动docker,service docker start
  1.3 演示从Docker Hub上下载最新版本的ubuntu
    命令: sudo docker pull ubuntu,会有如下的信息提示:
    [[email protected] ~]$ sudo docker pull ubuntu
    Using default tag: latest
    Trying to pull repository docker.io/library/ubuntu ... latest: Pulling from library/ubuntu
    c2a0e656b13b: Pull complete
    a1918483ff2d: Pull complete
    19f3070b96b2: Pull complete
    0930cd7fba20: Pull complete
    8e5b7248472b: Pull complete
    Digest: sha256:46fb5d001b88ad904c5c732b086b596b92cfb4a4840a3abd0e35dbb6870585e4
    Status: Downloaded newer image for docker.io/ubuntu:latest

  1.4 使用下载的镜像创建一个容器,在其中运行bash应用,具体执行结果如下:
    [[email protected] ~]$ sudo docker run -t -i ubuntu /bin/bash
    [sudo] password for kass:
    Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.

  1.5 使用docker images 命令查看本地主机上已有的镜像,及添加一个新的ubuntu:latest镜像标签
    具体的操作命令及信息如下:
    [[email protected] ~]$ sudo docker images
    REPOSITORY       TAG    IMAGE ID        CREATED VIRTUAL   SIZE
    docker.io/ubuntu    latest    8e5b7248472b    2 weeks ago      122 MB
    [[email protected] ~]$ sudo docker tag docker.io/ubuntu:latest ubuntu:latest
    [[email protected] ~]$ sudo docker images
    REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
    ubuntu latest 8e5b7248472b 2 weeks ago 122 MB
    docker.io/ubuntu latest 8e5b7248472b 2 weeks ago 122 MB

  1.6 查看镜像的详细信息
    [[email protected] ~]$ sudo docker inspect 8e5b7248472b
    [sudo] password for kass:
    [
    {
      "Id": "8e5b7248472b1cf370e8b181c357148a5aff33c0b8da2ba133701f599de15a84",
      "RepoTags": [
        "docker.io/ubuntu:latest",
        "ubuntu:latest"
    ],
    "RepoDigests": [],
    "Parent": "0930cd7fba20b2f6a84c3abc1918b4e159b123c1a3b787c0a9bea874e4f7e40b",
    "Comment": "",
    "Created": "2016-05-27T14:15:02.359284074Z",
    "Container": "b8bd6a8e8874a87f626871ce370f4775bdf598865637082da2949ee0f4786432",
    "ContainerConfig": {
    "Hostname": "914cf42a3e15",
    "Domainname": "",
    "User": "",
    "AttachStdin": false,
    "AttachStdout": false,
    "AttachStderr": false,
    "Tty": false,
    "OpenStdin": false,
    "StdinOnce": false,
    "Env": [],
    "Cmd": [
      "/bin/sh",
      "-c",
      "#(nop) CMD [\"/bin/bash\"]"
    ],
    "Image": "b873f334fa5259acb24cf0e2cd2639d3a9fb3eb9bafbca06ed4f702c289b31c0",
    "Volumes": null,
    "WorkingDir": "",
    "Entrypoint": null,
    "OnBuild": null,
    "Labels": {}
    },
    "DockerVersion": "1.9.1",
    "Author": "",
    "Config": {
      "Hostname": "914cf42a3e15",
      "Domainname": "",
      "User": "",
      "AttachStdin": false,
      "AttachStdout": false,
      "AttachStderr": false,
      "Tty": false,
      "OpenStdin": false,
      "StdinOnce": false,
      "Env": [],
      "Cmd": [
        "/bin/bash"
    ],
    "Image": "b873f334fa5259acb24cf0e2cd2639d3a9fb3eb9bafbca06ed4f702c289b31c0",
    "Volumes": null,
    "WorkingDir": "",
    "Entrypoint": null,
    "OnBuild": null,
    "Labels": {}
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 0,
    "VirtualSize": 121963951,
    "GraphDriver": {
    "Name": "devicemapper",
    "Data": {
    "DeviceId": "6",
    "DeviceName": "docker-253:1-34403904-8e5b7248472b1cf370e8b181c357148a5aff33c0b8da2ba133701f599de15a84",
    "DeviceSize": "107374182400"
    }
  }
  }
  ]
  1.7 详细搜索
    sudo docker -f {{".Architecture"}} 8e5 //8e5就是8e5b7248472b 是镜像的ID

  1.8 搜索镜像
    [[email protected] ~]$ sudo docker search mysql
    INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
    docker.io docker.io/mysql MySQL is a widely used, open-source relati... 2493 [OK]
    docker.io docker.io/mysql/mysql-server Optimized MySQL Server Docker images. Crea... 158 [OK]
    docker.io docker.io/centurylink/mysql Image containing mysql. Optimized to be li... 45 [OK]
    docker.io docker.io/sameersbn/mysql 36 [OK]
    docker.io docker.io/appcontainers/mysql Centos/Debian/Ubuntu Based Customizable My... 7 [OK]
    docker.io docker.io/marvambass/mysql MySQL Server based on Ubuntu 14.04 6 [OK]
    docker.io docker.io/alterway/mysql Docker Mysql 2 [OK]
    docker.io docker.io/azukiapp/mysql Docker image to run MySQL by Azuki - http:... 2 [OK]
    docker.io docker.io/drupaldocker/mysql MySQL for Drupal 2 [OK]
    docker.io docker.io/yfix/mysql Yfix docker built mysql 2 [OK]
    docker.io docker.io/bahmni/mysql Mysql container for bahmni. Contains the ... 1 [OK]
    docker.io docker.io/phpmentors/mysql MySQL server image 1 [OK]
    docker.io docker.io/sin30/mysql MySQL images with my own config files. 1 [OK]
    docker.io docker.io/tetraweb/mysql 1 [OK]
    docker.io docker.io/ahmet2mir/mysql This is a Debian based image with MySQL se... 0 [OK]
    docker.io docker.io/akilli/mysql akilli/base based MySQL image 0 [OK]
    docker.io docker.io/cloudposse/mysql Improved `mysql` service with support for ... 0 [OK]
    docker.io docker.io/dockerizedrupal/mysql docker-mysql 0 [OK]
    docker.io docker.io/jeffutter/mysql-no_volumes Images based on the official mysql images ... 0 [OK]
    docker.io docker.io/kardasz/mysql Debian 8, MySQL 5.7 0 [OK]
    docker.io docker.io/lancehudson/docker-mysql MySQL is a widely used, open-source relati... 0 [OK]
    docker.io docker.io/nanobox/mysql MySQL service for nanobox.io 0 [OK]
    docker.io docker.io/projectomakase/mysql Docker image for MySQL 0 [OK]
    docker.io docker.io/tozd/mysql MySQL (MariaDB fork) Docker image. 0 [OK]
    docker.io docker.io/vukor/mysql Build for MySQL. Project available on http... 0 [OK]

  1.9 删除镜像
    1.9.1 通过name删除镜像
      [[email protected] ~]$ sudo docker rmi docker.io/ubuntu
      Untagged: docker.io/ubuntu:latest
      [[email protected] ~]$ sudo docker images
      REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
      ubuntu latest 8e5b7248472b 2 weeks ago 122 MB

    1.9.2 通过镜像ID删除文件
      这种方式,会先尝试删除所有指向该镜像的标签,然后删除该镜像本身
      [[email protected] ~]$ sudo docker rmi docker.io/ubuntu

  2.0 创建镜像
      [[email protected] ~]$ sudo docker run -ti ubuntu /bin/bash
      Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
      [email protected]:/# touch test
      [email protected]:/# exit
      exit
      [[email protected] ~]$ sudo docker commit -m "Add a new file" -a "Docker Newbee" 8e5b7248472b test
      Error response from daemon: no such id: 8e5b7248472b
      [[email protected] ~]$ sudo docker images
      REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
      ubuntu latest 8e5b7248472b 2 weeks ago 122 MB
      [[email protected] ~]$ sudo docker commit -m "Add a new file" -a "Docker Newbee" bfda0c922239 test
      4521126f01b2bdf6816929a82cd428bfc2da50119f4c1afc19f751fec71d510c
      [[email protected] ~]$ sudo docker images
      REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
      test latest 4521126f01b2 6 seconds ago 122 MB
      ubuntu latest 8e5b7248472b 2 weeks ago 122 MB

    2.1 存储镜像、载入镜像
      2.1.1 存储镜像
        [[email protected] ~]$ sudo docker save -o test.zip test
      2.1.2 载入镜像
        [[email protected] ~]$ sudo docker load < test.zip
        或者
        [[email protected] ~]$ sudo docker load --input test.zip

   note:使用sudo的时候如果提示permission denied,将当前用户切换为root身份,
   然后编辑/etc/sudoers 文件, 在root ALL=(ALL) ALL下面添加 kass ALL=(ALL) ALL

时间: 2024-10-15 16:56:28

Docker的安装及镜像的获取、查看、搜索、删除、创建的相关文章

Docker的安装及镜像管理

1. 安装Docker Docker开源的容器引擎,可以让开发者打包应用以及依赖的库,然后发布到任何流行的linux发行版上,移植很方便: 由go语言编写,基于apache2.0协议发布: 基于linux kernel,要想在win下运行需要借助一个vm(虚拟机)来实现: 自2013年开始,近些年发展迅猛: docker从1.13x开始,版本分为社区版ce和企业版ee,并且基于年月的时间线形式: 优点: 启动非常快,秒级实现 资源利用率高,一台高配置服务器可以跑上千个docker容器 更快的交付

Docker的安装与镜像、容器、仓库的管理

一.安装docker 1.配置repo仓库 cat /etc/yum.repos.d/docker.repo [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg 2.安装docker yum -y install doc

【干货】Docker的安装、镜像及容器容器

1.Docker概述 Docker是在Linux容器中运行应用的开源工具,是一种轻量级的虚拟机.器容器技术可以在一台主机上轻松地为任何应用创建一个轻量级的.可移植的.自给自足的容器.通过这种容器打包应用程序,意味着简化了重新部署.调试这些琐碎的重复工作,极大地提高了工作效率. 作为一种轻量级的虚拟化方式,Docker与传统虚拟机相比具有显著的优势: 1).Docker容器很快,启动和停止可以在秒级实现,比传统虚拟机要快很多: 2).Docker核心解决的问题是利用容器来实现类似VM,从而以更加节

Docker的安装和镜像管理并利用Docker容器实现nginx的负载均衡、动静分离

Docker的安装 一.Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 二.安装Docker 1.检查内核版本 # uname -r      查看当前linux得版本信息 Docker要求CentOS7最低内核版本为3.1版本 2. 关闭防火墙和selinux # systemctl stop firewalld #

Docker的安装、镜像操作、容器操作及资源控制

Docker概述 Docker是在linux容器里运行应用的开源工具,是一种轻量级的虚拟机.Docker包含三大核心概念,分别是:镜像.容器和仓库.Docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.通过这种容器打包应用程序,意味着简化了重新部署.调试这些琐碎的重复工作.极大地提高了工作效率. Docker容器与传统虚拟化的比较 特性 Docker容器 虚拟机 启动速度 秒级 分钟级 计算能力消耗 几乎无 消耗50% 性能 接近原生 弱于 单机系统支

在Ubuntu18.04的Docker中安装Oracle镜像及简单使用

一.软件环境: 1.OS:Ubuntu 18.04 2.已安装了Docker 二.安装Oracle镜像的过程 1.切换到root账号下,如果是普通账号,下面操作指令前面加sudo 2.搜索oracle镜像 docker search oracle 3.下载oracle镜像 Docker pull registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g 4.查看镜像 docker images docker images registry.cn-h

Anaconda 镜像源操作(查看配置删除)

Anaconda查看镜像配置 conda config --show 将会显示conda的配置信息,找到channel, 对应的就是我们的镜像配置 channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - defaults 添加清华大学的镜像 conda config --add channels

Docker下安装RabbitMQ镜像

RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统. 因为RabbitMQ由Erlang实现,本机部署的话还要安装Erlang的开发环境,成本难免高些.然而,借助Docker的话,环境部署便会非常便捷. 通过dockerhub搜索,可以找到官方的RabbitMQ镜像. 在网页的tag标签页下会列出所有可用的tag. 当我们使用命令: 拉取rabbitmq的docker镜像:docker pull rabbitmq 拉取rabbitmq的管理镜像:docker pull rabbi

centos6.9 上docker 的安装 及启动 和运行状态查看

安装dockeryum install docker-io yum install device-mapper-event-libsyum upgrade device-mapper-libs 启动docker/etc/init.d/docker restart 查看docker的运行状态/etc/init.d/docker status 原文地址:http://blog.51cto.com/quietnight/2107901