Docker基础认识

什么是Docker

Docker 是一个开源应用容器引擎,它是基于go语言开发,并遵循Apache2.0开源协议。使用Docker可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

【官方文档】https://docs.docker.com

常用核心基本概念

镜像(Image)

类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。

仓库(Repository)

类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。
Docker基础认识
镜像、仓库、容器
去仓库把镜像拉到本地,用一条命令把镜像运行起来,把镜像变成容器。

官方仓库
网易蜂巢仓库

容器 container(Container):

类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。

官网关于容器的介绍What is a Container
https://www.docker.com/resources/what-container

Docker for Windows安装和使用

参考官方安装文档 https://docs.docker.com/docker-for-windows/install/

安装步骤

  1. 第一步
    进入官网点击主页的products,进入产品页面,找到Docker Desktop。
    Docker Desktop is an easy-to-install application for your Mac or Windows environment that enables you to start coding and containerizing in minutes.
    可以看到Docker Desktop就是一个应用程序方便安装docker。

  2. 第二步
    选择Docker Desktop (Windows)进入新页面:
    Get Docker Community Edition for Windows
    Docker for Windows is available for free.
    Requires Microsoft Windows 10 Professional or Enterprise 64-bit. For previous versions get Docker Toolbox.

    可以看到:
    win10的Docker比较特殊,Docker对Win10做了一个原生的支持。
    如果不是win10专业版或企业版64,使用Docker Toolbox安装。

    Docker toolbox是一个工具集,它主要包含以下一些内容:

    • Docker CLI 客户端,用来运行docker引擎创建镜像和容器
    • Docker Machine. 可以让你在windows的命令行中运行docker引擎命令
    • Docker Compose. 用来运行docker-compose命令
    • Kitematic. 这是Docker的GUI版本
    • Docker QuickStart shell. 这是一个已经配置好Docker的命令行环境
    • Oracle VM Virtualbox. 虚拟机

    由于Docker引擎的守护进程使用的是Linux的内核,所以我们不能够直接在windows中运行docker引擎。而是需要运行Docker Machine命令 docker-machine, 在你的机器上创建和获得一个Linux虚拟机,用这个虚拟机才可以在你的windows系统上运行Docker引擎。
    Windows想用docker的话,需要借助虚拟机,Windows7不像Windows10自带Hyper虚拟机,所以要用docker只有Docker Toolbox这个选择了。

  3. 第三步
    安装过程中,可以看到可以选择windows Container还是Linux Container,默认没有勾选是Linux Container。
    安装完成,点击桌面图标,提醒
    Hyper-V and Containers features are not enabled.
    Do you want to enable them for Docker to be able to work properly?
    Your computer will restart automatically.
    Note: VirtualBox will no longer work.

    根据提醒重启电脑即可。

  4. 第四步 测试你的安装
    查看docker版本,pull hello-world image拉取镜像从仓库。

> docker --version

Docker version 18.03.0-ce, build 0520e24

> docker run hello-world

docker : Unable to find image 'hello-world:latest' locally
...

latest:
Pulling from library/hello-world
ca4f61b1923c:
Pulling fs layer
ca4f61b1923c:
Download complete
ca4f61b1923c:
Pull complete
Digest: sha256:97ce6fa4b6cdc0790cda65fe7290b74cfebd9fa0c9b8c38e979330d547d22ce1
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

查看镜像、容器命令。

> docker image ls
> docker container ls --all

可以使用help查看命令参数说明。

> docker --help
> docker container --help
> docker container ls --help
> docker run --help

配置及使用

修改Docker镜像下载地址

Docker在安装完成后,默认镜像下载地址是国外的,在当前国内特殊的网络环境下,镜像下载是十分耗时的,为了克服跨洋网络延迟,能够快速高效下载Docker镜像,所以,国内的开发者们纷纷搭建了国内的镜像源,我们一般称之为加速器。

阿里的镜像站地址为:https://dev.aliyun.com/search.html ,访问该地址然后登陆阿里云账号—->在产品控制台—>Docker镜像仓库 –>镜像库—>Docker Hub 镜像站点 Copy “您的专属加速器地址”!
右键电脑右下角的Docker 图标–>Settings–>Daemon—> 将加速器地址复制到该页面上的文本框中,点击Apply 然后等待Docker重启,重启完毕就可以使用新的Docker镜像源了!!!

参考阿里官方说明如下:
阿里官方容器镜像服务
容器镜像服务(Container Registry)提供多地域镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。在开通流程中,您需要设置独立于账号密码的Registry登录密码,便于镜像的上传、下载。
如果您是子账号开通服务,请确认主账号已经设置过Registry登录密码。
针对安装了Docker for Windows的用户,您可以参考以下配置步骤:
在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:
{
“registry-mirrors”: [“https://iwfs1l0l.mirror.aliyuncs.com”]
}
编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。

Windows系统修改Docker镜像下载地址
参考URL: https://blog.****.net/a575553272/article/details/79970707
Docker国内镜像地址和下载安装
参考URL: https://blog.****.net/enweitech/article/details/52083280

win10上修改docker的镜像文件存储位置

windows上安装的docker其实本质上还是借助与windows平台的hyper-v技术来创建一个Linux虚拟机,你执行的所有命令其实都是在这个虚拟机里执行的,所以所有pull到本地的image都会在虚拟机的Virtual hard disks目录的文件中,这个文件就是虚拟硬盘文件。如果要想改变路径只需要在hyper-v管理器里设置就可以了。默认的安装路径是C:\Users\Public\Documents\Hyper-V\Virtual hard disks下。

windows10的docker使用的是Hyper-V虚拟机,所以镜像存放的目录就是Hyper-V的目录,首先停止docker。

打开Hyper-V管理器,1.开始菜单右键->控制面板->管理工具->Hyper-V 管理器

右键选择Hyper-V设置!
Docker基础认识
修改虚拟硬盘的默认文件夹,然后重启docker
Docker基础认识

改完,使用docker gui图形界面重启restart docker,进入setting-Andvanced查看Disk image location,发现已经变化。应该这里也可以直接改吧,未测试。

docker for windows pull镜像文件的安装位置改变方法
参考URL: https://blog.****.net/haojing8312/article/details/80790429
参考URL: https://blog.****.net/qq_28587263/article/details/53580637
参考URL: https://blog.****.net/u013948858/article/details/80811986

kitematic

kitematic是docker推出的GUI工具,使操作docker的方式变得更简单直观。
win10 如何安装 Docker Kitematic
参考URL: https://jingyan.baidu.com/article/fcb5aff768d8eeedaa4a71f8.html

Shared Drives

Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。
譬如我要启动一个centos容器,宿主机的/test目录挂载到容器的/soft目录,可通过以下方式指定:

# docker run -it -v /test:/soft centos /bin/bash

这样在容器启动后,容器内会自动创建/soft的目录。通过这种方式,我们可以明确一点,即-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录。

Docker设置共享文件夹
参考URL: https://blog.****.net/shaunqing/article/details/81483220
Docker for Windows 里的Shared Drives 设置不生效
参考URL: https://blog.****.net/u012680857/article/details/77970351

WINDOW上使用Docker的一些认识

关于Winwos上使用docker相关参考
【Windows和Linux容器异同大起底】
https://blog.****.net/zxy18210943475/article/details/78670195
【Windows Container 和 Docker:你需要知道的5件事】
https://blog.****.net/gm48mg0m/article/details/55049491
【在 Windows 上可以用 Docker 吗?】
http://m.it168.com/detailText.html?id=5002108
【Docker真的支持原生态Mac和Windows了吗? - 51CTO.COM
http://cloud.51cto.com/art/201603/507951.htm

问题总结

  1. 关于docker hub上不能注册dockeID的问题
    参考URL: https://blog.****.net/debugbugbg/article/details/81865553
    docker注册的页面有Google图片人机验证,如果不*的话,人机验证界面出不来,没有通过人机验证的话,Sign up按钮一直是灰色的。