docker镜像常用操作

Docker镜像管理

docker镜像包含启动容器需要的文件系统和数据。镜像主要用于创建并启动容器。

docker默认镜像在国外,国内下载很慢,我们可以通过配置国内镜像进行加速。

配置docker镜像加速

很多时候由于国内访问国外镜像站速度比较慢,可以尝试使用镜像加速器
可以地址有
ustc: https://docker.mirrors.ustc.edu.cn
aliyun: https://w57n2hu2.mirror.aliyuncs.com

修改docker配置文件/etc/docker/daemon.json添加内容如下

1
2
3
4
5
vim /etc/docker/daemon.json

{
"registry-mirros": ["https://w57n2hu2.mirror.aliyuncs.com"]
}

修改成功后重启docker服务

1
2
3
4
重载配置文件
systemctl daemon-reload
重启docker
systemctl restart docker

登录docker私有镜像仓库

1
2
3
4
5
6
#docker login  仓库地址
#比如登录阿里云私有仓库,然后按提示输入用户名密码即可登录
docker login registry.cn-hangzhou.aliyuncs.com

#或者直接将用户名密码放在命令中
docker login --username="$user" -p $passwd registry.cn-hangzhou.aliyuncs.com

docker验证配置,解决x509 insecure registry验证配置

1
2
3
4
5
6
7
8
9
vim /etc/docker/daemon.json
{
#添加如下这行
"insecure-registries" : ["192.168.1.100:5000"]
}

#重启docker服务生效
systemctl restart docker

docker镜像操作通过docker命令管理,下面介绍一下与镜像相关的命令

搜索镜像

docker search

注意下面两个是有区别的。第一个搜索指定版本的nginx,第二个不带版本号,搜索默认版本latest

1
2
docker search nginx:1.16.1
docker search nginx

返回结果

  • NAME 仓库名称
  • DESCRIPTION 镜像描述
  • STARS 关注度,反应一个镜像的欢迎程度
  • OFFICIAL 是否官方
  • AUTOMATED 自动构建,表示该镜像由Docker Hub自动构建流程创建

OPTION选项说明

  • -s 列出关注数大于指定值的镜像
  • –no-trunc 显示完整的镜像描述DESCRIPTION

下载镜像

docker pull

从docker仓库下载镜像到本地。基本语法

docker pull 仓库地址/镜像空间/镜像名称:tag号

1
2
3
docker pull nginx
#127.0.0.1:5000表示私有仓库地址
docker pull 127.0.0.1:5000/test/centos:7

镜像默认存储位置/var/lib/docker

  • 区分同一仓库下的不同镜像,docker提供了标签(TAG)功能,这种机制使得同一仓库可以存储多个镜像
  • 拉取镜像,可以使用仓库名加上一个冒号和标签(REPOSITORY:TAG)来指定仓库中某一具体的镜像,如果未指定镜像的标签,将下载lastest最新版本

查看本地镜像

docker images

返回结果参数解析

  • REPOSITORY 镜像所在仓库的名称
  • TAG 镜像标签(一般是版本号)
  • IMAGE ID 镜像ID
  • CREATED 镜像创建时间
  • SIZE 镜像大小

导出本地镜像

docker save

有时候需要备份或者导出一个镜像,这时我们可以通过docker save命令

使用语法

REPOSITORY和TAG为查看本地镜像(docker images)时显示的值

1
2
3
4
5
docker save REPOSITORY:TAG > images.tar.gz
#或者使用-o参数输出
docker save REPOSITORY:TAG -o images.tar.gz
#例:
docker save alpine:3.11 > /tmp/alpine-3.11.tar.gz

将镜像导入本地

docker load

现在我们将上文导出的镜像导入另外一台服务器,怎么导入呢?其实也很简单,将镜像文件上传到新服务器的/tmp目录下,然后导入,导入命令如下。

1
2
3
docker load < /tmp/alpine-3.11.tar.gz
#也可以使用-i参数
docker load -i /tmp/alpine-3.11.tar.gz

删除镜像

docker rmi

1
docker rmi alpine:3.11

需要注意删除镜像时确保镜像没用被容器使用,如果被使用了。需要先删除容器,可以通过命令查看后删除

1
2
3
4
#查看alpine镜像是否被使用
docker ps -a|grep alpine
#删除被使用的容器,CONTAINER ID为容器ID,NAMES为容器名称
docker rm 容器ID/容器名称

给镜像打tag

1
2
3
4
5
6
7
#具体格式
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]


#给nginx版本号为1.16.1的镜像打成nginx_test:1.16.1
docker tag nginx:1.16.1 nginx_test:1.16.1

以上就是dockers镜像的一些常见操作了。包括镜像加速,搜索、下载、查看、导出、导入和删除操作。