首页 > 技术文章 > Docker系列学习(三)——docker镜像和docker容器基本命令

CircleWang 2021-08-26 18:27 原文

  接下来我们将介绍Docker最基本的两个部分,镜像和容器的相关命令,其实在我前一篇博文Docker系列学习(二)——查看,进入,退出docker镜像的方法介绍了大部分的容器和镜像的命令,这一篇文章主要是介绍这些命令的相关常用的可选参数有哪些?

  首先要给大家提到的是,docker的官方文档的地址是:https://docs.docker.com/reference/

  大家也可以使用命令行来查看可选参数的帮助文档,比如查看docker run的可选参数

docker run --help    # docker 命令 --help

   以上两种方法是最常用的查询命令的帮助文档的方式。下面我们会仔细讲解docker的容器和镜像的相关命令。

一、镜像命令

 1、docker images :查看本地所有镜像

常用参数
-a  显示全部本地镜像(如果不加这个参数会显示一部分的本地镜像)
-q 只显示镜像ID

  关于镜像返回的所有内容的解析,可以参看我的这篇博文Docker系列学习(二)中第3点。

 2、docker search 镜像名:在dockerhub中搜索镜像

常用可选参数
--filter 用于过滤使用

  这一行命令等价于在dockerhub(网页)中去搜索镜像,例如我搜索一下mysql的镜像

docker search mysql

  可以看到我们获取了dockerhub上的mysql的镜像列表。

  比如我们想要搜索STARS大于3000的镜像可以是用下面命令

docker search mysql --filter=STARS=3000

   可以看到已经检索出来的。

 3、docker pull:下载对应镜像

  我们可以通过这个命令从镜像库中下载镜像到本地。docker pull 镜像名:版本号(如果不写版本会下载最新的),这里的版本号要注意一下一定要在dockerhub中找到支持的版本号。

docker pull mysql

  可以看到现在正在下载对应的镜像了,其实下载过程是在分层下载对应的支持镜像(文件分层系统)。

  下载成功之后会出现以上界面,其实我们可以住一下最后一行docker.io/library/mysql:latest,这个表示的是mysql的真实地址,也就是说,上面的下载命令行其实等价于:

docker pull docker.io/library/mysql:latest

 4、docker rmi 镜像名:TAG/ID:删除镜像

  这一部分可以参见我的这篇博文Docker系列学习(二)中第4点。当然可以删除多个镜像,只要在命令行中用空格隔开就好了。    

 5、 docker save -o 文件路径 镜像名 :在本地保存镜像

  这里要注意的是-o 路径这里的路径是文件路径,而不是目录,换句话说这个路径应该是不存在的一个文件,docker会自动将镜像储存为这个文件。

 6、 docker load -i 文件路径 :载入本地镜像

  这里的文件路径跟save的一样,是一个无后缀的文件路径。

 7、docker tag 镜像名 新镜像名:给镜像重新命名

  这个命令中的新旧镜像名都是包含了:TAG的,例如docker tag my_ubuntu:latest wangyuanquan/my_ubuntu:1.0

二、容器命令

  只有先拥有了镜像才能创建容器,之前的文章也有说到,容器和镜像就好像实例与类的关系,只有先定义了类,才能实例化。下面我们利用下载好的ubuntu镜像来演示相关内容。

 1、docker run [可选参数] images:根据镜像启动容器

常用可选参数
--name='NAME' 给容器一个名字。
--rm 当容器退出后会自动删除这个容器。(ps -a 找不到的)
-d 后台方式运行。也就是关闭终端之后,容器不会被关闭。
-it 在创建容器的时候同时进入容器。一般都需要加这个参数。
-p

指定容器的端口

  • 使用方式1:-p 主机端口:容器端口
  • 使用方式2:-p 容器端口
  • 使用方式3:-p  ip:主机端口:容器端口

这里是端口转发,当有外网设备通信主机的端口时,主机就回转发到容器的对应端口

 -P  随机指定容器端口
docker run -it ubuntu:2.0  # 启动并进入容器

 

   可以看到运行启动命令之后,root@xxxx(容器ID)就是表示已经进入到了ubuntu系统中了,可以通过ls来查看这个系统里现在有的文件,其实这个容器就是具有完整的基本的ubuntu系统。

  退出容器命令

  • exit:直接在容器中输入exit表示退出并停止容器
  • Ctrl + P + Q:这三个快捷键可以诗得仅仅突出容器,但是不停止容器

 2、docker ps [可选参数]:查看正在运行的容器

常用参数
-a 列出所有的容器目录(正在运行+被退出的容器)
-n=x 显示最近创建的前x个容器
-q 只显示容器ID

  具体的使用示例可以参见这篇博文Docker系列学习(二)中第6点

 3、docker rm [可选参数]  容器id:删除容器

常用可选参数
-f 强制删除,可以删除正在运行中的容器

  具体的使用示例可以参见这篇博文Docker系列学习(二)中第7点   

docker rm -f $(docker ps -aq)  # 强制删除所有容器

 4、启动和停止容器

docker start 容器id    # 启动容器(从停止状态中启动)
docker restart 容器id  # 重启容器(从运行状态中关闭重启)
docker stop 容器id     # 停止容器(从运行中停止)
docker kill 容器id    # 强制停止容器(从运行中停止)

 5、docker stats 容器ID

  这个命令是用于查看正在运行的容器所占用系统的CPU以及内存的情况

 6、docker commit [可选参数]  容器id  命名新的镜像名:[TAG]:保存容器

常用可选参数
-m='描述信息' 保存为新的容器时,填写的描述信息
-a="作者" 填写容器作者名称

  我们在前面的了解中可以知道,更改容器里面的内容当我们退出容器的之后是无法保存的,因此我们想要保存操作只有把这个修改过后的容器重新提交成为一个镜像才行,当我们重新启动镜像的时候就可以载入我们修改过后的内容了。

docker commit -m='提交的描述信息' -a="作者" 容器ID 目标镜像名:TAG

 

推荐阅读