一、下载镜像

a、以daocloud为mirror下载Nginx镜像

配置daocloud为mirror,下载Nginx镜像:(daocloud官网登陆后,发现镜像里找到Nginx镜像

下载Nginx镜像:

[root@localhost Desktop]# docker pull daocloud.io/library/nginx:1.13.0-alpine
1.13.0-alpine: Pulling from library/nginx
b2388ca7fa65: Pull complete
7947be538089: Pull complete
d16f692df913: Pull complete
0dbd6ee41762: Pull complete
Digest: sha256:5c36f962c506c379bd63884976489c9c5e700c1496a6e8ea13dc404b1d258f76
Status: Downloaded newer image for daocloud.io/library/nginx:1.13.0-alpine
[root@localhost Desktop]#

b、查看所有已下载的镜像

[root@localhost Desktop]# docker images
REPOSITORY                             TAG                      IMAGE ID              CREATED          SIZE
daocloud.io/library/nginx       1.13.0-alpine           f00ab1b3ac6d         6 months ago      15.5MB
[root@localhost Desktop]#

c、下载的docker在本地的位置:/var/lib/docker/

d、docker启动nginx:

[root@localhost docker]# docker run --name webserver -d -p 80:80 nginx:1.13.0-alpine
92d1de9fb008b7efc7d73390fa8b62ef1a1e45a2564e93b481dfb3ff5d68b7b8
[root@localhost docker]#

验证启动结果:

  

查看container(启动镜像(容器)):

[root@localhost docker]# docker ps
CONTAINER ID         IMAGE                            COMMAND                  CREATED              STATUS                    PORTS                                NAMES
92d1de9fb008      nginx:1.13.0-alpine      "nginx -g 'daemon ..."        2 minutes ago          Up 2 minutes          0.0.0.0:80->80/tcp                webserver
[root@localhost docker]#

e、如果要更改容器启动的Nginx欢迎页,可以执行docker exec 命令进入容器,修改其内容。

[root@localhost docker]# docker exec -it webserver bash

oci runtime error: exec failed: container_linux.go:265: starting container process caused "exec: \"bash\": executable file not found in $PATH"

[root@localhost docker]#

报错了,原因是bash找不到,bash路径是在/bin/sh下,所以我们加上bash的路径:

[root@localhost /]# docker exec -it webserver /bin/sh
/ # echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
/ # exit
[root@localhost /]#

刷新页面:

二、基于镜像定制自己的镜像

a、使用 Dockerfile 定制镜像(参考地址

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

还以之前定制 nginx 镜像为例,这次我们使用 Dockerfile 来定制。

在一个空白目录中,建立一个文本文件,并命名为 Dockerfile:(Dockerfile 全路径 /usr/local/mynginx/Dockerfile)

[root@localhost local]# mkdir mynginx
[root@localhost local]# cd mynginx/
[root@localhost mynginx]# touch Dockerfile
[root@localhost mynginx]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 28 10:14 Dockerfile
[root@localhost mynginx]# vi Dockerfile

Dockerfile编辑内容:

FROM nginx:1.13.0-alpine
RUN echo '<h1>Hello, Docker! dockerfile</h1>' > /usr/share/nginx/html/index.html

FROM: FROM 就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。

RUN:指令是用来执行命令行命令的。

b、构建镜像

[root@localhost mynginx]# docker build -t nginx:v12036 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nginx:1.13.0-alpine
---> f00ab1b3ac6d
Step 2/2 : RUN echo '<h1>Hello, Docker! dockerfile</h1>' > /usr/share/nginx/html/index.html
---> Running in 6249d27a5db9
---> bc1dc66316f7
Removing intermediate container 6249d27a5db9
Successfully built bc1dc66316f7
Successfully tagged nginx:v12036
[root@localhost mynginx]#

c、查看镜像

[root@localhost mynginx]# docker images
REPOSITORY                              TAG                  IMAGE ID               CREATED              SIZE
       nginx                                   v12036              bc1dc66316f7        44 seconds ago      15.5MB
daocloud.io/library/nginx         1.13.0-alpine        f00ab1b3ac6d         6 months ago        15.5MB
       nginx                                1.13.0-alpine        f00ab1b3ac6d         6 months ago        15.5MB
[root@localhost mynginx]#

TAG为v12036 的是基于nginx  1.13.0-alpine 构建的自定义的镜像

e、验证自定义的镜像

[root@localhost mynginx]# docker run --name nginxv12306 -d -p 8081:80 nginx:v12036
docker: Error response from daemon: Conflict. The container name "/nginxv12306" is already in use by container "917dbc7d5110bb63d4dbdc5855996c24cc92ec950f88d4f799ac647f2f213b3e". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
[root@localhost mynginx]#

容器(nginxv12306)已经在启动,此时换个容器名或删除此容器:

[root@localhost mynginx]# docker rm -f nginxv12306
nginxv12306
[root@localhost mynginx]#

d、启动docker,绑定8081端口:

[root@localhost mynginx]# docker run --name nginxv12036 -d -p 8081:80 nginx:v12036
cda0e3bd719315da07466e79df076ee486b23a4ef7849918739c5e06ed7fa287
[root@localhost mynginx]#

e、访问地址:http://192.168.118.128:8081

三、参考

镜像构建上下文:Context

git repo构建

Docker-docker制作镜像的更多相关文章

  1. Docker如何制作镜像-Dockerfile的使用

    1:什么是Dockerfile Dockerfile是一个文本文档,可以通过docker build 命令构建成一个镜像. 我们可以在Dockerfile中定义一系列的命令,构建出我们想要的镜像. 想 ...

  2. docker commit 制作镜像

    docker commit -m="commit jdk" --author="gutianlangyu" ae56f6cad215 gutianlangyu/ ...

  3. 利用docker进行基础镜像制作

    前言 最近想通过Javaee来开发博客,但是不想因为环境配置问题总是耗时间配置相关配置,所以萌生出用docker镜像来搭建web的系统环境,也是作为docker学习实践的笔记. docker hub注 ...

  4. centos7下安装docker(6镜像总结)

    学了很长时间的镜像了,从镜像的分层,缓存的特性,到制作镜像:通过docker commint和docker build创建,再到制作dockerfile以及dockerfile中常用的参数FROM,M ...

  5. Docker系列06—基于容器制作镜像并上传到Docker Registry

    本文收录在容器技术学习系列文章总目录 1.制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 本篇主要详细讲解基于容器制作镜像:基于dockerfile 制 ...

  6. docker制作镜像

    使用Dockerfile脚本创建jdk1.8镜像 新建jdk目录:(-p表示需要父目录,不然就会出错) mkdir -p /usr/local/dockerjdk1. 将jdk的压缩文件复制到上面的路 ...

  7. Docker学习笔记之二:制作镜像并PUSH

    Pull 如果是Public的(docker官方仓库和加速器) 直接 docker pull ubuntu:16.04 即可 若是私有的 首先登陆 docker login 仓库Host 之后 doc ...

  8. Docker学习以及镜像制作流程

    一.何为Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  9. Docker commit 制作weblogic镜像

    第一:前提条件 1.本机必须已经安装了docker 容器 2.pull 一个基础的镜像  如图:rastasheep/ubuntu-sshd 第二:利用docker commit  命令 将容器的状态 ...

  10. docker制作镜像步骤

    一.查看宿主机下是否有符合需求的docker镜像 操作命令如下: [root@server4 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZ ...

随机推荐

  1. iOS: NSObject中执行Selector的相关方法

    本文转载至 http://www.mgenware.com/blog/?p=463 1. 对当前Run Loop中Selector Sources的取消 NSObject中的performSelect ...

  2. golang 之 channel

    channel的机制是先进先出 无缓冲的channel: 如果你给channel赋值了,那么必须要读取它的值,不然就会造成阻塞. chreadandwrite :=make(chan int) cho ...

  3. HDU4417 (Super Mario)

    题目链接:传送门 题目大意:一个大小为 n 的数组,m组询问,每组询问[x,y]内<=v的数的数量. 题目思路:主席树(注意询问时数组下标越界问题) #include <iostream& ...

  4. SSH电力项目一 搭建Hibernate框架

    Hibernate所需要的基本文件: ElectText.java ElecText.hbm.xml hibernate.cfg.xml 第一步:创建测试表Elec_Text: create tabl ...

  5. SSM框架---搭建

    SSM框架简介 SSM框架,是spring + spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统. Spr ...

  6. Vue-cli 安装使用和理解

    Vue 的 官方文档 提到 点开这个链接,跟着文档一步步直到: $ npm install -g vue-cli $ vue init webpack my-project $ cd my-proje ...

  7. Packet for query is too large (1166 > 1024). You can change this value

    转载: MySQL max_allowed_packet 设置过小导致记录写入失败 mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会受max_allowed_pack ...

  8. Oracle的启动与关闭

    启动数据库的前提条件: 环境变量定义好($ORACLE_HOME,$ORACLE_SID,$PATH) 能密码文件认证或OS认证(确保能登入sys) 有正确的参数文件(启动数据库需要查找参数文件,默认 ...

  9. Javascript 香港身份证号校验

    <!DOCTYPE html> <html> <head> <title>香港身份证校验码计算</title> </head> ...

  10. Spark源码分析 – Checkpoint

    CP的步骤 1. 首先如果RDD需要CP, 调用RDD.checkpoint()来mark 注释说了, 这个需要在Job被执行前被mark, 原因后面看, 并且最好选择persist这个RDD, 否则 ...