Ubuntu 16.04+、Debian 8+、CentOS 7
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
"bip": "10.10.100.1/24",
"registry-mirrors": ["https://registry.docker-cn.com"],
"live-restore": true
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
Windows 10
在系统右下角托盘 Docker 图标内右键菜单选择 Settings ,打开配置窗口后左侧导航菜单选择 Daemon 。
在 Registry mirrors 一栏中填写加速器地址 https://registry.docker-cn.com ,
之后点击 Apply 保存后 Docker 就会重启并应用配置的镜像地址了。
macOS
在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。
在列表中填写加速器地址 https://registry.docker-cn.com 。
修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。
检查加速器是否生效
在命令行执行 docker info ,如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
https://registry.docker-cn.com/
命令格式为:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号] 。默认地址是 Docker Hub。
仓库名:这里的仓库名是两段式名称,即 <用户名>/<软件名> 。如果不给出用户名,则默认为 library ,也就是官方镜像。
比如:$ docker pull ubuntu:16.04
运行
有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。以ubuntu:16.04 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。
$ docker run -it --rm ubuntu:16.04 /bin/bash
docker run 就是运行容器的命令,这里简要的说明上面用到的参数。
-it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。
--rm :这个参数是说容器退出后随之将其删除。
ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。
/bin/bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell
最后我们通过 exit 退出了这个容器。
要想列出已经下载下来的镜像,可以使用 docker image ls 命令。
列表包含了 仓库名 、 标签 、 镜像 ID 、 创建时间 以及 所占用的空间 。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 735f80812f90 3 weeks ago 83.5MB
B
00285df0df87 5 days ago 342 M
B
镜像体积
你可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 0 83.49MB 83.49MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
虚悬镜像
上面的镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均
为
00285df0df87 5 days ago 342 M
B
由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为
$ docker image ls -f dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
00285df0df87 5 days ago 342 MB
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。$ docker image prune
中间层镜像
默认的 docker image ls 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数$ docker image ls -a
列出部分镜像
#根据仓库名列出镜像
$ docker image ls ubuntu
#列出特定的某个镜像,也就是说指定仓库名和标签
$ docker image ls ubuntu:16.04
#希望看到在mongo:3.2 之后建立的镜像
$ docker image ls -f since=mongo:3.2
#希望看到在mongo:3.2 之前建立的镜像
$ docker image ls -f before=mongo:3.2
#如果镜像构建时定义了 LABEL ,还可以通过 LABEL 来过滤
$ docker image ls -f label=com.example.version=0.1
...
以特定格式显示
#列出镜像结果,并且只包含镜像ID和仓库名
$ docker image ls --format "{{.ID}}: {{.Repository}}"
735f80812f90: ubuntu
00285df0df87:
#以表格等距显示,并且有标题行,和默认一样,不过自己定义列:
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID REPOSITORY TAG
735f80812f90 ubuntu latest
00285df0df87
如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:
$ docker image rm [选项] <镜像1> [<镜像2> ...]
比如我们有这么一些镜像:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 0584b3d2cf6d 3 weeks ago 196.5 MB
redis alpine 501ad78535f0 3 weeks ago 21.03 MB
用 ID、镜像名、摘要删除镜像redis
使用 镜像短 ID 、 镜像长 ID 、 镜像名 删除镜像。
$ docker image rm 501
$ docker image rm redis
#当然,更精确的是使用 镜像摘要 删除镜像。
$ docker image ls --digests
$ docker image rm node@sha256:b4f0e0bdeb578043c1ea6862f0d40cc4afe32a4a582f3be235a3b164
422be228
注:如果观察上面这几个命令的运行输出信息的话,你会注意到删除行为分为两类,一类是Untagged ,另一类是 Deleted 。
当我们删除镜像的时候,首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,所以并非所有的 docker image rm 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。
转载于:https://blog.51cto.com/qiangsh/2162493