Docker命令-镜像仓库

Docker login/logout 命令


docker logindocker logout 命令用于管理 Docker 客户端与 Docker 注册表的身份验证。通过 docker login 命令,用户可以登录到 Docker 注册表,访问和推送镜像;通过 docker logout 命令,用户可以退出登录。

  • docker login : 登陆到 一个Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

  • docker logout : 登出一个D ocker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub


docker login

docker login 命令用于登录到 Docker 注册表。

默认情况下,它登录到 Docker Hub,但也可以登录到其他 Docker 注册表。

语法

docker login [OPTIONS] [SERVER]

  • SERVER: Docker 注册表的服务器地址(默认是 Docker Hub)。

  • -u, --username: 登录用户名。

  • -p, --password: 登录密码(不推荐在命令行使用)。

  • --password-stdin: 从标准输入读取密码。

使用示例

1、登录到 Docker Hub

docker login

提示输入 Docker Hub 用户名和密码。

2、登录到 Docker Hub(指定用户名)

docker login --username myusername

3、提示输入 Docker Hub 密码。

从标准输入读取密码:

echo "mypassword" | docker login --username myusername --password-stdin

从标准输入读取密码,避免在命令行明文输入密码。

4、登录到自定义注册表

docker login myregistry.com

提示输入自定义注册表的用户名和密码。


docker logout

docker logout 命令用于退出当前登录的 Docker 注册表。默认情况下,它退出 Docker Hub,但也可以指定其他注册表。

语法

docker logout [SERVER]

  • SERVER: Docker 注册表的服务器地址(默认是 Docker Hub)。

使用示例

1、退出 Docker Hub

docker logout

退出当前用户在 Docker Hub 的登录状态。

2、退出自定义注册表

docker logout myregistry.com

退出当前用户在 myregistry.com 的登录状态。


操作实例

1、登录 Docker Hub

docker login

输出:

1
2
3
Username: myusername
Password:
Login Succeeded

2、从标准输入读取密码登录 Docker Hub

echo "mypassword" | docker login --username myusername --password-stdin

输出:

Login Succeeded

3、登录自定义注册表

docker login myregistry.com

输出:

1
2
3
Username: myusername
Password:
Login Succeeded

4、退出 Docker Hub

docker logout

输出:

Removing login credentials for [https://index.docker.io/v1/](https://index.docker.io/v1/)

5、退出自定义注册表

docker logout myregistry.com

输出:

Removing login credentials for myregistry.com

注意事项

  • 不推荐在命令行直接使用 -p 选项输入密码,因为这样密码会以明文形式暴露在命令历史记录中。

  • 使用 --password-stdin 可以避免密码明文暴露,增强安全性。

  • 确保在公共或共享环境中执行 docker logout,以防止其他用户访问您的账户。

Docker pull 命令


docker pull 命令用于从 Docker 注册表(例如 Docker Hub)中拉取(下载)镜像到本地。

docker pull 命令允许用户获取所需的镜像以便在本地运行容器。

语法

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

  • NAME: 镜像名称,通常包含注册表地址(如 docker.io/library/ubuntu)。

  • TAG(可选): 镜像标签,默认为 latest

  • DIGEST(可选): 镜像的 SHA256 摘要。

常用选项:

  • --all-tags, -a: 下载指定镜像的所有标签。

  • --disable-content-trust: 跳过镜像签名验证。

1、拉取默认标签(latest)的镜像

docker pull ubuntu

这会从 Docker Hub 拉取名为 ubuntu 的镜像,标签默认为 latest。

2、拉取特定标签的镜像

docker pull ubuntu:20.04

这会从 Docker Hub 拉取名为 ubuntu 的镜像,标签为 20.04。

3、拉取特定摘要的镜像

docker pull ubuntu@sha256:12345abcdef...

这会拉取具有特定 SHA256 摘要的 ubuntu 镜像。

4、拉取所有标签的镜像

docker pull --all-tags ubuntu

这会拉取 ubuntu 镜像的所有可用标签。

5、从自定义注册表拉取镜像

docker pull myregistry.com/myrepo/myimage:mytag

这会从 myregistry.com 注册表中拉取 myrepo 仓库中的 myimage 镜像,标签为 mytag。

实例

1、拉取 Ubuntu 镜像:

docker pull ubuntu

输出示例:

1
2
3
4
5
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:12345abcdef...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

2、拉取指定标签的 Ubuntu 镜像

docker pull ubuntu:20.04

输出示例:

1
2
3
4
20.04: Pulling from library/ubuntu
Digest: sha256:67890abcdef...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

注意事项

  • 默认标签为 latest,但最好显式指定标签以避免拉取意外的版本。

  • 确保有足够的磁盘空间来存储拉取的镜像。

  • 在生产环境中,建议使用镜像的摘要(digest)以确保镜像的唯一性和一致性。

docker pull 命令是获取 Docker 镜像的基本工具,通过指定镜像名称、标签或摘要,可以从 Docker 注册表中下载所需的镜像。

Docker push 命令


docker push 命令用于将本地构建的 Docker 镜像推送(上传)到 Docker 注册表(如 Docker Hub 或私有注册表)。这使得镜像可以在其他系统或环境中共享和使用。

语法

docker push [OPTIONS] NAME[:TAG]

  • NAME: 镜像名称,通常包含注册表地址(如 docker.io/myrepo/myimage)。

  • TAG(可选): 镜像标签,默认为 latest

OPTIONS 说明:

  • –disable-content-trust :忽略镜像的校验,默认开启

1、推送默认标签(latest)的镜像

docker push myrepo/myimage

这会将本地的 myrepo/myimage:latest 镜像推送到 Docker Hub。

2、推送特定标签的镜像

docker push myrepo/myimage:1.0

这会将本地的 myrepo/myimage:1.0 镜像推送到 Docker Hub。

3、推送到自定义注册表

docker push myregistry.com/myrepo/myimage:mytag

这会将本地的 myrepo/myimage:mytag 镜像推送到 myregistry.com 注册表。

实例

推送镜像到 Docker Hub

1、登录到 Docker Hub

docker login

2、构建一个镜像

docker build -t myrepo/myimage:1.0 .

3、推送镜像到 Docker Hub

docker push myrepo/myimage:1.0

输出示例:

1
2
3
The push refers to repository [docker.io/myrepo/myimage]
d1e017099d17: Pushed
1.0: digest: sha256:12345abcdef... size: 1234

推送镜像到自定义注册表

1、登录到自定义注册表

docker login myregistry.com

2、构建一个镜像

docker build -t myregistry.com/myrepo/myimage:mytag .

3、推送镜像到自定义注册表

docker push myregistry.com/myrepo/myimage:mytag

输出示例:

1
2
3
The push refers to repository [myregistry.com/myrepo/myimage]
d1e017099d17: Pushed
mytag: digest: sha256:67890abcdef... size: 5678

注意事项

  • 确保已登录到目标注册表(使用 docker login 命令)。

  • 在推送镜像之前,确保镜像标签正确,并符合注册表的命名规范。

  • 推送操作需要网络连接,镜像大小和网络速度会影响推送时间。

  • 对于私有注册表,确保拥有相应的访问权限和配置信息。

docker push 命令是将本地 Docker 镜像推送到注册表的关键工具,通过使用这个命令,用户可以方便地共享、部署和管理 Docker 镜像。在使用时,确保正确登录和标签设置,以保证镜像能够正确推送到目标注册表。

Docker search 命令


docker search 命令用于在 Docker Hub 或其他注册表中搜索镜像。

docker search 命令帮助用户查找和获取所需的镜像,并提供了对搜索结果进行过滤和排序的功能。

语法

docker search [OPTIONS] TERM

  • TERM: 要搜索的关键字。

常用选项:

  • –automated :只列出 automated build类型的镜像;

  • –no-trunc :显示完整的镜像描述;

  • -f <过滤条件>:列出收藏数不小于指定值的镜像。

1、搜索镜像

docker search ubuntu

这会在 Docker Hub 中搜索包含关键字 ubuntu 的镜像。

2、限制返回的搜索结果数量

docker search --limit 5 ubuntu

这会在 Docker Hub 中搜索包含关键字 ubuntu 的镜像,并只返回前 5 个结果。

3、过滤搜索结果

docker search --filter stars=50 ubuntu

这会在 Docker Hub 中搜索包含关键字 ubuntu 的镜像,并只返回 stars 数不低于 50 的镜像。

4、不截断输出

docker search --no-trunc ubuntu

这会在 Docker Hub 中搜索包含关键字 ubuntu 的镜像,并显示完整的镜像描述。

5、自定义格式输出

docker search --format "{{.Name}}: {{.StarCount}} stars" ubuntu

这会在 Docker Hub 中搜索包含关键字 ubuntu 的镜像,并以指定格式显示镜像名称和 star 数。

实例

1、搜索 Ubuntu 镜像

docker search ubuntu输出示例:

1
2
3
4
NAME                             DESCRIPTION                                     STARS   OFFICIAL  AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 10000 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 4000 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 2000 [OK]

参数说明:

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

2、限制返回结果数量

docker search --limit 3 ubuntu输出示例:

1
2
3
4
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 10000 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 4000 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 2000 [OK]

3、过滤搜索结果

docker search --filter stars=1000 ubuntu

输出示例:

1
2
3
4
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 10000 [OK]
dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 4000 [OK]
rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 2000 [OK]

4、自定义格式输出

docker search --format "{{.Name}}: {{.StarCount}} stars" ubuntu

输出示例:

1
2
3
ubuntu: 10000 stars
dorowu/ubuntu-desktop-lxde-vnc: 4000 stars
rastasheep/ubuntu-sshd: 2000 stars

注意事项

  • 搜索结果可能包含大量镜像,可以使用过滤和排序选项来精简结果。

  • 确保使用准确的关键字以获取相关结果。

  • docker search 默认搜索 Docker Hub,若需要搜索其他注册表,需相应配置 Docker 客户端。

docker search 命令是查找 Docker 镜像的重要工具,通过指定关键字和选项,用户可以高效地在 Docker 注册表中搜索和获取所需的镜像。这个命令适用于各种场景,包括查找特定功能的镜像、获取高评分镜像以及自定义结果显示。