学习Docker镜像相关知识,看这一篇就够了

Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。

  • 拉取镜像
  • 搜索镜像
  • 删除镜像

拉取镜像

拉取ubuntu指定版本: 格式: docker pull name:tag

  1. $ docker pull ubuntu:18.04

不指定版本:
如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。

  1. $ 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镜像
  1. $ docker pull hub.c.163.com/public/ubuntu:18.04

全局更换docker仓库源:

  1. sudo vim /etc/docker/daemon.json
  2. {
  3. "registry-mirrors":["http://hub-mirror.c.163.com"]
  4. }

关于网络的一些问题:

1.虚拟机连接外网不稳定,重启网卡命令:

  1. $ sudo /etc/init.d/networking force-reload

2.拉某些镜像时报错:
tcp: lookupproduction.cloudflare.docker.com: Temporary failure in name resolution

  1. $ vim /etc/resolv.conf
  2. nameserver 8.8.8.8

查看镜像信息:
使用docker images或docker image ls命令可以列出本地主机上已有镜像的基本信息。

  1. $ docker images

在列出信息中,可以看到几个字段信息:

  • 来自于哪个仓库,比如ubuntu表示ubuntu系列的基础镜像;
  • 镜像的标签信息,比如18.04、latest表示不同的版本信息。标签只是标记,并不能标识镜像内容;
  • 镜像的ID(唯一标识镜像),如果两个镜像的ID相同,说明它们实际上指向了同一个镜像,只是具有不同标签名称而已;
  • 创建时间,说明镜像最后的更新时间;
  • 镜像大小。

搜索镜像

docker search [option] keyword

  1. $ docker search centos

一种是类似于centos这样的基础镜像,也称为根镜像。这些镜像是由Docker公司创建、验证、支持、提供,这样的镜像往往使用单个单词作为名字;

另一种类型的镜像,比如ansible/centos7-ansible镜像,是由Docker用户ansible创建并维护的,带有用户名称为前缀,表明是某用户下的某仓库。可以通过用户名称前缀“user_name/镜像名”来指定使用某个用户提供的镜像

  1. $ docker search nginx

搜索官方提供的带nginx关键字的镜像:

  1. $ docker search --filter=is-official=true ngin

搜索所有star数超过100的nginx镜像:

  1. $ docker search --filter=stars=100 nginx

删除镜像

  • 使用标签删除镜像
  • 使用docker rmi或docker image rm命令可以删除镜像

命令格式:
docker rmi IMAGE[IMAGE…],其中IMAGE可以为标签或ID。

  • 使用标签删除镜像
  1. $ docker rmi ubuntu:list

  • 使用镜像ID来删除镜像
  1. $ 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文件

  1. docker run -it ubuntu:18.04/bin/bash
  2. touch test

记住容器的ID为:998f8185b364

提交:
docker commit -m=”提交的描述信息” -a=”作者” 容器id 要创建的目标镜像名:[标签名]

  1. docker commit -m 'add a test file'-a 'liyh'998f8185b364myubuntu

docker image 查看新创建的镜像

2.基于本地模板导入

  1. $ cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import- ubuntu:18.04

3.基于Dockerfile创建

Dockerfile是一个文本文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。

载入和导出镜像

1.导出镜像

  1. $ docker save -o ubuntu_18.04.tar ubuntu:18.04

2.载入镜像

  1. $ docker load -i ubuntu_18.04.tar

上传镜像

用户在Docker Hub网站注册后可以上传自制的镜像。
例如,用户user上传本地的test:latest镜像,可以先添加新的标签user/test:latest,然后用docker[image] push命令上传镜像.

给本地镜像打tag:

  1. $ docker tag test:latest user/test:latest

push到DockerHub:

  1. $ docker push user/test:latest

多docker学习,就在码小课编程:maxiaoke.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值