Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。
- 拉取镜像
- 搜索镜像
- 删除镜像
拉取镜像
拉取ubuntu指定版本: 格式: docker pull name:tag
$ docker pull ubuntu:18.04
不指定版本:
如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。
$ docker pull ubuntu
docker pull时,那些hash串是什么?
镜像文件一般由若干层(layer)组成,6c953ac5d795这样的串是层的唯一id
docker pull的完整命令?
- docker pull ubuntu:18.04命令相当于:
docker pull registry.hub.docker.com/ubuntu:18.04
即从默认的注册服务器Docker Hub Registry中的ubuntu仓库来下载标记为18.04的镜像 - 如果从非官方的仓库下载,则需要在仓库名称前指定完整的仓库地址。例如从网易蜂巢的镜像源来下载ubuntu:18.04镜像
$ docker pull hub.c.163.com/public/ubuntu:18.04
全局更换docker仓库源:
sudo vim /etc/docker/daemon.json
{
"registry-mirrors":
["http://hub-mirror.c.163.com"]
}
关于网络的一些问题:
1.虚拟机连接外网不稳定,重启网卡命令:
$ sudo /etc/init.d/networking force-reload
2.拉某些镜像时报错:
tcp: lookupproduction.cloudflare.docker.com: Temporary failure in name resolution
$ vim /etc/resolv.conf
nameserver 8.8.8.8
查看镜像信息:
使用docker images或docker image ls命令可以列出本地主机上已有镜像的基本信息。
$ docker images
在列出信息中,可以看到几个字段信息:
- 来自于哪个仓库,比如ubuntu表示ubuntu系列的基础镜像;
- 镜像的标签信息,比如18.04、latest表示不同的版本信息。标签只是标记,并不能标识镜像内容;
- 镜像的ID(唯一标识镜像),如果两个镜像的ID相同,说明它们实际上指向了同一个镜像,只是具有不同标签名称而已;
- 创建时间,说明镜像最后的更新时间;
- 镜像大小。
搜索镜像
docker search [option] keyword
$ docker search centos
一种是类似于centos这样的基础镜像,也称为根镜像。这些镜像是由Docker公司创建、验证、支持、提供,这样的镜像往往使用单个单词作为名字;
另一种类型的镜像,比如ansible/centos7-ansible镜像,是由Docker用户ansible创建并维护的,带有用户名称为前缀,表明是某用户下的某仓库。可以通过用户名称前缀“user_name/镜像名”来指定使用某个用户提供的镜像
$ docker search nginx
搜索官方提供的带nginx关键字的镜像:
$ docker search --filter=is-official=true ngin
搜索所有star数超过100的nginx镜像:
$ docker search --filter=stars=100 nginx
删除镜像
- 使用标签删除镜像
- 使用docker rmi或docker image rm命令可以删除镜像
命令格式:
docker rmi IMAGE[IMAGE…],其中IMAGE可以为标签或ID。
- 使用标签删除镜像
$ docker rmi ubuntu:list
- 使用镜像ID来删除镜像
$ docker rmi 329ed837d508
创建镜像
1.基于已有容器创建
命令格式为docker [container] commit [OPTIONS] CONTAINER [REPOSITORY [:TAG]]
主要选项包括:
- -a, —author=””:作者信息;
- -c, —change=[]:提交的时候执行Dockerfile指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等;
- -m, —message=””:提交消息;
- -p, —pause=true:提交时暂停容器运行。
启动一个镜像,并新建一个test文件
docker run -it ubuntu:18.04
/bin/bash
touch test
记住容器的ID为:998f8185b364
提交:
docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名]
docker commit -m 'add a test file'
-a 'liyh'
998f8185b364myubuntu
docker image 查看新创建的镜像
2.基于本地模板导入
$ cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import
- ubuntu:18.04
3.基于Dockerfile创建
Dockerfile是一个文本文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。
载入和导出镜像
1.导出镜像
$ docker save -o ubuntu_18.04.tar ubuntu:18.04
2.载入镜像
$ docker load -i ubuntu_18.04.tar
上传镜像
用户在Docker Hub网站注册后可以上传自制的镜像。
例如,用户user上传本地的test:latest镜像,可以先添加新的标签user/test:latest,然后用docker[image] push命令上传镜像.
给本地镜像打tag:
$ docker tag test:latest user/test:latest
push到DockerHub:
$ docker push user/test:latest
更
多docker学习,就在码小课编程:maxiaoke.com