【docker容器】docker使用笔记-docker镜像

镜像

  • 搜索镜像
docker search IMAGE_NAME

 注:

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

  • 查看当前本机所有镜像
docker images

  注:

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

  • 下载镜像(当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。但我们最好预先下载这个镜像,使用 docker pull 命令来下载它。)
docker pull IMAGE_NAME:tag  

 

  关于tag:没有指定tag则默认使用最新的tag,如上图

 关于域名:使用 docker pull {IMAGE_NAME} 拉取镜像时,有两种情况:

1、IMAGE_NAME 第一个斜杠之前有域名标识

Docker 会将 IMAGE_NAME 识别为带域名的镜像。例如,myregistry.io/space1/image1:latest ,Docker 会去 myregistry.io 指向的服务器请求镜像数据。一个 Docker 镜像分为很多层,如果本地存在该层,则不会再次拉取。

2、IMAGE_NAME 第一个斜杠之前没有域名标识

Docker 会将 IMAGE_NAME 拼接为 docker.io/IMAGE_NAME 请求镜像数据。事实上,$ docker pull docker.io/shaowenchen/images1 与 $ docker pull shaowenchen/images1 同等效果。对于 DockerHub 提供的镜像,国内访问速度较慢,可以通过添加镜像源的方式加速。

  • 删除镜像
docker rmi IMAGE_NAME

  当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1、从已经创建的容器中更新镜像,并且提交这个镜像

2、使用 Dockerfile 指令来创建一个新的镜像

  • 更新镜像

首先需要先将已有镜像作为容器运行。

docker run -t -i IMAGE_NAME:tag /bin/bash

docker run -t -i IMAGE_ID /bin/bash  

 在运行的容器内使用 apt-get update 命令进行更新。 在完成操作之后,输入 exit 命令来退出这个容器。

 

 此时 容器的ID(非镜像ID) 为 cff4280baebd的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。 

docker commit -m="your description" -a="author" container_id IMAGE_NAME:tag

各个参数说明:

  • -m: 提交的描述信息

  • -a: 指定镜像作者

  • container_id:容器ID
  • IMAGE_NAME:tag: 指定要创建的目标镜像名及tag

我们可以使用 docker images 命令来查看我们的新镜像 

 更新的新镜像可以来启动容器,通过docker ps可查询其已作为容器启动。

 

  • 构建镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。Dockerfile如下:

复制代码
#声明基础镜像来源
FROM IMAGE_NAME:tag
#声明镜像拥有者
MAINTAINER author
#RUN后面接容器运行前需要执行的命令,由于Dockerfile文件不能超过127行,因此当命令较多时建议写到脚本中执行。 <命令行命令> 等同于,在终端操作的 shell 命令。
RUN your command
#开机启动命令,此处最后一个命令需要是可在前台持续执行的命令,否则容器后台运行时会因为命令执行完而退出。这一条待确认是否必须。
ENTRYPOINT ping www.aliyun.com
复制代码

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:

复制代码
FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget 
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" 
    && tar -xvf redis.tar.gz
复制代码

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

docker build -t IMAGE_NAME:tag .

参数说明:

  • -t :指定要创建的目标镜像名(注意镜像名称中不能有大写字母)

  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,如下图:

  • 镜像打标签
docker tag IMAGE_ID IMAGE_NAME:tag

参数说明:

  • IMAGE_ID : 镜像ID

  • IMAGE_NAME:tag:新镜像源名(repository name)和新的标签名(tag)

使用 docker images 命令可以看到,镜像多一个标签。

  • 推送镜像到仓库

docker login --username=XXXXX registry.cn-shanghai.aliyuncs.com #执行后输入镜像仓库密码

docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/dtstack123/test:[标签]

docker push registry.cn-shanghai.aliyuncs.com/dtstack123/test:[标签]

参数说明:

  • --username : 输入仓库用户名

  • registry.cn-shanghai.aliyuncs.com:仓库名称

注意:先打tag,再登录仓库,在push到仓库。 

原文地址:https://www.cnblogs.com/chooperman/p/14367437.html