zoukankan      html  css  js  c++  java
  • 和docket的第一次亲密接触

    很久很久以前,第一次听说docker时,感觉很高大上,同时自我感觉会很难。所以一直没有详细了解。前一段时间偶尔看到关于docker的详细介绍,于是乎来了兴趣。自已折腾了一下,发现不是想象中的那么难。

    最近闲来无事,想之前安装的步骤总结一下,以免忘记。(好记性不如烂笔头)

    Docker和传统虚拟化技术的对比

    相比传统虚拟机技术,Docker资源占用少,启动更快,很大的方便了项目的部署和运维。
    Docker是在操作系统层面上实现虚拟化,复用本地主机的操作系统,传统方式是在硬件的基础上,虚拟出多个操作系统,然后在系统上部署相关的应用。

    下面的这张图片参考相关博文,很形象的说明了Docker和VM之类的传统虚拟化技术的区别:

     vs

    一、安装docker

    root@base0298:~# yum install docker

    二、启动docket

    root@base0298:~# systemctl start docker
    root@base0298:~# systemctl status docker
    ● docker.service - Docker Application Container Engine
       Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
       Active: active (running) since 五 2017-12-08 10:22:49 CST; 2s ago
         Docs: http://docs.docker.com
     Main PID: 24917 (docker)
       CGroup: /system.slice/docker.service
               └─24917 /usr/bin/docker daemon --selinux-enabled

    三、基本信息查看

    docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等

    docker version
    docker info

    四、搜索镜像并下载镜像
      docker search <image>:在docker index中搜索image

    root@base0298:~# docker search centos
    INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/centos                             The official build of CentOS.                   3861      [OK]       
    docker.io   docker.io/ansible/centos7-ansible            Ansible on Centos7                              103                  [OK]
    docker.io   docker.io/jdeathe/centos-ssh                 CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x8...   90                   [OK]
    docker.io   docker.io/tutum/centos                       Simple CentOS docker image with SSH access      34                   
    docker.io   docker.io/imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              33                   [OK]
    docker.io   docker.io/gluster/gluster-centos             Official GlusterFS Image [ CentOS-7 +  Glu...   21                   [OK]
    docker.io   docker.io/kinogmt/centos-ssh                 CentOS with SSH                                 17                   [OK]

        docker pull <image> :从docker registry server 中下拉image

    root@base0298:~# docker pull docker.io/centos
    Using default tag: latest
    Trying to pull repository docker.io/library/centos ... latest: Pulling from library/centos
    99d067612410: Pull complete 
    fb2a47779ef8: Pull complete 
    358bf47a7a64: Pull complete 
    Digest: sha256:7192ec204ee4b953a9c9212ebd78575a334d041333d8f58387aa648f72a7fd8a
    Status: Downloaded newer image for docker.io/centos:latest

    五、查看镜像 

        docker images: 列出images

        docker images -a :列出所有的images(包含历史)

        docker images --tree :显示镜像的所有层(layer)

        docker rmi  <image ID>: 删除一个或多个image

    root@base0298:~# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    docker.io/centos    latest              358bf47a7a64        8 days ago          203.5 MB

    六、启动容器并修改镜像

     镜像下载到本地以后,就可以使用Docker运行,
    通过下面的命令参数启动容器

    docker run <相关参数> <镜像 ID> <初始命令>

     -i:表示以“交互模式”运行容器
    -t:表示容器启动后会进入其命令行
    -v:表示需要将本地哪个目录挂载到容器中,
    格式:-v <宿主机目录>:<容器目录>

     我的相关程序都在当宿主机的/app/tools目录下,并且想把它挂载到容器的相同目录下:

    
    
    root@base0298:~# docker run docker.io/centos /bin/echo hello
    hello

    交互模式:
    root@base0298:/app/tools# docker run -itv /app/tools:/app/tools 358bf47a7a64 /bin/bash # ‘358bf47a7a64’是IMAGE ID 也可以直接使用镜像的名字:docker.io/centos [root@3b8c6a292396 /]# ls /app/tools/

    也可以使用镜像‘仓库名’
    root@base0298:/app/tools# docker run -itv /app/tools:/app/tools docker.io/centos /bin/bash        
    [root@3b8c6a292396 /]# ls /app/tools/
    mongodb-linux-x86_64-3.0.6.tgz   pgadmin3-1.16.1.zip       php5.6.tar.gz
    astrill-setup-linux64-new.rpm   mtree-1.0.3.tar.gz             pgadmin3.msi

    然后就可以和宿主机一样的操作了。

       

      七、查看容器

        docker ps :列出当前所有正在运行的container
        docker ps -l :列出最近一次启动的container
        docker ps -a :列出所有的container(包含历史,即运行过的container)
        docker ps -q :列出最近一次运行的container ID

  • 相关阅读:
    each和foreach的区别
    apply和call的用法
    js小知识点
    关于react的一些疑问点
    c语言字符动画的实现
    解决'chromedriver' executable needs to be in PATH问题!
    二叉树的创建和遍历
    dns和dhcp
    编写一个application程序实现如下功能:接受命令行中给出的一个字符串,先将字符串原样输出,然后判断该穿的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出。
    学生成绩管理系统究极版
  • 原文地址:https://www.cnblogs.com/luck123/p/8004504.html
Copyright © 2011-2022 走看看