Docker Registry (镜像仓库) 常用命令
docker login
-
功能:登录到一个 Docker 镜像仓库,如果没有指定镜像仓库的地址,默认就是官方的 Docker Hub 仓库。
-
语法:
docker login [options] [server]
-
选项:
- -u:登录的用户名。
- -p:登录用户的密码。
-
演示:
建议带选项的时候,不要带 -p 选项,会被别人偷偷看到哦!
可以看到,登录成功之后,就会在 /rooot/.docker/config.json
中保存你的登录信息:
这个 config.json
文件中的这个地址就是你登录的镜像仓库的地址,我们可以尝试使用这个地址来登录一下:
可以看到也是可以成功登录的哈!我们登录镜像仓库有啥用呢?在我们没有登录镜像仓库的时候是可以拉取公共的镜像的,但是不能拉取私有的镜像!只有登录了,才能拉取自己私有的镜像。
如下图是我在 Docker Hub 官网上的一个私有镜像仓库:
如下图:我使用 docker logout
命令退出登录之后,用 docker pull
命令拉取这个镜像是会报错的!
如下图:在我登录我的账号之后,才能成功拉取我的私有镜像仓库中的镜像:
docker logout
-
功能:登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。
-
语法:
docker logout [SERVER]
这个功能,上面就已经演示过了,这里就不再演示啦!
docker pull
-
功能:从镜像仓库中拉取或者更新指定镜像。
-
语法:
docker pull [options] NAME[:TAG | @DIGEST]
-
别名:
docker image pull # docker 对命令进行了分类,这个 pull 命令是属于镜像的命令,所以有个 image 省略也没有关系哈
-
选项:
- -a:拉取所有 tagged 镜像。
- –disable-content-trust:忽略镜像的校验,默认开启。加上这个选项 Docker 会检查镜像的完整性以确保其没有被篡改或损坏。
-
演示1:
如下图:我的
my-busybox
这个镜像仓库里面有很多不同Tag
的镜像,我可以使用docker pull -a
全部将其拉取下来。
如下图:在没有拉取之前,我的本地只有 centos
这一个镜像,在拉取之后,一下子多了好多好多镜像:
- 演示2:
我们拉取一个 nginx
的镜像,然后启动这个镜像,看到 nginx
的首页:
如下图:我们在 Docker Hub 的官网搜索 nginx
然后点击你想要下载的版本,当然你可以使用 NAME:Tag
的方式拉取,这一次我们使用 NAMRE@DIGEST
的方式拉取哈!不过平时用得最多的还是 NAME:Tag
的方式哈!这个 DIGEST
值在哪里呢,当你点进去一个具体的版本就可以看到啦:
现在我们使用 docker 命令来拉取:
docker pull nginx@sha256:b72dad1d013c5e4c4fb817f884aa163287bf147482562f12c56368ca1c2a3705
下面我们执行 docker 命令来运行我们拉取到的 nginx
镜像:
docker run -p 80:80 nginx:1.25.4 # 如果你拉取的 nginx 版本和我的不一样,你需要修改一下版本哦!
运行起来之后,我们就可以在浏览器访问啦!前提是你的 80 端口没有被云服务器本身(宿主机)占用,并且你的云服务器是放行了 80 端口的!
可以看到,我们就使用 docker
成功地搭建了一个 nginx
服务器啦!
docker push
-
功能:将本地的镜像上传到镜像仓库,前提是要登录到镜像仓库哦!
-
语法:
docker push [OPTIONS] NAME[:TAG]
-
参数:
- -a:推送所有的 Tag 镜像。
- –disable-content-trust:忽略镜像的校验,默认开启。
-
演示:
如下图:我的私有镜像仓库
my-busybox
里面是没有任何的镜像的。
如下图:我们在登录之后,直接 dpcker push -a
将所有的 my-busybox
镜像给推送到镜像仓库。
如下图:我们可以看到成功将所有的 my-busybox
镜像推送到了我的仓库,我们在推送的过程,发现有 Layer already exists 这样的提示,这是什么意思呢?其实啊,在 Docker Hub 的官网中,完全相同的镜像是共享的,也就是说完全相同的镜像在 Docker Hub 中只会保存一份!还记得我们在学习 HTTPS 协议中提到的网盘的极速上传的例子嘛,这里也有体现哦!!!!
docker research
-
功能:从 Docker Hub 中查找镜像。
-
语法:
docker search [options] TERM
-
参数:
- –no-trunc :显示完整的镜像描述。
- -f<过滤条件>:例如:
-f stars=10
列出 stars 数不小于 10 的镜像。
-
演示:
如下图:我们在 DOcker Hub 上搜索 nginx 这个镜像,筛选条件是
stars >= 100
,然后是截断描述信息的。因为不截断,看起来很不友好,这里就不展示啦!
可以看到,我们通过 docker search
搜索到的镜像,是没有 Tags
,没有 DIGEST
的,是没有办法直接拉取镜像到本地的!一般情况下,我们还是区官网查找镜像,而不是通过 docker search
来查找镜像。