Docker入门:常用命令汇总(备忘),并理解记忆

一、帮助启动类命令

1. 启动docker

systemctl start docker

2. 停止docker

systemctl stop docker

3. 重启docker

systemctl restart docker

4. 查看docker状态

systemctl status docker

5. 开机启动

systemctl enable docker

6. 查看docker概要信息

docker info

7. 查看docker总体帮助文档

docker --help

8. 查看docker命令帮助文档

docker 具体命令 --help

二、镜像命令

2.1 docker images

功能:列出主机上的镜像。

在这里插入图片描述
上图红框中内容的具体参数含义如下所示:

(1)REPOSITORY:表示镜像的仓库源;
(2)TAG:镜像的标签;
(3)IMAGE ID:镜像ID;
(4)CREATED:镜像创建时间;
(5)SIZE:镜像大小。

注意:
(1)同一个仓库源可以有多个TAG版本,代表这个仓库源的不同版本,比如,我们使用REPOSITORY:TAG来表示不同的镜像。
(2)如果不制定一个镜像的版本标签,比如只使用docker、ubuntu,则会默认的使用最新的版本。

另外,该命令可以设置选项参数,常用的如下所示:
(1)docker -a images:列出本地所有的镜像(含历史影像层);
(2)docker -q images:只显示镜像ID。

2.2 docker search 某个镜像

docker search docker_name该命令是查找某个镜像是否存在于docker hub远程仓库中,如下图所示以hello-world为例:
在这里插入图片描述
上图红框中参数的含义如下所示:
(1)NAME:镜像名称;
(2)DESCRIPTION:镜像描述;
(3)STARS:点赞数量;
(4)OFFICIAL:是否是官方仓库;
(5)AUTOMATED:是否是自动构建的。

常用的选项为--limit n:之罗列出n个镜像,默认25个。通常情况下,我们只根据排名罗列出前五个足够了。以redis为例,输入指令docker search --limit 5 redis

在这里插入图片描述

2.3 docker rmi 某个镜像

删除某个docker镜像,假设我们要删除redis本地镜像,输入docker rmi redis,可以看出本来本地是存在redis镜像的,执行该指令后,就不存在了。

在这里插入图片描述

注意:
(1)我们不仅可以使用镜像名称删除,还可以使用镜像ID进行镜像删除。
(2)有时候使用docker rmi redis出现下图所示的情况,表示该镜像某些文件还被调用,这时候我们可以添加-f选项进行强制删除:docker rmi -f redis

在这里插入图片描述
如果想强制删除所有本地docker镜像,输入命令docker rmi -f $(docker images -qa)。然后再使用命令docker images查看本地docker镜像已经为空了:

在这里插入图片描述

2.4 docker pull 某个镜像

docker pull docker_name[:TAG]该命令是下载docker hub远程仓库中某个镜像:
(1)docker pull docker_name表示下载最新版本,也就是说下载镜像的TAG为latest;
(2)docker pull docker_name[:TAG]下载指定TAG版本的镜像。

为了直观地给出该指令的示例,我们首先强制删除所有本地docker镜像,输入命令docker rmi -f $(docker images -qa)。然后,输入指令docker pull hello-world从docker hub上下载最新版本的hello-world镜像:

在这里插入图片描述
输入指令docker pull ubuntu:16.04就能从docker hub上下载指定版本16.04的ubuntu:

在这里插入图片描述

再输入docker images命令就可以查看本地是否存在镜像hello-world了,下载成功:

在这里插入图片描述

2.5 docker system df

该指令用于查看某个镜像/容器/数据卷所占的空间信息:

在这里插入图片描述

三、容器命令

有了镜像才能创建容器,这是我们创建容器的根本前提。

3.1 新建并启动一个容器

docker可以使用run根据镜像来创建具有指定特性的容器:

docker run [option] IMAGE [COMMAND][ARG...]

其实,我们完全可以在终端输入docker run --help,查看该指令的详细信息。

  • -i:以交互模式运行容器,通常与下面的-t配合使用;
  • -t:为容器重新分配一个伪输入终端;
  • -it:启动交互式容器(前台有伪终端,等待交互);

我们输入命令docker images,可以看出本地有一个ubuntu16.04的ubuntu镜像。

在这里插入图片描述
需要注意的是:上面都是在ubuntu20.04系统上运行的,所以指令前面显示的是liang@liang,即计算机liang上面的用户liang在操作。如果我们使用docker run -it ubunt:16.04 /bin/bash后,计算机名和用户名就变成了root@0ff79c4b31d3,需要留意的是@后面的这串数字0ff79c4b31d3就是是我们后面对该容器进行操作的容器ID,这个容器ID是系统随即定义的。在终端我们就可以使用一些Linux命令交互式地操作这个docker容器了。

在这里插入图片描述

另外,如果想从ubuntu16.04容器中退出,可以在终端输入exit,这样我们就退出到liang@liang的系统中了。

在这里插入图片描述

  • --name=容器的新名字:为容器指定一个名称;

为了说明--name这个选项的具体含义,我们首先应用上面的指令docker run -it ubunt:16.04 /bin/bash创建两个容器。使用指令docker ps -a显示系统中创建的docker容器,如下图所示有两个容器。

在这里插入图片描述
这两个容器的NAMES如上图红框中所示,他们是在创建的时候随即起的。如果我们想创建指定名字liang_new的容器,就需要使用--name=容器的新名字,在终端输入指令:

docker run -it --name='liang_new' ubunt:16.04 /bin/bash

这个时候,就在docker容器列表中生成一个名为liang_new的容器:

在这里插入图片描述

3.2 列出容器列表

docker ps [Option]

对于Option选项,的具体含义,我们可以使用docker ps --help查看,这里只罗列常用的几个选项命令:

  • (1)不加选项,直接输入docker ps,则只显示启动的容器。如下图所示,只有liang_new容器启动(STATUS参数为Up):

在这里插入图片描述这个时候,如果输入docker ps,则只会显示容器liang_new

在这里插入图片描述

  • (2)-a:列出当前所有正在运行的容器和历史上运行过的docker容器信息:

输入docker ps -a

在这里插入图片描述

  • (3)-l:显示最近创建的容器:

输入docker ps -l,则从所有创建的docker容器中显示最新创建的一个:

在这里插入图片描述

  • (4)-n:显示最近n个创建的容器:

输入docker ps -n 2,则根据时间的先后,显示最新创建的两个docker容器:

在这里插入图片描述

  • (5)-q:静默模式,只显示容器ID:

输入docker ps -aq则只显示创建的docker容器ID:

在这里插入图片描述
需要注意的是,-q需要与-a配合使用,不然不会输出结果。

3.3 容器的常规操作

1、退出容器:

  • (1)exit:用该指令退出容器,容器会自动停止:
    如下图所示,使用exit命令退出容器liang_new后,使用docker ps -a列出所有镜像,容器liang_new的状态就变成了Exited (0) 7 seconds ago,表示已经关闭了容器。

在这里插入图片描述

  • (2)ctrl+p+q:用该指令退出容器,容器不会停止。
    如下图所示,使用该命令退出容器liang_new,使用命令docker ps -a显示所有容器,容器liang_new的状态为Up,说明使用ctrl+p+q命令退出容器,并不会停止容器。

注意在按住ctrl命令后,要先按p,然后再按q,才能退出。

在这里插入图片描述

2、启动已停止运行的容器:

容器处于停止运行时,其STATUS标志为Exited (0) 多长时间之前

在这里插入图片描述
通过启动容器命令:

docker start 容器ID或容器NAME

可以启动已经停止的容器,比如输入:

docker start liang_new

则容器liang_newSTATUS由原来的Exited (0)变为Up 3 seconds,则表示该容器已被启动。

在这里插入图片描述
3、进入容器:

docker attach 容器ID或容器名

该命令是进入容器终端,比如下图

在这里插入图片描述

4、重启容器:

docker restart 容器ID或容器名

5、停止容器:

docker stop 容器ID或容器名

6、强制停止容器:

docker kill 容器ID或容器名

7、删除已停止的容器:

docker rm 容器ID或容器名

注意,上面这个命令是删除停止的容器,如果我们删除正在运行的容器,则会出现下面的错误,表示不能删除:

在这里插入图片描述
错误提示指出,我们可以通过两个方式删除运行的容器:

  • (1)首先停止容器(使用命令docker stop 容器ID或者名字),然后在执行docker rm liang_new
  • (2)也可以使用带选项-f的删除容器命令docker rm -f liang_new

8、一次性删除多个容器:

删除所有容器:docker rm -f $(docker ps -a -q)docker ps -a -q | xargs docker rm

3.4 容器的实际操作的一些重要概念及指令

3.4.1 Docker后台运行模式(守护式运行模式)

通常在Docker容器的实际应用中,我们通常希望docker的服务是在后台运行的,我们可以使用-d指定容器的后台运行模式:

docker run -d --name='自定义的docker容器名' docker镜像

下面以加载redis6.0.8镜像为后台容器为例,代码为:

docker run -d --name='my-redis' redis:6.0.8

运行后,就创建了一个后台docker容器my-redis

在这里插入图片描述

3.4.2 监控Docker后台日志

docker logs 容器ID或者容器名字

比如监控上面创建的后台运行的容器my-redis,输入如下的指令:

docker logs my-redis

在这里插入图片描述

3.4.3 查看容器内运行的进程

docker top 容器ID或容器名

3.4.4 查看容器内部细节

docker inspect 容器ID或容器名

这个命令在docker高级应用中经常被用到。

3.4.5 进入正在运行的容器并以命令行交互

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入(实际应用中推荐第二种):

  • (1)docker attach

以正在运行的容器my-redis为例,使用下面的命令进入,由下图可以看出在退出容器的时候,容器由原来的运行状态转变为关闭状态。

docker attach my-redis

在这里插入图片描述

  • (2)docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。以正在运行的my-redis后台容器为例子,输入如下指令以交互式进入容器:
docker exec -it my-redis /bin/bash

如下图所示进入容器后,输入exit命令,退出容器后,使用docker ps查看容器状态,容器还是处于启动状态。

在这里插入图片描述

3.4.6 从容器内拷贝文件到主机上

指令格式:

docker cp 容器ID或容器名:容器内路径 目的主机路径

在这里插入图片描述
这个指令对于我这种初学者,有很多坑需要踩,这里先给出指令格式,具体的应用后续深入学习。其实,下面的导入导出容器更加适合于docker容器的备份与保存。

3.4.7 导入导出容器

1、导出容器:如果要导出本地某个容器,可以使用命令:

docker export 容器ID或者容器名 > 自定义名字.tar

export导出容器的内容留作为一个.tar归档文件,默认存储在当前目录下,也可以指定存储目录。下面的例子将容器ubuntu-new导出到本地的/home/tmp(需要建立文件夹)下,并且需要输入sudo chmod -R 777 tmp/命令修改该文件夹的权限。导出ubuntu容器到本地目录/home/tmp下的代码为:

docker export ubuntu-new > /home/tmp/ubuntu-new.tar

在这里插入图片描述
这样就将容器ubuntu-new导出到本地的/home/tmp文件夹下了。

在这里插入图片描述
解压后,就是一个ubuntu系统:

在这里插入图片描述
2、导入容器快照

cat 文件名.tar | docker import - 镜像用户(自定义)/镜像名(自定义):镜像版本号(自定义)

下面以上面导出的ubuntu-new.tar为容器快照导入docker中。首先使用命令docker rm -f $(docker ps -a -q)删除docker中的所有容器,这样容器中就没有容器了。下面使用下面命令导入ubuntu-new.tar为容器快照:

cat /home/tmp/ubuntu-new.tar | docker import - liang/ubuntu-new:1.0

在这里插入图片描述
由上图可以看出,导入的并不是docker容器,而是docker镜像。

附录A:从面向对象、镜像容器角度理解Docker

1、从对象角度理解Docker

容器就是镜像创建的运行实例。容器为镜像提供了一个标准化的隔离运行环境,我们可以随意启动、开始、停止、删除每个容器,而不影响其他容器的运行。Docker利用容器独立运行多个应用,应用服务运行在容器内部,因此容器就像一个虚拟运行环境一样。

2、从镜像角度理解Docker

如果我们已经能够熟练应用Docker的常用命令后,我们就可以深刻理解到容器其实就是一个简易版的Linux系统,它包括:root用户权限、进行空间、用户空间和网络空间等,以及运行在容器上的应用程序等。这也就是为什么在学习Docker之前,一定要学习Linux系统的原因。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值