docker 初识

116 阅读5分钟

这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战

前言:docker 是啥?

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

docker可以在什么情况下使用

  • 1.web应用自动化打包发布,像tomcat应用的发布。

  • 2.自动化测试和持续集成、发布

  • 3.在服务型环境中部署和调整数据库或其他的后台应用

  • 4.搭建paas环境

使用docker有什么好处

1.简单易操作,简化了以往复杂的应用程序安装步骤,使用docker会变得非常简便。

2.可兼容多种应用,Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成镜像部署。

3.省钱 docker结合云可以做到高性能低价格

特别之处:Docker是基于Linux 64bit的,在32位机器上无法运行。

docker 重要概念: image 与 container (镜像和容器)

抽象层面上可以近似理解,docker把应用程序与所需要的环境依赖全部都打包在image(镜像)文件里面,根据image文件可以启动docker容器来运行你的服务。这个过程有点 类似于开机时把操作系统从硬盘加载到内存的过程。可以根据同一个image文件启动多个容器。
image是由是一层层的文件系统组成的,被称为 Union FS(联合文件系统)。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。 虚拟文件系统的目录结构就像普通 linux 的目录结构一样,docker 通过这些文件再加上宿主机的内核提供了一个 linux 的虚拟环境。每一层文件系统我们叫做一层 layer, 在docker image中每一个layer都是只读的,所以image是不可更改的。 构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作相当于做一层修改,即增加一层文件系统。一层层往上叠加,上层的修改会覆盖底层的可见性,就像上层把底层遮住了一样。 当你使用的时候,你只会看到最终的修改结果,你不知道包含了多少层的修改,也无法知道每一层具体修改了什么什么。 最后,当从一个镜像启动容器时,docker会在镜像的最顶层加载一个读写文件系统,只有最顶层的的容器部分是可读写的。 当容器运行后,文件系统发生变化都会体现在这一层,当改变一个文件的时候,这个文件首先会从下面的只读层复制到读写层,然后读写层对该文件的操作会隐藏在只读层的该文件,这就是传说中的copy on write。

所以说容器是可写的,镜像是只读的。
如果有很多镜像的话,比如本地主机有很多很多的镜像,如果在这些镜像之间有些层是一样的,这些层只会占用一个空间,所以在构建镜像时多用相同的基础镜像可以达到节省空间的目的。

其实image的构建过程有点类似于git更改的提交,每次commit相当于增加一个layer。一般docker的安装目录位于/var/lib/docker,而这些layer位于/var/lib/docker/aufs/diff, 之所以用diff这个词作为目录名称,我想layer的实际含义不言而喻了。

开始实操

win 10 专业版下载 安装

hub.docker.com/editions/co… github.com/docker/tool…

image.png

win10 家庭版 下载安装

github.com/docker/tool…

win10 home版安装时的报错

docker ps -a 报错


error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/json?all=1: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

解决方案:


重新启动电脑后,执行

 C:\Program Files\Docker Toolbox文件夹下的boot2docker.iso 复制到C:\Users\lzy\.docker\machine\cache下,然后断开网络,就可以继续安装完毕了,亲测可行!

参考来源

<https://blog.csdn.net/zengqingshanzheng/article/details/89007708?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1>

MacOS Docker 安装

使用 Homebrew 安装

macOS 我们可以使用 Homebrew 来安装 Docker。

Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:

$ brew install --cask --appdir=/Applications docker

==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:          # 输入 macOS 密码
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
&#x1f37a;  docker was successfully installed!

在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标()。

mac dockerForMac 镜像 加速

cr.console.aliyun.com/cn-hangzhou…

针对安装了Docker for Mac的用户,您可以参考以下配置步骤:

在任务栏点击 Docker Desktop 应用图标 -> Perferences,在左侧导航菜单选择 Docker Engine,在右侧输入栏编辑 json 文件。将

btkjkpim.mirror.aliyuncs.com加到"registry-mirrors"的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。