赞
踩
本篇为个人学习docker的总结与记录,仅代表个人观点
综上,docker是一个良好的虚拟机替代品
镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。
我是在WIN10上安装的docker,Docker for Windows 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V。下载完之后,注册,启动,任务状态栏出现小海豚(或者小轮船????)标记。

然后打开CMD,输入 docker pull ubuntu:18.04
*ps:命令格式为:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签],Docker Registry 地址的地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub,这里我使用了默认地址,从Docker Hub下载,直接指定了仓库名和标签 *

命令docker image ls 可以查看当前已安装的镜像

命令 docker run -it --rm [镜像名]:[标签号]可以运行镜像,root之内和linux命令一样

-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
–rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
python的很多包在window上都是不支持的,而装linux虚拟机也不是很方便,而且很占电脑资源,使用docker作为python程序的载体才是我真正安装docker的原因,方法有两种,一是直接运行ubuntu镜像,然后按照linux上装python的步骤安装python并运行;另外一种是构建一个自己的镜像,步骤如下:

a. 在宿主机上创建一个路径,用于存放后续内容
b. 在该路径下创建Dockerfile (名字是固定的),内容如下:
FROM python:3.7
RUN mkdir /doccode \
&& apt-get update \
&& apt-get install -y libsctp-dev lksctp-tools \
&& pip install pysctp \
&& pip install pysctp3
COPY ./a.py /doccode
WORKDIR /code
CMD ["python", "/doccode/a.py"]
其中,FROM 关键字定义的是基础镜像,RUN后面是在基础镜像上运行的命令,这里写的是我要做的sctp client功能所需要的包和需要开启的功能,可以根据自己的python脚本内容自行定制,COPY [源路径] [目标路径] 是把宿主机上的文件拷到镜像中,a.py即我要运行的python程序(Ps:这里的路径不是Dockerfile所在地址为根目录,而是上下文地址,上下文地址可以在build时指定,如后面build时我输入的 C:\Users\tinhao\docPython>docker build -t pydoc . 这里最后的.就是指定上下文地址,这里 . 代表当前路径),最后一个CMD标准格式是:
a.shell 格式:CMD <命令>
b.exec 格式:CMD [“可执行文件”, “参数1”, “参数2”…]
用来指定容器执行的主进程(类似开机启动的概念),比如这里我设置为 “python”, “/doccode/a.py” 运行镜像时,就会直接开始执行我的a.py文件

其中,pydoc为自己指定的镜像名(想起啥名都可以),后面的. 表示上下文地址为当前路径(…/tinhao/docPython, 也可以指定其他的路径)。build成功之后,使用docker image ls可以查看到自己构建的镜像

这里的pydoc即我刚刚创建的镜像
然后按照普通镜像运行方式运行即可 docker run -it pydoc ,查看容器 docker ps -a 可以看到该镜像对应的容器:

Ps:这里exited状态为1是因为我只用了client段的py文件= =连不上server所以会报错,即我这个py文件会报错,所以容器直接异常退出了,正常能运行的py文件是不会这个样子滴~
附上本篇参考文档,也是docker各命令及功能详解:
https://yeasy.gitbooks.io/docker_practice/image/dockerfile/cmd.html
基本常用内容写完了~ 么么哒~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。