• Docker 入门


    Docker 入门
    =================


    # Docker是什么
    ## 简介
    * Docker的是一个轻量级的操作系统虚拟化解决方案。
    * 用官网的概括来说就是“Build,Ship and Run Any App,Anywhere”,装载任何App,在任何地方都可以运行
    * 实现了对应用的封装,部署,运行等生命周期管理,到处都可以运行。

    # Docker的原理
    ## 原理
    * 基于Linux自带的(Linux。 Containers,LXC)技术(名称空间,资源配额等)
    * 与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译
    * 容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。

    ## 与虚拟机的区别

    ![docker与虚拟机](docker_vm.jpg)

    ## docker架构

    ![docker架构](docker_image.png)

    ## Docker Daemon
    * 最核心的是 Docker Daemon我们称之为Docker守护进程,也就是Server端
    * Server端可以部署在远程,也可以部署在本地,因为Server端与客户端(Docker Client)是通过Rest API进行通信。

    ## Docker CLI
    * docker CLI 实现容器和镜像的管理,为用户提供统一的操作界面
    * 这个客户端提供一个只读的镜像,然后通过镜像可以创建一个或者多个容器(container)
    * 这些容器可以只是一个RFS(Root File System),也可以是一个包含了用户应用的RFS。容器在docker Client中只是一个进程,两个进程是互不可见的。

    ## Docker的镜像
    * Image: 一个只读的镜像模板。可以自己创建一个镜像也可以从网站上下载镜像供自己使用。镜像包含了一个RFS.一个镜像可以创建很多容器。

    ## Docker的容器
    * Container:由docker client通过镜像创建的实例,用户在容器中运行应用,一旦创建后就可以看做是一个简单的RFS,每个应用运行在隔离的容器中,享用独自的权限,用户,网络。确保安全与互相干扰

    ## 与镜像的区别
    * 两种基本上类似,唯一的却别是镜像最上面那一层是只读的,不可以修改,但是容器最上面一层是rw的,提供给用户操作

    ## Docker的仓库
    * Repository: 存放镜像的地方,官方仓库是https://hub.docker.com

    # Docker的安装
    ## 国内镜像安装
    * Docker 的 安装资源文件 存放在Amazon S3,会间歇性连接失败。所以安装Docker的时候,会比较慢。
    * 你可以通过执行下面的命令,高速安装Docker。


            curl -sSL https://get.daocloud.io/docker | sh


    ## 镜像加速器

    * Docker镜像服务器在国外,会导致访问很慢,可以使用以下命令来设置加速器


            curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://e7850958.m.daocloud.io


    # Docker的卸载
    ## 卸载docker包
    * 你可以使用以下命令来卸载


            sudo apt-get remove docker docker-engine

    ## 删除数据卷
    * 卸载Docker后,/var/lib/docker/目录下会保留原Docker的镜像,网络,存储卷等文件. 如果需要全新安装Docker,需要删除/var/lib/docker/目录


            rm -rf /var/lib/docker/

    # Docker的常用操作

    ## docker search查询

        docker search java
       
    ## 查询的结果

        NAME                        DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
        node                        Node.js is a JavaScript-based platform for s…   5973                [OK]               
        tomcat                      Apache Tomcat is an open source implementati…   1978                [OK]               
        java                        Java is a concurrent, class-based, and objec…   1801                [OK]               
        openjdk                     OpenJDK is an open-source implementation of …   1126                [OK]               
        ghost                       Ghost is a free and open source blogging pla…   805                 [OK]               
        anapsix/alpine-java         Oracle Java 8 (and 7) with GLIBC 2.23 over A…   340                                     [OK]
        jetty                       Jetty provides a Web server and javax.servle…   262                 [OK]               
        couchdb                     CouchDB is a database that uses JSON for doc…   221                 [OK]               
        tomee                       Apache TomEE is an all-Apache Java EE certif…   53                  [OK]               
        groovy                      Apache Groovy is a multi-faceted language fo…   49                  [OK]               
        lwieske/java-8              Oracle Java 8 Container - Full + Slim - Base…   40                                      [OK]

    ## docker pull拉取镜像

        docker pull tomcat:8
       
    ## docker run运行容器

        docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /home/kd/data:/var/lib/mysql mysql
       
    ## docker ps 查看运行的容器
       
        docker ps -a
       
    ## docker 容器的状态控制
       
        docker start/stop/restart/kill mysql
       
    ## docker 容器删除

        docker rm mysql
       
    ## 删除镜像
       
        docker rmi mysql
       
    ## 导入镜像
       
        docker load < mysql.tar

    ## 导出镜像
       
        docker save mysql >mysql.tar

    ## 给镜像加标签

        docker tag id mysql
           
    # Docker Compose
    ## 简介
    * Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
    * Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multicontainer Docker applications)

    ## 安装
    * Docker Compose 存放在Git Hub,不太稳定。
    * 你可以也通过执行下面的命令,高速安装Docker Compose。


            curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
            chmod +x /usr/local/bin/docker-compose


    ## 示例
        version: '3'
        services:
          web:
            ports:
            - "8100-8200:8080"
         
    ## docker-compose 启动容器

        docker-compose up -d
       
    ## docker-compose 启动容器
       
        docker-compose down

    ## docker-compose 控制容器状态
       
        docker-compose start/stop/kill web
       
    ## docker-compose 调整容器个数
       
        docker-compose scale web=3
       
    ## 服务编排

        version: "3"
        services:
            mysql:
              image: mysql:5.7
              environment:
              - MYSQL_ROOT_PASSWORD=m4R4YWn40QduqEKd
              ports:
              - 3306:3306
            app:
              image: tomcat:8
              ports:
              - 8080:8080
              links:
              - mysql:mysqlhost
            nginx:
              image: nginx
              ports:
              - 80:80
              links:
              - app:apphost
             
             
    #  其他
    ## 其他资源
    * Dockerfile
    * Docker Swarm
    * Docker Machine
    * Kubernetes (k8s)

    ## 常用镜像
    * mysql
    * tomcat
    * redis
    * nginx
    * Docker UI
    * Kafka
     

    #  Q&A

  • 相关阅读:
    设置按钮取消高亮
    类似刷新微博后,顶部显示更新数量的动画。
    真机调试时,后台无法持续定位
    第六百三十三、四天 how can I 坚持
    第六百三十二天 how can I 坚持
    第六百三十一天 how can I 坚持
    第六百三十天 how can I 坚持
    第六百二十九天 how can I 坚持
    第六百二十八天 how can I 坚持
    第六百二十七天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/9710094.html
Copyright © 2020-2023  润新知