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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker 是一个开源的容器化平台,它可以让开发者将应用程序和其依赖项打包成一个容器,使得应用程序在不同的环境中都能够运行。Docker 提供了一种新的方式来构建、部署和运行应用程序,它可以大大降低开发和运维成本,提高应用程序的可移植性和可靠性。 本文将介绍 Docker 的基础知识,包括 Docker 的安装、镜像容器的管理、容器的网络和存储等方面。 ## Docker 的安装 Docker 官方支持多个操作系统,包括 Linux、Windows 和 macOS。在不同的操作系统中,Docker 的安装方式也有所不同。在 Linux 系统中,可以通过以下命令来安装 Docker: ```shell curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh ``` 在 Windows 和 macOS 中,可以下载 Docker Desktop 来安装 Docker。 ## Docker 镜像容器的管理 Docker 镜像是应用程序和其依赖项的打包格式,可以通过 Dockerfile 来定义。Dockerfile 是一个文本文件,其中包含了应用程序的构建规则和依赖项的安装方式。通过 Dockerfile 构建的镜像可以上传到 Docker Hub 或者私有仓库中,其他人可以通过 Docker Hub 或者私有仓库来获取镜像。 创建 Docker 镜像的方式很多,可以通过手动构建、基于现有镜像构建、使用 Docker Compose 等方式来创建镜像。以下是一个基于 Ubuntu 镜像创建 Node.js 应用程序的 Dockerfile: ```dockerfile FROM ubuntu:18.04 RUN apt-get update && apt-get install -y nodejs npm COPY . /app WORKDIR /app RUN npm install EXPOSE 3000 CMD ["npm", "start"] ``` 通过以上 Dockerfile 可以构建出一个包含 Node.js 应用程序的镜像。接下来,我们可以使用如下命令来启动容器: ```shell docker run -p 3000:3000 -d my-node-app ``` 其中,-p 参数指定了容器端口和主机端口的映射关系,-d 参数指定了容器在后台运行。 通过 docker ps 命令可以查看正在运行的容器,通过 docker stop 和 docker start 命令可以停止和启动容器。 ## 容器的网络和存储 Docker 容器之间可以通过网络进行通信,Docker 提供了多种网络模式,包括桥接模式、主机模式、容器模式和覆盖网络模式等。在默认情况下,Docker 容器使用桥接网络模式,可以通过以下命令创建一个自定义的网络: ```shell docker network create my-network ``` 通过 --net 参数可以将容器加入到指定的网络中。例如,通过以下命令创建一个基于自定义网络的容器: ```shell docker run --name my-nginx -p 80:80 --net my-network -d nginx ``` Docker 容器还可以使用本地存储或者云存储来存储数据。Docker 提供了多种存储驱动程序,包括 overlay2、aufs 和 devicemapper 等。通过以下命令可以创建一个本地存储卷: ```shell docker volume create my-volume ``` 通过 -v 参数可以将容器挂载到指定的存储卷上。例如,通过以下命令创建一个基于本地存储卷的容器: ```shell docker run --name my-mysql -v my-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql ``` 以上是 Docker 的基础知识介绍,Docker 还有很多高级功能和应用场景,例如 Docker Compose、Docker Swarm 和 Kubernetes 等。学习 Docker 可以让我们更好地理解容器化技术和云原生应用程序的开发和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值