登录到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。
docker login [options] [server]
选项:
这两个选项是用于在命令行中提前指定登录的账号和密码,即使不提前输入,后续在 login 的中途也要输入。且使用 -p 选项提前输入密码,会导致密码信息存储在 history 中,有安全隐患。
登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。
docker logout
从镜像仓库中拉取或更新指定镜像。 如果是拉取知名镜像,建议进入 Docker Hub 网站浏览相关镜像的命令。
docker pull [options] [name:tag] #或 [name@digest]
选项:
[name@digest] 是通过 digest 来拉取镜像的方法,但实际不推荐使用,因为 tag 能够清晰地显示镜像的版本,而 digest 又长又不够清晰。
将本地的镜像上传到镜像仓库,需要先登录到镜像仓库。如果要上传到自己的镜像仓库,需要到 Docker Hub 上注册一个。且如果是 push 从官方或社区拉取的镜像,还需要使用 docker tag 命令标记别名后才能上传(否则会上传到官方或社区的仓库,但又因为账号没有上传的权限而失败)。
docker push [options] [name:tag]
选项:
从 Docker Hub 查找镜像,因为使用网页浏览的方法更方便,所以不推荐使用。
docker search [options] [name]
用于列出本地镜像。
docker images [options] [repository[:tag]]
选项:
列出本地所有镜像:
docker images
列出本地镜像中为 nginx 的镜像列表:
docker images nginx
用于查看镜像的详细信息。
docker image inspect [image:tag]
如:
docker image inspect nginx:1.23.3
标记本地镜像,将其归入某一仓库,从官方或社区拉取的镜像,需要进行 docker tag 之后才可以更新到自己的镜像仓库中。
docker tag [source_image:tag] [target_image:tag]
docker rmi 用于删除一个镜像。注意,如果一个或多个容器在使用要删除的镜像,需要使用 docker rm
将使用镜像的容器全部删除,再删除镜像,不建议使用 -f
强制删除镜像。
docker rmi [options] [image]
选项:
用于将镜像打包成 .tar
文件保存到当前目录。
docker save -o [file.tar] [image]
也可以写成
docker [image] save -o [file.tar]
选项:
用于将 docker save
打包的镜像导入。
docker load [options]
选项:
用于显示镜像的历史信息。
docker history [options]
选项:
用于删除不使用的镜像。
docker image prune [options]
选项:
用于将 .tar
格式的容器导入。docker import
于 docker load
的区别是,load 是镜像进行归档文件之间的转换,而 import 是容器进行归档文件的转换,import 导出的容器的元数据会全部丢失。
docker import [options] [file.tar]
选项:
创建一个新的容器。注意 docker create
没有 -d
选项。
docker create [options] [image[arg...]]
选项:
-i: 以交互模式运行容器,通常与 -t 同时使用。
-P: 随机端口映射,容器内部端口随机映射到主机的端口。
-p: 指定端口映射,格式为:主机端口:容器端口。
如果不使用 -p 或 -P,容器的网络相当于是与外部隔绝的。
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用。
如果不使用 -i 在终端中输入的字符将不能传输到容器中。
–name=“newname”: 为容器指定一个名称。
如果不指定名字,在 docker ps 命令中打印出来的将是 docker 为我们取的随机名字。
-h “hostname”: 指定容器的 hostname。
-e env=“val”: 向容器设置一个名为 env 值为 val 的环境变量。
–cpuset-cpus=“0-2” or --cpuset-cpus=“0,1,2”: 绑定容器到指定 CPU 运行。
**-m :**设置容器使用内存最大值。
–network=“bridge”: 指定容器的网络连接类型。
–link=[]: 添加链接到另一个容器。
意味着被连接的容器可进行局域网通信,这种连接是单向的。
–volume , -v: 绑定一个卷。
–rm :shell 退出的时候自动删除容器。
创建一个新的容器并运行一个命令。
docker run [options] [image command arg...]
选项:
-d: 后台运行容器,并返回容器 ID。
-i: 以交互模式运行容器,通常与 -t 同时使用。
-P: 随机端口映射,容器内部端口随机映射到主机的端口。
-p: 指定端口映射,格式为:主机端口:容器端口。
如果不使用 -p 或 -P,容器的网络相当于是与外部隔绝的。
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用。
如果不使用 -i 在终端中输入的字符将不能传输到容器中。
–name=“newname”: 为容器指定一个名称。
如果不指定名字,在 docker ps 命令中打印出来的将是 docker 为我们取的随机名字。
-h “hostname”: 指定容器的 hostname。
-e env=“val”: 向容器设置一个名为 env 值为 val 的环境变量。
–cpuset-cpus=“0-2” or --cpuset-cpus=“0,1,2”: 绑定容器到指定 CPU 运行。
**-m :**设置容器使用内存最大值。
–network=“bridge”: 指定容器的网络连接类型。
–link=[]: 添加链接到另一个容器。
意味着被连接的容器可进行局域网通信,这种连接是单向的。
–volume , -v: 绑定一个卷。
–rm :shell 退出的时候自动删除容器。
主要用于打印容器信息等功能。
docker ps [options]
用于查看容器的日志信息。
docker log [options] [container]
选项:
2025-1-30
。用于连接到正在运行中的容器。
docker attach [options] [container]
选项:
在容器中执行命令。如果只使用 -it
选项,则于 docker attach
行为相同。如果 -it
后跟上其他命令,则执行完命令后就回到容器外,而不是 hang 入容器。
docker exec [options] [command [arg...]]
选项:
STDIN
打开。[:group|gid]
。用于启动停止的容器。
docker start [container]
用于停止运行中的容器。注意 docker stop
发送的是 SIGTERM
信号,docker log
会提示容器 gracefully shutting down。
docker stop [options] [container]
选项:
用于重启运行中的容器。
docker restart [options] [container]
选项:
用于强制退出容器。注意 docker kill
发送的是 SIGKILL
信号,docker 会来不及保存或输出任何信号就退出。
docker kill [options] [container]
选项:
用于查看容器中运行的进程信息,支持 ps
命令的选项。
docker top [ps options]
选项:
用于查看容器的资源使用情况,包括 CPU、内存、网络 I/O 等。
docker stats [options] [container...]
选项:
CONTAINER ID 和 NAME 为容器 ID 和名称。
CPU% 和 MEM% 为容器的 CPU 和 内存使用百分比。
MEM USAGE/LIMIT 为容器正在使用的总内存/允许使用的内存总量。
BLCOK I/O 为容器从主机上的块设备读取和写入的数据量。
PIDs 为容器创建的进程和线程数。
用于查看容器的详细信息,如果不指定容器会自动获取。
docker container inspect [options] [container]
选项:
用于显示指定容器的端口映射。
docker port [container]
0.0.0.0
表示 IPv4。
[::]
表示 IPv6。
用于在容器和宿主机之间拷贝文件。
docker cp [container:src_path] [dest_path] #拷贝容器文件到宿主机
docker cp [src_path] [container:dest_path] #拷贝宿主机文件到容器
检查容器里文件结构的更改。
docker diff [container]
从容器创建一个新的镜像。
docker commit [options] [container [repository:tag]]
选项:
用于暂停容器中所有的进程。
docker pause [container]
用于恢复容器中所有暂停的进程。
docker unpause [container]
删除停止的容器。
docker rm [options] [container]
选项:
SIGKILL
信号强制删除一个运行中的容器。删除所有停止的容器:
docker rm $(docker ps -a -p)
用于导出容器内容为 .tar
文件。
docker export [options] [container]
选项:
用于阻塞等待指定运行中的容器停止,并打印出它的退出码。
docker wait [container]
用于重命名容器。
docker rename [container] [new_name]
用于删除所有停止的容器。
docker container prune [options]
选项:
用于更新容器的配置。
docker update [options] [container]
选项:
根据名称过滤得到容器编号:
docker container ls -qf name=xxx
-q 表示只输出容器 ID。
根据状态过滤容器信息:
docker container ls --filter status=running
静默获取全部容器 ID:
docker container ls -aq
-a 表示 all 显示包括不运行的容器,-q 表示只输出容器 ID。
过滤镜像名或 ID 为 xxx 的容器信息:
docker container ls --filter ancestor=xxx
其他:
docker 的命令都可以通过 ``
达到类似于管道的效果,如启动所有容器可以用:
docker run 'docker ps -a'