Docker系列(七)构建镜像
文章目录
- 通过commit构建镜像
- 实例
- 使用dockerfile构建镜像
- 实例
构建docker
镜像能够保存我们对容器的的修改,并再次使用。提供了自定义镜像的能力,使得我们能够以软件的形式打包并分发服务及运行环境。
docker
提供了两种构建镜像的方式,通过容器构建,和通过Dockerfile
文件构建:
docker commit
docker bulid
通过commit构建镜像
commit
命令通过容器构建镜像,所以其接收容器的名字作为主要参数:
docker commit [OPTIONS] CONTAINER| REPOSITORY[:TAG]]
- -a:用来指定镜像的作者,通常我们会指定作者的名字以及联系方式。 --author=’’ Author e.g., "John Hannibal Smith hannibal@a-team.com
- -m:用来记录镜像构建的信息。–message=" Commit message
- -p:由于执行commit命令时会将正在执行的容器暂停,-p命令可以不暂停正在执行的容器。 --pause=true Pause container during commit
实例
启动一个交互式容器:
docker run -i -t -p 80 --name commit_test ubuntu /bin/bash
对这个容器做出修改,比如安装nginx
:
apt-get update
apt-get install nginx
安装好之后就可以exit
退出了,之后将其提交为镜像:
docker commit -a "zhiqiangho" -m 'nginx' commit_test zhiqiangho/commit_test1
-a "zhiqiangho"为添加的作者信息,-m 'nginx’为添加镜像的信息。返回的唯一ID就是新生成的镜像的ID
。
之后就可以通过images
命令来查看刚才生成的镜像了:
docker images
接下来运行一下刚刚生成的镜像:
docker run -d --name nginx_web1 zhiqiangho/commit_test1 nginx -g "daemon off;"
这里我们给了一个参数来告诉nginx
以前台的模式来运行,否者运行结束后容器也会停止。可以ps
命令来查看容器的进程:
docker ps
访问容器内部进程:
curl http://127.0.0.1
但是这个时候我们并不能访问容器服务,因为刚刚忘记了指定容器映射的端口
docker run -d --name nginx_web2 -p 80 zhiqiangho/commit_test1 nginx -g "daemon off;"
这样再用映射后的端口来访问:
curl http://127.0.0.1:49155
由于之前将修改的容器保存到了镜像中,我们可以很容易地执行这个镜像,提供同样的服务。
使用dockerfile构建镜像
使用dockerfile
文件构建镜像主要分为两步:
- 创建
dockerfile
文件。 - 使用
$ docker build
命令来构建镜像。
dockerfile
文件实际上就是包含了一系列命令的文本文件。
如下例所示就是一个dockerfile
文件示例:
# First Dockerfile
FROM ubuntu:14.04
MAINTAINER zhiqiangho "zhiqiangho@outlook.com"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
它包含了镜像的基础ubuntu:14.04
,镜像的维护人,以及需要在镜像中需要执行的命令,和暴露的端口。
实例
首先创建一个存放dockerfile
存放的目录:
mkdir -p dockerfile/df_test1
然后进入到这个目录中:
cd docker/file/df_test1
将刚才的内容写入到dockerfile
文件中:
vim Dockerfile
编写完成之后保存并退出。
之后就可以通过build
命令构建镜像:
$ docker build [OPTIONS] PATH |URL| -
- –force-rm=false
- –no-cache=false .
- –pull=false
- -q, -quiet=false
- –rm=true
- -t:指定出构建镜像的名字。–tag=“”
后面的PATH
和URL
都是指dockerfile
文件的路径。
docker build -t="zhiqiangho/df_test1" .
docker
从基础镜像运行一个容器,也就是from
指令指定的镜像名。然后执行指令,对容器做出修改,然后执行类似docker commit
的操作,提交一个新的镜像层,再基于刚提交的镜像运行一个新的容器。然后再执行dockerfile
中的下一条指令,直至所有指令执行完毕。这样我们就能够使用中间层镜像进行调试。
后面一个.
表示当前目录。dockerfile
文件中的命令会被一条一条地执行。构建完成之后可以用docker images
查看构建的新镜像。
接下来就可以运行这个镜像:
docker run -d --name nginx_web3 -p 80 zhiqiangho/df_test1 nginx -g "daemon off;"
同样可以使用curl
命令来验证访问:
Docker系列(七)构建镜像相关推荐
- Docker系列 七. Docker 安装Jenkins
Docker系列 七. Docker 安装Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集 ...
- Docker 从Dockerfile 构建镜像 :build 命令的用法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Dockerfile 创建完成后,可以使用 docker build 命令根据 Dockerfile ...
- Docker使用Dockerfile构建镜像
2019独角兽企业重金招聘Python工程师标准>>> Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条 ...
- Docker系列七安装私人云盘
前言 第三次更新: 后来拥有了一个群晖做为个人云盘,效果也不错,后来就没有继续捣鼓了. 第二次更新: 后来发现nextcloud会有要通过不被信任的域名访问的问题,于是重新修改了一遍. 我要在自己的云 ...
- 【Docker】Dockerfile构建镜像与命令详解
前言 传统方式部署集群,你需要在每台机器搭建环境,配置各种中间件,这样不但效率低下,而且很难保证环境的一致性,而且配置如果有改动,需要挨个机器修改. 有了Docker,上述问题都能解决.但是官方镜像大 ...
- Docker 多阶段构建镜像multi-stage
多阶段构建是一个新特性,需要 Docker 17.05 或更高版本的守护进程和客户端.对于那些努力优化 Dockerfiles 并使其易于阅读和维护的人来说,多阶段构建非常有用. 在之前先来学习术语: ...
- docker:dockerfile构建镜像
目录 一.dockerfile概念 1.dockerfile的原理就是镜像分层 二.docker镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于dockerfile创建 3.1 doc ...
- Docker 系列之 常用镜像
Ubuntu 实战 操作 # 拉取 18.04 版本的 Ubuntu 镜像 docker pull ubuntu:latest# 以交互方式运行并进入 ubuntu 容器环境 docker run - ...
- Docker系列七: 使用Humpback管理工具管理容器(一款UI管理工具)
Humpback 可以帮助企业快速搭建轻量级的 Docker 容器云管理平台,若将你的 Docker 主机接入到 Humpback 平台中,就能够为你带来更快捷稳定的容器操作体验. 功能特点 Web操 ...
- docker commit构建镜像(不推荐)
dcoker commit镜像构建 获取docker镜像 # 下载镜像(默认从docker hub获取) docker pull ubuntu:14.04 搜索镜像 docker search IMA ...
最新文章
- UIColor之【扩展:#FFFFFF -UIColor】
- JS全选功能代码优化
- C++获取指向二维数组的首元素指针
- python接口自动化22-签名(signature)鉴权(authentication)之加密(HEX、MD5、HMAC-SHA256)...
- mongodb更新操作符$unset
- 虚拟化VMware ESXi 6.7服务器安装配置详细步骤图文
- VB 泛型 T 应用
- 数据结构(C语言版 第2版)课后习题答案 严蔚敏 编著
- tkinter-界面化抽签小程序
- 从细节到宏观的seo方案制定
- pdf关键字高亮 java_Java 查找、高亮PDF文本
- Spinner的用法(转)
- Java语言十五讲——第二讲 ClassLoader
- 微软:拿番茄花园开刀与反垄断无关
- 使用谷歌浏览器的speechSynthesis的API,实现语音播报功能
- 725 数模 空气污染问题研究 (15 五一 B)
- 自制wpf年会抽奖小软件
- OpenVINO™场景文字识别与同步与异步推理
- CSS 样式表大全(学习笔记)
- js -- 车牌号对应的归属地js文件