zoukankan      html  css  js  c++  java
  • docker研究-3 docker简介和基本操作

      Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.Docker 是通过内核虚拟化技术 (namespaces及cgroups等,这里的内核技术指的是Linux内核哦)来提供容器的资源 隔离与安全保证等。由于docker通过操作系统层的虚拟化实现隔离,所以Docker容器 在运行时,不需要额外的虚拟化管理程序(VMM(Virtual Machine Monitor),以及 hyperisor)支持,他是内核级虚拟化,可以实现更高的性能,同时对资源的额外需求 很低。最本质特征docker是通过隔离来进行创建容器,而KVM等均为通过模拟方式创 建虚拟机。

      docker的优势:

        更快的交付和部署:使用docker 开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后, 测试和原味人员可以直接使用完全相同的环境来部署代码,只要开发测试过的代码, 就可以确保在生产环境无缝运行。docker可以快速创建和删除容器,实现快速迭代, 大量节约开发、测试、部署的时间;更高效的资源利用: docker 容器不需要二外的徐牛啊管理程序支持,他是内核级的虚拟化,可以实现更高 级的性能,同事对资源的额外需求很低 ;更轻松的迁移和扩展: docker容器几乎可以再任意的平台上运行,包括物理机、虚拟机、公有云、私有云、 个人电脑、服务器等,同事支持主流的操作系统发行版本。这种兼容性让用户可以再 不同平台之间轻松地迁移应用。

      docker与kvm对比:

        docker容器很快,启动和停止可以再秒级实现,而传统的虚拟机需要数分钟; docker容器对系统资源需求很少,一台主机上可以同时运行数百甚至上千个docker容器; docker 通过类似于git的设计理念的操作来方便用户获取、分发和更新应用镜像,存储 复用,增量更新; docker通过dockerfile支持灵活的自动化创建和部署机制,提高工作效率,使流程标准化。

      docker的特性:

        Docker的三大特性为BUILD(构建)、SHIP(运输)、RUN(运行)。(一次构建多处运 行,像不像JAVA呢)。docker是传统的CS架构分为docker client和docker server,主要分 为三大组件 镜像(image)、容器(container)、仓库(Repository)。

    1. 安装docker

        注意:docker默认文件目录是/var/lib/docker,默认dns是宿主机的dns,这些都可以指定进行更改,--graph=指定文件目录,--dns=xxxx方式进行指定!

        [root@localhost ~]# yum install docker -y

      开机自启动docker服务

        [root@localhost ~]# systemctl enable docker

      配置加速器:添加如下标红部分(如果有阿里云账号)

        [root@localhost ~]# more /usr/lib/systemd/system/docker.service

        

      

      重新加载配置:

        [root@localhost ~]# systemctl daemon-reload

      启动docker服务:

        [root@localhost ~]# systemctl start docker

      查看docker服务是否开启:出现如下标红表示启动docker成功!

        [root@localhost ~]# systemctl status docker

        

    2. 容器的简单操作

        搜索镜像:

         docker search 镜像名

        下载镜像:

          下载nginx镜像:

            [root@localhost ~]# docker pull nginx

        查看本机有哪些镜像:      

          [root@localhost ~]# docker images
          REPOSITORY TAG IMAGE ID CREATED SIZE  <-------------仓库的名字    版本号     镜像的id     镜像的创建时间       镜像的大小
          docker.io/nginx latest 231d40e811cd 5 days ago 126 MB
          docker.io/alpine latest 965ea09ff2eb 5 weeks ago 5.55 MB

        导出镜像:

          把nginx镜像导出到指定目录:例子

            [root@localhost ~]# docker save nginx > /tmp/nginx20191128.tar.gz

        删除镜像:docker rmi 镜像的名字或者id

        导入镜像:把nginx镜像导入例子

          先删除nginx镜像,然后根据之前导出的路径进行导入:        

            [root@localhost ~]# docker rmi nginx
            Untagged: nginx:latest
            Untagged: docker.io/nginx@sha256:50cf965a6e08ec5784009d0fccb380fc479826b6e0e65684d9879170a9df8566
            Deleted: sha256:231d40e811cd970168fb0c4770f2161aa30b9ba6fe8e68527504df69643aa145
            Deleted: sha256:dc8adf8fa0fc82a56c32efac9d0da5f84153888317c88ab55123d9e71777bc62
            Deleted: sha256:77fcff986d3b13762e4777046b9210a109fda20cb261bd3bbe5d7161d4e73c8e
            Deleted: sha256:831c5620387fb9efec59fc82a42b948546c6be601e3ab34a87108ecf852aa15f
            [root@localhost ~]# docker images
            REPOSITORY TAG IMAGE ID CREATED SIZE
            docker.io/alpine latest 965ea09ff2eb 5 weeks ago 5.55 MB

            [root@localhost ~]# docker load < /tmp/nginx20191128.tar.gz
            831c5620387f: Loading layer [==================================================>] 72.48 MB/72.48 MB
            5fb987d2e54d: Loading layer [==================================================>] 57.67 MB/57.67 MB
            4fc1aa8003a3: Loading layer [==================================================>] 3.584 kB/3.584 kB
            Loaded image: docker.io/nginx:latest

            [root@localhost ~]# docker images
            REPOSITORY TAG IMAGE ID CREATED SIZE
            docker.io/nginx latest 231d40e811cd 5 days ago 126 MB
            docker.io/alpine latest 965ea09ff2eb 5 weeks ago 5.55 MB

        启动容器:docker run 镜像名字  执行的命令

          例子:

            [root@localhost docker]# docker run -it alpine sh 

        查看正在运行的容器:

          docker ps

        查看所有容器:docker ps -a

        删除容器:docker rm 容器id

        --name 指定容器的名字:自定义容器名字

          docker run -it --name 自定义容器名 镜像名 

        docker inspect 容器id或者容器名 :查看容器详细信息

          

          进入容器方式(推荐):

          docker exec  -it 容器名或者容器id

       创建容器(推荐):例子

          docker run -it -d --name mynginx04 nginx

       查看容器日志:例子

          docker logs -f mynginx04 

      

  • 相关阅读:
    第一次程序改错
    趣拼图——项目演示及代码
    数据流图和数据流程图
    UML图
    UML用例图
    第二次迭代目标的分配
    小组分工
    迭代目标
    我们的项目
    2017-4-18 关于小组APP
  • 原文地址:https://www.cnblogs.com/renyongbin/p/11942945.html
Copyright © 2011-2022 走看看