Docker学习笔记

1、基础认知:

Docker学习笔记_第1张图片

Build-构建镜像 - 集装箱 - 镜像
Ship-运输镜像(从仓库和我们的主机上运输)- 码头 - 仓库
Run- 运行镜像(运行的镜像就是一个容器) - 运行程序的地方 - 容器
Docker运行过程:
去仓库把镜像拉倒本地,然后用一条命令把镜像运行起来变成容器!

2、Docker镜像:

是一种类似于Linux发展来的联合文件系统,只读的,分层存放操作系统文件、代码文件、配置文件等。每一层的文件被加载完成之后,所有的文件都会被看作是同一个目录,相当于只有一个文件系统。即通过分层的概念,实现镜像存储。这种文件系统即称为镜像。

3、Docker容器:

Docker学习笔记_第2张图片

实际上是一个运行在宿主机上的进程。可以看作是一个虚拟机,区别是一个一层层的文件系统,只有最上面那一层是可写的,下面就是对应的镜像。因为镜像每一层都是只读的,所以在写的时候,会将镜像内的文件拷到容器可写的最上层并进行修改。而应用在读取文件的时候,会从最上面一层开始读取,没有才会继续往下找,所以就会拿到最新的修改过的文件。这样可以保证同一个镜像可以生成多个容器独立运行,而容器之间没有任何干扰。

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

4、Docker仓库:

是集中存放镜像文件的场所,构建镜像的目的是:为了在其他的机器或环境运行程序。所以为了将程序可以放到其他的机器或环境中运行,就需要将镜像传到docker仓库上面,然后由目的地将这个镜像由仓库拉到对应的容器上。

公用镜像:hub.docker.com

网易蜂巢:c.163.com

docker也支持自己搭建镜像中心,只需要在镜像传输的时候,传到对应创建的docker仓库即可。

5、docker的安装,作为win10家庭版的安装手册链接如下:

5.1、下载安装toolbox:https://docs.docker.com/toolbox/overview/

Docker学习笔记_第3张图片

5.2、在百度云盘上下载boot2docker.iso,放到C:\Users\对应的本机用户\.docker\machine\cache下

https://pan.baidu.com/s/1qYyc0ag

5.3、解决点击Docker出现windows 正在查找bash.exe。如果想亲自查找文件,请点击“浏览”的问题:

https://blog.csdn.net/A632189007/article/details/78601213

最后安装成功:

Docker学习笔记_第4张图片

试水:

Docker学习笔记_第5张图片

运行:

Docker学习笔记_第6张图片

具体操作步骤:

1、pull:本地docker客户端告知本地的docker_host我需要拉取对应版本的镜像(默认为最新版本),docker_host先检查有没有这个镜像,没有的话,就去仓库上拉取到本地。

2、run:本地docker客户端告知本地的docker_host我需要运行对应版本的镜像(默认为最新版本),docker_host先检查有没有这个镜像,没有的话,就去仓库上拉取到本地,然后运行,有的话就直接运行。

Docker学习笔记_第7张图片

6、进一步学习

6.1、docker ps:可以查看在跑的镜像进程

6.2、前台进程,运行的时候可以通过ctrl+c(docker stop 容器id)结束这个容器,之所以有两个命令是因为

http://www.qingpingshan.com/m/view.php?aid=375399

所以可以通过 docker run -d :在后台运行这个容器,并且打印这个容器的id

6.3、在容器中运行命令:

Docker学习笔记_第8张图片

常用:docker exec -it(i:保证输入有效;t:分配一个终端) 可以区别容器的id前缀或名称 + 命令如bash

$ docker exec  -it 126 bash

在运行ps -ef的时候报错没有这个命令,原因及解决方案:https://blog.csdn.net/pansanday/article/details/81432485

7、docker网络:通过network namespace进行隔离

7.1、类型:

bridge(默认)桥接,容器会获得独立的network namespace,虚拟出自己的网卡和IP等等

host(需在启动容器的时候指定使用),容器不会获得独立的network namespace,不会虚拟出自己的网卡和IP等等,会和主机共用。

none:没有网络,不会和外界进行通讯

7.2、端口映射:(容器内的端口可以在主机上访问)

Docker学习笔记_第9张图片

$ docker run -d -p 8080(主机端口):80(映射的容器端口) hub.c.163.com/library/nginx

$ docker run -d -P(主机会随机映射一个端口对应容器端口) hub.c.163.com/library/nginx

8、镜像制作:

8.1、填写好Dockerfile:告诉docker要怎么样来制作我的镜像;制作镜像的每一步操作是什么。

8.1.1、继承自哪一个镜像如为war的程序包则:from 基础镜像的名字

from hub.c.163.com/library/tomcat

8.1.2、镜像的所有者、联系方式(可忽略): MAINTAINER xxx xxx163.com

8.1.3、将本地的应用放上去:COPY 本地目录的文件 tomcat对应$HOME的warapps目录下

8.2、运行docker build:根据dockerfile制作对应的镜像

8.3、docker bulid -t 名字:tag :给镜像指定名和TAG

最后一点:发现可以直接用docker来指定对应的程序运行上下文环境,这样就可以不用配置所有的东西也可以运行你想参考的代码包!!!

每个应用代码、环境上下文的打包可以看作是一个标准化的集装箱,具有隔离性。


以上知识来参看IMOOC:刘果国老师的《第一个docker化的java应用》和一篇写得不错的文章:http://www.cnblogs.com/SzeCheng/p/6822905.html

你可能感兴趣的:(docker)