• docker学习篇(一) ----入门篇


    什么是docker

    docker自2013年诞生以来已有5年了,最初基于Google公司的go语言实现的,项目代码在GitHub上进行维护。

    项目地址https://github.com/moby/moby

    docker是为了实现轻量级的操作系统虚拟化解决方案,基础在linux系统的ubuntu版本下开发的。

    下图比较了Docker和传统虚拟化方式的区别:

    可以看出容器是在操作系统层面实现虚拟化,直接服用本地主机的操作系统,而传统的方式则是在硬件层面实现的。

    docker的优势

    更快速的交付和部署:开发者可以使用标准的镜像来构建一套开发容器,在完成开发以后,运维人员可以直接使用这个容器来部署代码。docker的启动时秒级的,节约了开发测试以及部署的时间。 

    更高效的虚拟化:docker是内核级的虚拟化,因此可以实现更高的性能和效率。 

    更轻松的迁移和扩展:docker支持linux、window、macOS,几乎可以在任意的平台运行,这种兼容性非常方便应用程序在平台间的迁移。 

    更简单的管理:docker所有的修改都已增量的方式被分发和更新,从而实现了自动化的管理

    总结

    特性容器虚拟机
    启动 秒级 分钟级
    硬盘使用 一般为 MB 一般为 GB
    性能 接近原生 弱于
    系统支持量 单机支持上千个容器 一般几十个

    安装

    Linux(以Ubuntu16.04为参考)

    1. 使用root权限登录,保证管理有root权限或者可以执行sudo 

    2. 检查curl包有没有安装

    $ which curl

    如果没有安装,更新apt源之后安装curl包

    $ sudo apt-get update 
    
    $ sudo apt-get install curl$ sudo apt-get update 

    3. 获取最新的docker安装包

    $ curl -sSL https://get.docker.com/ | sh 

    注意,该命令需要sudo权限 

    4. 确认docker是否安装成功

    $ sudo docker run hello-world

    注意:该命令的作用是下载一个测试用的镜像并启动一个容器运行它,运行完成以后会输出:hello-world。表明docker成功安装。

    其他版本的Linux安装docker请参考这里:http://www.docker.org.cn/book/install/linux.html

    window

    win7、win8下安装

    docker的守护进程依赖于linux内核,无法直接在windows环境直接运行docker,解决方案就是使用官方推荐的docker-machine命令创建一个docker虚拟机并附加到上面,这个docker虚拟机来为你的windows系统提供docker服务。使用docker-machine命令需要用到Docker Machine,可是使用Docker Toolbox工具箱来安装docker machine工具及其他docker工具。

    需要注意的是Docker Toolbox只能在windows7.1以及更高的版本上运行。下面我们介绍win7,win8安装Docker的过程:

    1. 下载Docker Toolbox:https://www.docker.com/toolbox

    2. 双击安装

    3. 默认的安装参数

    • installs executables for the Docker tools in C:Program FilesDocker Toolbox
    • 默认安装目录是在C:program filesdocker toolbox
    • 更新已经安装的virtualbox包
    • 在程序的快捷菜单中添加一项“Docker Inc”
    • 更新PATH环境变量
    • 创建桌面快捷方式

    4. 按照安装向导进行安装

    5. 安装完成

    下面介绍在win7,win8中启动docker

    当在win7或win8中启动一个容器,需要有这些过程:

    • 创建一个Docker虚拟机(若已经创建过,可以启动已有的虚拟机)
    • 将环境切换到虚拟机中
    • 使用docker命令来创建,加载,管理容器

    实现步骤:

    1. 启动cmd

    2. 将ssh.exe所在目录添加到PATH变量中。ssh.exe可以在mysysgit的bin目录中找到

    set PATH=%PATH%;"c:Program Files (x86)Gitin"

    3. 创建一个新的docker虚拟机

    docker-machine create --driver virtualbox my-default Creating VirtualBox VM...
    Creating SSH key... Starting VirtualBox VM... Starting VM... To see how to connect Docker to this machine, run: docker-machine env my-default 
    注意:上面的命令会生成一个配置文件,在C:usersusername.docker.machinemachines目录下。

    4. 列出可用容器

    C:Usersmary> docker-machine ls
    NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
    my-default *        virtualbox   Running tcp://192.168.99.101:2376  
    5. 为新的虚拟机获得environment命令
    C:Usersmary> docker-machine env --shell cmd my-default 

    6. 连接到默认的机器

    C:Usersmary> eval "$(docker-machine env my-default)" 

    7. 运行hello-world容器

    C:Usersmary> docker run hello-world

    window10安装docker

    1. 启用Hyper-V

    打开控制面板-程序和功能-启用或关闭windows功能,勾选Hyper-V,点击确定


    2.安装docker

    下载地址:https://store.docker.com/editions/community/docker-ce-desktop-windows

    点击“Get Docker”即可下载安装包

    下载完成之后运行安装包

    点击“Close and log out”,这时候需要重启电脑。

    3. 运行docker

    打开cmd,输入:

    docker version

    即可查看当前安装的docker的版本号。

    输入:

    docker run hello-world

    输出“hello world”表示安装成功。

    docker的基本概念

    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)

    镜像

    我们可以将镜像看做一个只读模式的模板,有很不同的镜像在我们需要的时候可以进行使用。比如一个Ubuntu16.04操作系统,里面仅安装Apache或用户需要的其他应用程序。

    在我们实际开发中容器中会使用多个镜像,我们可以将镜像看做一堆只读层的统一视角

    很多个只读层重叠在一起,除了最下面的一层,其它层都会有一个指针指向下一层,统一文件系统能够将不同的层整合成一个文件系统,为这些层提供一个同意的视角,从而隐藏了多层的存在。我们可以看到图片右边这个视角形式。

    容器

    docker通过容器来运行应用。

    容器时镜像创建的运行实例,用户可以交互式的进行操作。每一个容器都是相互隔离的安全平台。

    仓库

    仓库时集中存放镜像文件的场所。

    注意:仓库和仓库注册服务器并不是一个概念,仓库注册服务器旺旺存放着多个仓库,每个仓库又包含多个镜像,每个镜像通过不同的标签来区分。

    仓库可以分为公开(public)仓库和私有(private)仓库两种形式。

    Docker Hub 

    docker hub是最大的工卡仓库,它存放了很多镜像供用户pull和使用

    网址:https://hub.docker.com

    注意:使用docker hub需要翻墙

    国内也有公开的仓库:Docker Pool

    网址:http://www.dockerpool.com

    用户可以在创建自己的镜像后使用push命令上传到共有或者私有仓库。在需要使用的时候从仓库pull下来就行了。

    参考文章:http://wiki.jikexueyuan.com/project/docker-technology-and-combat/

                      https://www.cnblogs.com/bethal/p/5942369.html

  • 相关阅读:
    axublogcms1.1.0 Getshell
    易酷 cms2.5 本地文件包含漏洞 getshell
    通过 phpmyadmin getshell
    python 简单图像识别--验证码
    Linux 入侵检测小结
    beef + msf 实现内网渗透
    phpwind v9存在命令执行漏洞(登陆后台)
    缓冲区溢出实践
    《Metasploit魔鬼训练营》第四章(下)
    《Metasploit魔鬼训练营》第四章(上)
  • 原文地址:https://www.cnblogs.com/lishanlei/p/9461300.html
Copyright © 2020-2023  润新知