大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。
在上一期我们初步了解了Docker的强大功能,得益于Docker Desktop,我们可以快速地实现某些常用容器的部署。但说到底使用Docker还是需要和命令行打交道的,光靠图形界面拯救没有前途。那么这一期我们就来了解一下docker的基本操作命令。
首先我们回顾一下上一期所说的Docker的基本使用方式,即拉取镜像,构建容器和打包镜像。这三种操作各有其命令,分别为pull、run和commit。
pull命令
这个命令我们在上一期已经使用过它来下载python镜像了:
但是是不是有哪里不对?我们没有说下载哪个版本的python,所以这个命令默认给我们下载了最新版本的python。实际上,我们可以在镜像名后边加上一个冒号,后边写上标签名(tag),这样就可以指定需要下载的镜像版本。比如想要下载python3.7,就可以编写这样的命令:
从Docker Desktop可以看到python3.7版本的镜像已经下载成功了:
此外pull命令有几个参数,可以根据需要进行填写:
参数 | 作用 |
-a | 下载此镜像的所有版本 |
--disable-content-trust | 下载镜像后不进行校验 |
--platform= | 选择适用于指定平台的镜像(等号后填平台名) |
需要注意参数前的横杠是一道还是两道。一个字母前的只有一道横杠,为缩写参数,多个字母前的为两道横杠,为全拼参数。
在pull命令中,参数应位于pull和容器名之间。比如想要下载python的全部版本,可以编写这样的命令:
run命令
run命令虽然看起来只是运行容器的命令,但实际上隐含了很多操作。所以run命令非常重要,相关的参数也非常多。我们现在先看一些比较常用也比较重要的命令运行方法。
run命令最基本的构成就是镜像名。比如我们需要运行一个以python3.7为基础的容器,就可以编写这样的命令:
如果在此之前你没有使用pull命令拉取镜像,你就会发现执行了run命令后也会自动拉取镜像。所以如果没有特殊的要求我们其实可以直接使用run命令实现拉取镜像和构建运行容器一条龙操作。
接下来就是设置参数
在上一期的Docker Desktop运行容器的截图中我们可以看到一些常用的参数设置。首先是容器名称,容器名称的参数名为--name,参数名与参数值以空格间隔。比如我们想将容器命名为Python3.7,就可以编写这样的命令:
从Docker Desktop可以看到一个名为Python3.7的容器已经建立的,所使用的镜像为python:3.7
接下来是端口映射。通常一个镜像中的服务端口都是固定的,比如Redis的端口就是6379。可一旦我用了10个Redis,端口都一样,那就乱套了。所以我们需要对其进行映射,把不同Redis的端口映射到Docker的不同端口上,就可以通过访问Docker的指定端口来访问指定的Redis容器:
实际上我们必须通过docker的端口来访问容器,所以需要对端口映射进行设置。
设置端口映射有两种参数,一种是-P,这个参数会将容器中开放的端口随机映射到docker从49000到49900的某个端口。这种方法就是配置时比较省事,但是突出一个乱字。而另一种是-p,这个参数需要我们指定docker的端口和容器的端口。比如我们要把redis的6379端口映射到docker的6380端口,可以这样编写命令:
一定要记住冒号左边的是docker的端口,冒号右边的是容器的端口。
接下来是挂载卷。很多容器会留下运行数据,比如数据库的数据,或者爬虫爬取的信息。目前的容器都是封闭的,我们不太方便进入容器获取这些数据。而且如果容器出了什么问题,或者安装时有配置错误的情况,想要重新安装一下,这些数据就都会被删除,除非我们进行挂载卷的设置。挂载卷相当于给容器开了一个口子,把容器与外部系统进行了连通,和端口映射有一定的相似性。
设置挂载卷使用的是-v参数。比如我们想把系统中路径为D:\python的文件夹挂载到python容器中的/home/python目录,就可以这样编写命令:
这样我们就可以从外部系统访问这个目录中的内容,并且重装容器不会影响里边的内容。在很多容器的安装教程中提到的数据持久化指的就是设置挂载卷。
最后一个是环境变量。环境变量是对容器参数的设置,具体要设置什么,取决于容器的要求。每一个环境变量参数都以-e开始,空格后按照“参数名=参数值”的格式进行设置。
端口映射、挂载卷和环境变量都未必只有一条,每一条开始时都应标注参数名,不能合并同类项。
除此之外,run命令还有很多参数,当我们用到时再行讲解。
commit命令
使用Docker免不了翻来覆去地重新安装,或者从一台电脑上转移到另一台电脑上。每次都从默认的镜像开始安装并配置实在麻烦,我们可以使用commit命令将我们配置好的容器重新打包成镜像。commit命令关键的内容是容器名、镜像名和这个打包版本的版本号。比如我们想要给一个安装好了指定模块的Python3.7容器进行打包,版本号为custom-v1,可以编写这样的命令:
当然,如果想要更细化一下这个镜像的信息,可以添加两个参数,分别是作者名-a 和描述-m。需要注意的是这两个参数后接的值都需要用双引号包起来,就像这样:
从Docker Desktop中可以看到,这个镜像已经打包成功了:
等需要安装时直接指定此版本的镜像进行安装即可。
这一期我们初步了解了Docker运行的基本命令。接下来我们将会以实际的容器安装为例进行进一步讲解。如果这篇文章对你有所帮助,希望能帮室长点个赞和在看,你的鼓励是室长进步的动力
联系客服