
上节课我们创建了一个jdk镜像 我们在本机拿到一个jdk文件夹之后 把它拷贝到镜像里 在我们创建容器时 容器里面通过相关配置可以直接运行java程序

我们上节课执行docker build -t centos:jdk .命令
出现下面一段内容

为什么会出现这个呢? 这里的context上下文 是什么 to Docker daemon又如何理解
官方解释如下https://docs.docker.com/engine/reference/builder/#usage


实际上docker本身是一个cs架构的程序 而daemon作为守护进程(服务端)
当我们在终端中输入docker images列出docker 镜像时 不是操作的服务端 是通过docker给我们的客户端发送一个命令 这个命令的执行是由docker客户端来执行的(内部有个程序调用docker服务端api)服务端首先放出一堆api 然后有客户端调用(当然也可以自己通过程序写客户端(python或者go))
所以上节课执行docker build -t centos:jdk . 的时候 需要把当前上下文 这里的.点是把当前目录下的文件作为上下文 默认会寻找Dockerfile 如果有其他文件会把这些文件发送到服务端 所以当前上下文就是指 build命令的点(.)
docker提供了3种连接方式 (这节课使用windows8.1 tcp方式通过远程连接docker)docker在虚拟机上

首先查看下连接方式
ps -ef | grep docker

可以看见当前配置不支持tcp远程连接docker服务
接下来配置下远程访问

首先进入该文件夹

ls查看 可以看见有各种service文件 可以对其进行启动 其中我们要修改的就是docker.service文件


回车出现如下

编辑内容
添加下面内容

注释掉上面的 添加下面的 意思是连接方式支持两种本机使用unix方式连接 外部使用tcp方式连接
保存
systemctl daemon-reload(把守护进程重新装载)

systemctl restart docker 重新启动docker

ps -ef | grep docker

可以发现出现了tcp的连接方式
等下我们可以使用tcp方式连接docker并且操作
连接方式在官方https://docs.docker.com/develop/sdk/examples/处可以看见
后面我们会使用管理工具对docker进行操作 这节课我们演示下python方式连接操作docker


首先虚拟机中防火墙需要放行2375端口 否则外部连接不到

在pychram中新建test.py文件
内容如下

运行结果

与在xshell中执行docker images结果相同



更多相关api请看官方示例
网友评论