前言:
在深入了解Docker的原理和概念之后,掌握基础命令是非常重要的。本章将重点分享Docker的基础命令,帮助读者熟悉和掌握使用Docker的关键操作。通过学习这些命令,大家将能够在容器世界中创建、管理和交互,从而更好地运用Docker进行软件开发和部署。这些基础命令将为读者打下坚实的基础,为后续的Docker使用和探索打开大门。
正文:
1.基础命令直译
通过在cmd--> docker container --help
直接查看他的命令行;
译本:
命令:
attach 连接到一个正在运行的容器,附加本地标准输入、输出和错误流
commit 从容器的更改创建一个新镜像
cp 在容器和本地文件系统之间复制文件/文件夹
create 创建一个新的容器
diff 检查容器文件系统中文件或目录的变化
exec 在一个正在运行的容器中执行命令
export 导出一个容器的文件系统为tar文件
inspect 显示一个或多个容器的详细信息
kill 终止一个或多个正在运行的容器
logs 获取一个容器的日志
ls 列出容器 # 可以换成ps,ps是早期docker的用法,现在换成了ls
pause 暂停一个或多个容器内的所有进程
port 列出容器的端口映射或者特定容器的映射
prune 删除所有已停止的容器
rename 重命名一个容器
restart 重启一个或多个容器
rm 删除一个或多个容器 #docker container run --rm -it <app> <xxx> 当这个容器退出的时候,会自动删除
run 从一个镜像创建并运行一个新容器 #docker <container> run XXX -->可以不写这个container
start 启动一个或多个已停止的容器
stats 显示一个或多个容器的资源使用统计信息的实时流
stop 停止一个或多个正在运行的容器 #docker <container> stop <container ID> -->这里的id可以用简写,例如只写前面的几位数 ,例如 1abfsfsatt52 -->docker stop 1abf (一样可以停掉)
top 显示一个容器的运行进程
unpause 恢复一个或多个容器内的所有进程
update 更新一个或多个容器的配置
wait 阻塞,直到一个或多个容器停止,然后打印它们的退出码
2.一些命令的讲解:
A.`-a`的问题:
先上图
解释:
"docker container ls"和"docker container ls -a"是Docker命令行中用于列出容器的命令的不同用法。
-
"docker container ls":这个命令用于列出当前正在运行的容器。它只显示正在运行的容器的列表,不包括已停止的容器。默认情况下,它会列出容器的ID、镜像、创建时间、状态等基本信息。
-
"docker container ls -a":这个命令使用了"-a"参数,意为"all",表示列出所有的容器,包括正在运行的容器和已经停止的容器。它会显示所有容器的列表,包括已停止容器的信息。
区别:
- "docker container ls"只显示正在运行的容器,这对于快速查看在主机上正在运行的容器很有用。
- "docker container ls -a"会列出所有的容器,包括已经停止的容器。这对于查看所有容器的历史记录、状态和其他详细信息很有用。
ps :
当你想获取所有容器的信息时,包括已停止的容器,使用"docker container ls -a"。当你只关心正在运行的容器时,使用"docker container ls"。
补:如果想列举出所有容器的名字id,可以用
docker container ls -aq
这样他就能把全部容器给列举出来了!
B.简写container id
解释:
在Docker中,容器ID(Container ID)是一个唯一的标识符,用于区分和引用不同的容器。容器ID是一个64个字符的字符串,通常以前几个字符标识容器。
在某些情况下,可以使用简写的容器ID来代替完整的容器ID。这些情况包括:
-
在命令行中引用容器:如果容器ID足够独特,可以使用其简写形式来执行诸如
docker start <container_id>
或docker stop <container_id>
等命令。 -
查看容器日志:使用
docker logs <container_id>
命令来查看容器的日志。在这种情况下,使用容器ID的简写形式通常足够。 -
和其他容器相关的命令:当需要在容器之间进行交互或执行其他和容器相关的命令时,可以使用容器ID的简写来引用相应的容器。
ps:
当存在多个容器的ID以相同的字符开头时,使用容器ID的简写可能会导致引用错误的容器。为了避免歧义,最好使用足够独特的前缀字符,以确保引用正确的容器。
总之,容器ID的简写在引用容器和查看容器的相关信息时非常方便,尤其是容器ID足够独特且不会引起混淆的情况下。
C.docker的停止和移除 stop/rm
docker stop
命令:
- 停止指定容器:可以使用
docker stop
命令来停止正在运行的容器。例如,docker stop container1
将停止名为"container1"的容器。 - 停止多个容器:通过在命令中提供多个容器的名称或ID,可以同时停止多个容器。例如,
docker stop container1 container2
将停止"container1"和"container2"两个容器。
docker rm
命令:
- 删除已停止的容器:可以使用
docker rm
命令删除已停止的容器。例如,docker rm container1
将删除名为"container1"的停止状态容器。 - 删除正在运行的容器:如果需要删除正在运行的容器,可以在命令中使用
-f
或--force
选项。例如,docker rm -f container1
将强制删除名为"container1"的运行中容器。 - 删除多个容器:通过提供多个容器的名称或ID,可以一次性删除多个容器。例如,
docker rm container1 container2
将同时删除"container1"和"container2"两个容器。
ps:
在执行docker rm
命令时,确保容器已停止,否则将无法删除运行中的容器。如果需要同时停止并删除容器,可以使用docker stop <container_id>
命令来先停止容器,然后再执行docker rm <container_id>
命令。
或者通过强制删除 :
docker container rm <container id> -f
这样也可以直接进行强制删除,不需要停止!
D.'-d' 后台运行模式
在Docker中,-d
选项用于以后台运行模式(detached mode)启动容器。在启动容器时使用-d
选项,容器将在后台运行并且不会阻塞当前终端会话。这意味着可以继续使用终端进行其他操作,而不必等待容器运行完成。
使用-d
选项启动的容器将会在后台以守护进程的形式运行,并将输出日志发送到标准输出流。可以使用docker logs
命令来查看容器的日志。
解释:
下面是一个示例案例,演示如何使用-d
选项以后台运行模式启动一个容器:
假设有一个名为myapp
的镜像。要以后台运行模式启动该镜像的容器,可以运行以下命令:
docker run -d myapp
这将以后台运行模式启动myapp
容器,并返回一个容器的唯一标识符。
通过添加-d
选项,您可以在后台运行容器,而不会看到容器中的输出。如果希望查看容器日志输出,可以使用以下命令:
docker logs <container_id>
将<container_id>
替换为通过docker run
命令获得的容器标识符。这样,就可以轻松地在后台运行容器,同时继续使用终端进行其他操作,如检查和管理其他容器或镜像。
ps:
这里的打印log是一次性的,如果想动态追逐log,可以加 "-f"
docker container logs -f <id>
E:docker exec -it <container_id> 命令
docker exec
命令用于在一个正在运行的容器中执行命令。该命令后跟容器的标识符(或名称),然后是要在容器中运行的命令。
解释:
具体而言,docker exec -it <container_id> sh
命令的含义是:
docker exec
:Docker命令,用于在容器内部执行命令。-it
:选项,表示要以交互模式(interactive mode)和伪终端(pseudo-TTY)的方式执行命令。这使您可以与容器进行交互,如在终端中输入命令。<container_id>
:容器的唯一标识符或名称,用于指定要在其中执行命令的容器。sh
:要在容器中执行的命令。在此示例中,使用的是sh
命令,它是一个常见的Shell程序。
通过运行docker exec -it 44b sh
命令,将进入标识符为44b
的容器的Shell环境。可以在这个Shell中输入命令并与容器进行交互。
这对于需要在运行中的容器中执行命令,如进入容器内部调试、运行特定的程序或查看容器的状态,非常有用。
ps:
必须现有一个正在运行的容器,且容器必须具有Shell(如sh
、bash
等)才能使用docker exec
命令。
F.'docker system prune -f' 命令
快速清除掉所有已经停止/退出运行的容器;
衍生物: 'docker image prune -a ' 快速清除掉所有停止工作的镜像;