docker镜像构建

docker镜像构建,第1张

基本的构建命令为: docker build -t name:tag -f Dockerfile

-t : 表示构建出来的镜像名称

-f : 表示构建使用的dockerfile文件名称

: 表示构建使用当前路径作为上下文(contex),如果你是在根目录 / 下面构建,不建议使用 (不建议使用根路径作为上下文),因为根路径下面有虚拟文件系统,如 /proc 之类的,构建的时候会报找不到文件的错误。

镜像构建流程为首先将指定的上下文(contextpath)路径下的文件打包,发送到服务端。服务端再将收到的文件解压,然后以解压后的路径作为上下文,进行镜像构建。

docker构建命令中如果没有以 -f 指定Dockerfile,则以上下文中的Dockerfile文件作为构建文件;如果通过 -f 指定了Dockerfile文件路径及名称,则在构建上下文中寻找指定的文件。

docker build的时候,如果某一层无法使用上一次的构建缓存,则后续层均无法使用,故若大多数层均未改变,建议将未改动的层放在前面。如 RUN apt get install -y tmux 命令,如果tmux版本有变化,则无法继续使用构建缓存,建议将该语句放到后面。

参考: >

如果母机的网络环境是需要配置代理才能够访问互联网的话,那安装docker后,去拉取镜像大概率会失败。

类似如下的错误:

母机通过代理访问外网时,一般在命令行中通过 export 来设置代理

而 docker拉取镜像是通过 docker daemon 服务完成,docker daemon 服务是在另一个进程中,不会读取当前shell 命令行的代理,所以 docker pull 会失败。

官方文档

具体 *** 作如下:

tips: 如果文件已经存在,可直接修改文件内容,添加相关代理设置

如果有不需要代理的地址,可添加 NO_PROXY 配置:

多个 NO_PROXY 变量的值用逗号分隔,而且可以使用通配符( ),极端情况下,如果 NO_PROXY= ,那么所有请求都将不通过代理服务器

docker 镜像由 docker daemon 管理,所以不能用修改 shell 环境变量的方法使用代理服务,而是从 systemd 角度设置环境变量

1、 >

在使用Docker的过程中,我们除了从Docker Hub上下载已经做好的镜像,很多时候需要我们自己制作镜像。下面想在这个文章中说明一下镜像的制作方法。

制作镜像的方式主要有两种:

通过docker commit 制作镜像

通过docker build 制作镜像

这两种方式都是通过改进已有的镜像来达到自己的目的。制作基础镜像,会在另外一篇文章“从零开始制作基础镜像”中介绍。

docker commit

docker commit 是往版本控制系统里提交一次变更。使用这种方式制作镜像,本质上是运行一个基础镜像,然后在基础镜像上进行软件安装和修改。最后再将改动提交到版本系统中。

选择基础镜像

基础镜像的选择要结合自己的需求。可以选择已有的应用镜像来改造,也可以选择Ubuntu,Debian,OpenSuse这类基础系统镜像

我们以ubuntu为例子来说明

步骤1:运行ubuntu 镜像

docker run -i -t ubuntu /bin/bash

步骤2:安装软件并修改软件配置, 比如:安装apache2

apt-get -yqq update

apt-get -y install apache2

安装完成后,对apache2进行配置和修改

步骤3:退出docker并保存镜像

使用“exit”命令退出容器

运行docker comit 命令, 进行保存

docker commit 61412230ae46 own-apache2

docker commit 命令参数说明

命令格式

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS:

-a, --author= 提交的镜像作者

-c, --change=[] Apply Dockerfile instruction to the created image, 没用过

-m, --message= 提交时的说明文字

-p, --pause=true 在commit时,将container 暂停

CONTAINER:

可以使用container 的名字或者ID

REPOSITORY

指定镜像仓库,上述例子中,指定的是本地存储

可以指定远程镜像仓库,如docker hub。也可自建仓库来存放image

TAG:

镜像TAG

docker build

使用docker build创建镜像需要编写Dockerfile

步骤:

编写自己的Dcokerfile

运行docker build 命令打包镜像

仍然以apache打包为例子。以下是Dockerfile的例子

FROM ubuntu:latest

MAINTAINER sky

#Add 163 mirror for apt

ADD sourceslist /etc/apt/sourceslistADD bashrc /root/bashrcENV DEBIAN_FRONTEND noninteractive# PackagesRUN rm -rf /var/lib/apt/listsRUN apt-get update -q --fix-missingRUN apt-get -y upgrade#ubuntu >

以上就是关于docker镜像构建全部的内容,包括:docker镜像构建、docker如何选择指定的linux镜像发行版本、Docker 拉取镜像失败处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9506210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存