公司最近搭建docker环境,其中会遇到一些问题,在这里记录一下。

先来了解一下docker

一、基本概念

1.Docker中基本概念
镜像(Image)

提到镜像,有对操作系统有一定认知的都知道,镜像是一个压缩的ISO文件,里面包含操作系统运行所需要的运行环境以及库文件,配置文件等等。从认识上简单的来说,镜像就是面向对象中的类,相当于一个模板。从本质上来说,镜像相当于一个文件系统。而docker镜像相当于是一个root文件系统,除了提供容器运行所需要的程序,库,资源,配置等文件还包括运行时准备的一些配置参数(匿名卷,环境变量,用户等)。镜像不包含任何动态数据,在构建完成之后本层镜像就不会被改变。

docker镜像在设计之时,就充分使用Union FS 技术,并被设计为分层存储的架构。所以与传统意义上的镜像有着很大不同,它并非体现为一个打包的文件,而是由一组文件系统组成,或者说由多层文件系统联合组成。

镜像构建时,由下网上一层一层构建,每一层构建完成后就不会发生改变,后一层上对上一层的改变都发生在本本层。删除上一层文件也只是标记删除,并不会影响上一层。所以,构建镜像时,每一层尽量包含本层需要的东西,其他额外的东西应该在构建结束前清理掉。

容器(Container)

容器的实质是进程,是镜像的实例化, 但与直接在宿主执行的进程不同,容器进程运行与属于自己独立的命名空间,因此容器可以拥有自己的root文件系统,自己的网络配置,自己的进程空间。实质是进程,所以拥有进程的所有特性,可以被创建,启动,暂停,停止,删除等。

由于镜像的特殊架构,使用分层存储,容器运行时,以镜像为基础层,在基础层上,创建当前容器存储层,相当于进程的栈空间。容器存储层和容器一样,容器进程退出时,其对应的容器存储层也随之消亡。所以容器运行时产生的任何数据都不应放在容器存储层,所有文件写入操作都应该使用数据卷,或者绑定宿主目录,直接对宿主发生读写。

仓库(Repository)

仓库保存定义好的镜像,提供保存,下载,版本管理等等功能。通常一个docker Registry 服务包含多个仓库,每个仓库可以包含多个标签tag,每个标签对应一个镜像。若包含的镜像相同版本不同,通常以标签分别标识,我们可以通过<仓库名>:<标签>指定具体那个镜像。如果不给出标签默认以latest作为默认标签。

公开的仓库服务有很多,默认使用官方的Docker hub ,它拥有大量高质量的官方镜像,此外还有coreOs的Quay.io,google 的Goolge Container Registry(K8S),国内访问可能会比较慢,所以国内的云服务商提供了一些针对Docker Hub的镜像服务,常见有:阿里云加速器,DaoCloud 加速器,灵雀云加速器。

国内也有类似Docker Hub的仓库服务。比如时速运镜像仓库,网易云镜像服务,DaoCloud镜像市场,阿里云镜像库等。当然有公开的仓库服务,自己也可以搭建私库,常见使用sonatype Nexus 以及 WMWare Harbor搭建私库,有时间学习一波再来更新。

(非原创,摘自https://blog.csdn.net/qq_40101333/article/details/81129248 )

2.Docker Toolbox

Docker Toolbox是作为不满足 Docker 安装要求的旧 Mac 系统/旧 Windows 系统的一种解决方案。

Docker Toolbox 里面包含啥?:

Docker Machine:用于运行 docker-machine commands

Docker Engine:用于运行行 docker commands

Docker Compose:用于运行 docker-compose commands

Kitematic:一个 Docker GUI,即一个 Docker 图形用户界面

Docker QuickStart shell:一个预配置好了 Docker command-line environment 的 shell

Oracle VirtualBox  :虚拟机

3 What you get and how it works  你会下载到啥?它是怎么工作的?

下载的内容包括:Docker Machine、Docker Engine、Docker Compose、Kitematic、Docker QuickStart shell、Oracle VirtualBox

因为 Docker Engine 的守护进程依赖于 特定的 Linux 内核特性,所以你不能在 Windows 本地直接运行 Docker Engine。

因此,必须使用 Docker Machine command、docker-machine 来创建和连接到一个本地机器上的 small Linux VM。

这个 Linux VM 在你的 Windows 系统上为你运行着 Docker Engine。

二、安装

因为只在win系统下操作过安装,所以只说win的安装方法,Linux以后用到的话就再补充

1.查看当前系统版本是否支持docker安装

(1)支持直接安装 Docker for Windows 的

如果是 64位 Windows 10 Pro/Enterprise/Education,并且带有 Microsoft Hyper-V,则可以直接安装 Docker for Windows。

(2)不支持的上述版本的,安装Docker Toolbox

如果我们的机器不是 64 Windows 10 Pro/Enterprise/Education,那么就需要额外做一些工作:安装 Docker Toolbox

(我的电脑是WINDOWS 家庭版本,所以以下安装方法是基于Docker Toolbox的操作步骤

2. 安装条件检查

1.检查 Windows 系统是否是 Windows 7 及更高版本。如果满足文章开头说的第一种情况的,则建议直接安装 Docker for Windows。

官网下载路径:https://docs.docker.com/docker-for-windows/install/

Docker支持64 位版本的Windows 10 Pro,且必须开启Hyper-V

(1)确定 Windows 系统支持 Hardware Virtualization Technology 并已启用。

(查看方法:Ctrl+Alt+Delete 打开任务管理器 –> 选择性能选项卡即可看到虚拟化的状态,在虚拟化后面跟的是已启用则表示已正常开启,否则未开启。)

(2)检查 Windows 系统的位数,必须是 64位的系统。

2.其他版本的安装

(1)先下载 Docker Toolbox for Windows 安装包

官网下载路径:https://docs.docker.com/toolbox/overview/

Docker Toolbox的安装

(1)双击安装包进行安装Docker Toolbox

选择安装目录,一路下一步,最终安装完成

安装完成后,在你电脑桌面上看到新增了三个图标

(3)打开Docker Quickstart Terminal图标,启动一个终端,它会做一些事情来初始化 Docker Toolbox。

第一次启动的话你会看到命令行会输出一些东西,等待一下,它会配置Docker Toolbox,当它完成后,你会看到启动成功的画面

这个终端是一个特殊的 bash 环境,而不是标准的 Windows 命令行工具。这个 bash 是 Docker 所必须的

(4)在命令行中输入docker run hello-world并按回车键,如果docker配置成功的话,你会看到命令行中有如下输出:

三、问题记录

在第一次打开终端的时候,遇到了各种报错

(1)error in driver during machine creation:This computer doesn’t have VT-X/AMD-v enabled .Enabling it in the BIOS is mandatory

这个意思就是说你的虚拟机没有打开,这时手动打开虚拟机会发现下面问题:

这时当使用VirtualBox启动虚拟机时提醒“虚拟电脑控制台 - 错误”,说明你电脑虚拟化技术处于被禁用状态。
这时就要启动BIOS的虚拟化设置 | 开启CPU虚拟化支持。
重启电脑后按F2或F10进入BIOS界面(不同主板型号进入BIOS所需按键不同)。
进入BIOS界面:Configuratio > Intel Virtualization Technology > Enabled。
注:主板不一样其BISO中显示关键词也不一样的,主要是找到Virtual或Virtualization将其设置为Enabled。
(2)Looks like something went wrong in step ´Finalize´...

解决方法:找到docker toolbox的安装目录,找到start.sh文件,把其中的clear注释掉  示例: #clear

(3)Looks like something went wrong in step ´Checking if machine default exists´... Press any key to con

报错信息如下:

这是因为,启动时如果检测到没有 Boot2Docker,就会去下载,这个下载过程出现网络连接上的错误了,导致启动失败

1.先删除下载失败的临时文件 (c盘-用户-找到当前用户)

C:\Users\wj\.docker\machine\cache

2.自己用其他工具去下载对应的 boot2docker.iso 文件

我是直接用的其他同事正常安装上的文件

3.然后放置到对应的目录

4.重新打开Docker Quickstart Terminal

(4)looks like something went wrong in step ‘looking for vboxmanage.exe’

问题是 Docker 找不到 vboxmanage.exe,查看 Docker 安装目录下的 start.sh,发现以下代码片段:

此脚本是使用 VBOX_MSI_INSTALL_PATH 和 VBOX_INSTALL_PATH 这两个环境变量来定位 VBoxManage.exe 的,查看一下自己的环境变量,是否存在(有其中一个即可)。

我的有设置,但是设置的是 D:\VirtualBox,对比以上代码不难发现问题所在,改为 D:\VirtualBox\ 就好了!

四、简单命令

在$后输入各种docker命令就可以使用docker了

(1)查看docker的版本信息

docker info

(2)登陆docker Hub的账号

docker login

然后,输入用户名和密码

在使用docker时,是否登陆没有特别大的影响,区别是 :如果登陆了,就可以向docker hub上push自己的镜像了

(3)查看本机images

    docker images

(4)查看本机运行的container

     docker ps

(5)从dockerhub上pull 镜像

    docker pull 镜像名称

Docker Toolbox安装的更多相关文章

  1. Windows10下的docker安装与入门 (一)使用docker toolbox安装docker

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

  2. Windows10 使用docker toolbox安装docker

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

  3. 【学习】在Windows10平台使用Docker ToolBox安装docker(一)

    前言:今天距离元旦还有44天,时间点是18:11:45,想了想一路学习的过程和其中遇到的困难,其中有克服的,有放弃的,这有可能是我自己意志不坚定吧,学习docker也是我当下的一个目标,不知道会是成功 ...

  4. (转)Windows10下的docker安装与入门 (一)使用docker toolbox安装docker

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

  5. Windows Docker Toolbox 安装Redis等开发环境

    Redis作者不接受微软的补丁 Redis文档(https://redis.io/topics/quickstart) redis-server 是 Redis Server 本身 redis-sen ...

  6. docker toolbox在win7下的安装

    1.下载安装docker toolbox docker toolbox的下载地址: http://mirrors.aliyun.com/docker-toolbox/windows/docker-to ...

  7. Windows10 家庭版 Docker的安装

    Docker的安装 1.简介:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全 ...

  8. Docker toolbox换源

    一 docker toolbox安装 略.... 阿里云加速器地址 https://jbriwmh3.mirror.aliyuncs.com 二 为docker toolbox更换国内源 docker ...

  9. windows下docker toolbox无法下载boot2docker.iso

    GitHub连不上导致自动更新失败.(网络形势严峻!) 通过别的途径手动下载了指定的最新的boot2docker.iso文件.(比方说迅雷!比方说迅雷!比方说迅雷!) https://github.c ...

随机推荐

  1. 【React】react学习笔记01-概念与基本使用

      俺为啥要学这玩意:   家里的杂事好不容易处理完了,开始正式静下心来学习~博主是做后端开发的,js基础不深,之前也是用React写过许多东西了,但是基本上都是用的CV大法,别人的组 件修修改改拿来 ...

  2. SpringMVC_One

    SpringMVC_One SpringMVC的优势 (面试) 清晰的角色划分: 前端控制器(DispatcherServlet) 请求到处理器映射器(HandlerMapping) 处理器适配器(H ...

  3. ASP.NET第一次访问慢的解决方法(MVC,Web Api)

    问题现象 访问asp.net web项目的时候,第一次访问比较慢,当闲置一段时间后,再次访问还是会非常慢. 问题原因 这是IIS回收造成的,再次访问的时候会初始化操作,初始化需要耗费时间,所以访问会比 ...

  4. HDU 3938:Portal(并查集+离线处理)

    http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Problem Description   ZLGG found a magic theor ...

  5. jsp传值

    是由a1.jsp发出请求然后由a2.jsp转发给ok.jsp,由ok.jsp响应a1.jsp. 但是这个转发过程是在服务端发生的,客户端不知道所以地址是不变的 转发请求的代码: request.get ...

  6. (转)Java 8 中的 Streams API 详解

    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...

  7. c++学习书籍推荐《C++ Primer(中文版)(第5版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer(中文版)(第5版)>编辑推荐:一书在手,架构无忧:三十位一线架构师真知实践:百位架构师献计献策:十万文字尽显架构精华. 媒 ...

  8. 9.16考试 第一题 X国的军队题解

    这道题总体来看还是比较满意的.连想带打不超过半个小时,打了不到当时基本读懂后就感觉是贪心,但贪什么很重要,当时一开始想的是贪心死亡人数,从小到大搞,然后自己造了几个小数据,还好WA了,然后又列了一个式 ...

  9. C语言指针专题——使用指针要注意这些

    本文为原创,欢迎转发: 欢迎关注微博与微信号:C语言编程技术分享 C语言中,指针的概念有点难懂,使用起来稍微不注意,也会遇到各种问题.在本文中,我列举出了几个使用指针不当的方式,希望朋友们在编程实践中 ...

  10. 洛谷P1129 [ZJOI2007]矩阵游戏 题解

    题目链接:https://www.luogu.org/problemnew/show/P1129 分析: 这道题不是很好想,但只要想的出来,代码不成问题. 思路1 举几个例子,我们发现, 对于任何数来 ...