• 手动构建镜像


    本节内容:

    • 创建docker镜像的方法
    • 手动构建镜像

    一、创建docker镜像的方法

    • 使用"docker commit"命令
    • 使用"docker build"命令+"Dockerfile"文件

    不推荐使用docker commit命令,而应该使用更灵活、更强大的dockerfile来构建docker镜像。

    本篇文章先介绍docker commit来构建镜像。

    二、手动构建镜像

    一般来说,我们并不是真正从0开始构建镜像,而是基于一个已经存在的镜像,比如centos,然后进行一些安装和配置,构建自己新的镜像。

    【示例】:手动构建Nginx镜像。

    [root@node1 ~]# docker pull centos
    [root@node1 ~]# docker run -it --name mynginx centos 
    [root@eadfe0c0903d /]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    [root@eadfe0c0903d /]# yum install nginx -y

    安装完成后,我们需要将nginx程序设置为前台运行模式,这样容器启动后nginx进程会一直在前台运行而不会退出。因为如果启动容器时的进程退出,容器也就结束了。

    [root@eadfe0c0903d /]# vi /etc/nginx/nginx.conf
    daemon off;

    [root@eadfe0c0903d /]# exit
    exit

    基于上面的容器制作一个镜像:

    [root@node1 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                NAMES
    eadfe0c0903d        centos              "/bin/bash"              12 minutes ago      Exited (0) 2 minutes ago                        mynginx
    [root@node1 ~]# docker commit -m "nginx test mirror" eadfe0c0903d jkzhao/mynginx:v1

    基于这个镜像启动容器:

    [root@node1 ~]# docker images
    REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
    jkzhao/mynginx                          v1                  bdf7d4fda6fb        4 minutes ago       381.6 MB
    docker.io/centos                        latest              328edcd84f1b        2 weeks ago         192.5 MB
    registry.docker-cn.com/library/centos   latest              328edcd84f1b        2 weeks ago         192.5 MB
    docker.io/nginx                         latest              b8efb18f159b        3 weeks ago         107.5 MB
    [root@node1 ~]# docker run -d -p 82:80 jkzhao/mynginx:v1 nginx

    【注意】:

    1. 必须加tag v1,否则会去仓库中找latest标签的镜像;
    2. 最后 nginx 是命令,容器启动时运行的命令,我这里是yum安装,不是yum安装的要写绝对路径。

  • 相关阅读:
    设计模式:解释器模式???
    设计模式:访问者模式(Visitor)
    设计模式:享元模式(Flyweight)
    NHibernate
    设计模式:中介者模式(Mediator)
    设计模式:职责链模式(Chain Of Responsibility)
    反射
    设计模式:命令模式(Command)
    设计模式:桥连模式(Bridge)
    设计模式:组合模式(Composite)
  • 原文地址:https://www.cnblogs.com/zhaojiankai/p/7753470.html
Copyright © 2020-2023  润新知