上云无忧 > 文档中心 > 百度智能云容器镜像服务 CCR 如何构建Docker镜像
容器镜像服务 CCR
百度智能云容器镜像服务 CCR 如何构建Docker镜像

文档简介:
DockerHub已经为广大开发者提供了大量优秀的的可用镜像,详情可查看DockerHub 官网。 由于实际场景的多样性,并非所有应用都能在DockerHub找到对应的镜像来使用。您可以通过以下教程学习如何构建个性化Docker镜像。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

DockerHub已经为广大开发者提供了大量优秀的的可用镜像,详情可查看DockerHub 官网。

由于实际场景的多样性,并非所有应用都能在DockerHub找到对应的镜像来使用。您可以通过以下教程学习如何构建个性化Docker镜像。

Docker生成镜像目前有两种方式:

  • 通过Dockerfile自动构建镜像;
  • 通过对已有容器执行Commit命令打包生成镜像。

Dockerfile自动编译生成

下面以Dockerhub官方提供的WordPress为例,可转到 github 查看详情

相关的Dockfile源码如下:

FROM php:5.6-apache
        
        # install the PHP extensions we need
        RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev && rm -rf /var/lib/apt/lists/* \
            && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
            && docker-php-ext-install gd mysqli opcache
        
        # set recommended PHP.ini settings
        # see https://secure.php.net/manual/en/opcache.installation.php
        RUN { \
                echo 'opcache.memory_consumption=128'; \
                echo 'opcache.interned_strings_buffer=8'; \
                echo 'opcache.max_accelerated_files=4000'; \
                echo 'opcache.revalidate_freq=2'; \
                echo 'opcache.fast_shutdown=1'; \
                echo 'opcache.enable_cli=1'; \
            } > /usr/local/etc/php/conf.d/opcache-recommended.ini
        
        RUN a2enmod rewrite expires
        
        VOLUME /var/www/html
        
        ENV WORDPRESS_VERSION 4.6.1
        ENV WORDPRESS_SHA1 027e065d30a64720624a7404a1820e6c6fff1202
        
        RUN set -x \
            && curl -o wordpress.tar.gz -fSL "https://wordpress.org/wordpress-${WORDPRESS_VERSION}.tar.gz" \
            && echo "$WORDPRESS_SHA1 *wordpress.tar.gz" | sha1sum -c - \
        # upstream tarballs include ./wordpress/ so this gives us /usr/src/wordpress
            && tar -xzf wordpress.tar.gz -C /usr/src/ \
            && rm wordpress.tar.gz \
            && chown -R www-data:www-data /usr/src/wordpress
        
        COPY docker-entrypoint.sh /usr/local/bin/
        RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
        
        # ENTRYPOINT resets CMD
        ENTRYPOINT ["docker-entrypoint.sh"]
        CMD ["apache2-foreground"]

上述Dockerfile文件中的描述如何完成WordPress应用所需基础环境构建。

在终端创建一个文件夹来保存该Dockerfile文件,并通过 docker build 命令来构建镜像。

[root@instance-hlf45x1g-1 worldpress]# docker build ./
    Sending build context to Docker daemon 3.072 kB
    Step 1 : FROM php:5.6-apache
    Trying to pull repository docker.io/library/php ... 
    5.6-apache: Pulling from docker.io/library/php
    386a066cd84a: Pull complete 
    269e95c6053a: Pull complete 
    ......

通过 docker images 命令即可查看到构建完成的镜像。

[root@instance-hlf45x1g-1 worldpress]# docker images
    REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
    worldpress            latest              9f0b470b5ddb        13 minutes ago      420 MB
    docker.io/php         5.6-apache          eb8333e24502        7 days ago          389.7 MB

使用Dockerfile来构建镜像有以下建议:

  • 尽量选择Docker官方提供基础镜像作为基线。
  • Dockerfile前几行的指令应尽量选择一般性、通用性的指令完成相关依赖软件的安装及操作,从而有效利用缓存。
  • 只安装必须的软件包,减小镜像大小。
  • 多条 RUN 命令使用'\'连接,有利于理解且方便维护。
  • 通过 -t 标记构建镜像,有利于管理新创建的镜像。
  • 清晰的注释,提高可读性。
  • 完成构建后,请先进行本地启动验证其功能性。

执行Commit实现打包生成镜像

通过Dockerfile可以快速构建镜像,而通过commit为如何将一个已经存在的容器镜像化提供了解决方案。

通过commit构建镜像操作如下:

1.运行并进入基于基础镜像的容器内。

[root@instance-hlf45x1g-1 ~]# docker run -i -t centos

2.安装需要的软件,并添加配置。


[root@c4f1basa4w76 /]# yum update && yum install  openssh-server
        Loaded plugins: fastestmirror, ovl
        base                                             | 3.6 kB  00:00:00     
        extras                                           | 3.4 kB  00:00:00     
        updates                                          | 3.4 kB  00:00:00     
        (1/4): base/7/x86_64/group_gz                    | 155 kB  00:00:00     
        (2/4): extras/7/x86_64/primary_db                | 166 kB  00:00:00     
        (3/4): base/7/x86_64/primary_db                  | 5.3 MB  00:00:00     
        (4/4): updates/7/x86_64/primary_db 
        ......
        ......
        ......
        Dependency Installed:
        fipscheck.x86_64 0:1.4.1-5.el7     fipscheck-lib.x86_64 0:1.4.1-5.el7            
  openssh.x86_64 0:6.6.1p1-25.el7_2  tcp_wrappers-libs.x86_64 0:7.6-77.el7


3.配置完成后打开新终端保存该镜像。

[root@instance-hlf45x1g-1 ~]# docker ps
        CONTAINER ID    IMAGE       COMMAND       CREATED          STATUS        PORTS       NAMES
        c4f1basa4w76   centos     "/bin/bash"   13 minutes ago   Up 13 minutes            fashion_surl
    [root@instance-hlf45x1g-1 ~]# docker commit c4f1basa4w76 my_centos:1.0      
        sha256:65325ffd2af9d574afca917a8ce81cf8a710e6d1067ee611a87087e1aa88e4a4
    [root@instance-hlf45x1g-1 ~]# docker images
        REPOSITORY      TAG       IMAGE ID            CREATED             SIZE
        my_centos       1.0     65325ffd2af9        16 seconds ago      307.8 MB
相似文档
  • 百度智能云提供了DockerHub镜像加速器,以助您快速拉取DockerHub镜像。镜像加速器地址如下所示,需要在百度云云服务器中进行配置。本文将为您介绍DockerHub镜像加速器的配置和使用。 docker软件源地址:https://mirror.baidubce.com
  • 控制台界面上传chart: 云平台左侧列表选择“容器镜像服务CCR”,进入容器镜像服务,点击左侧导航“镜像列表”,点击Helm Charts列。点击“上传”按钮。在弹出的上传Chart文件弹窗里,选择相应的Chart文件,如“mychart.tgz”。点击“确认”按钮。
  • 自动触发: 在CCR控制台中,点击左侧导航栏的镜像列表,进入镜像列表页面。在镜像列表中选择一个镜像。点击镜像名称,进入镜像详情页面。 选择一个版本,点击版本条目后的“安全扫描”按钮,跳转至安全扫描页面,并自动触发扫描。
  • 主子账号命名空间权限说明: 命名空间的有读写和只读两种权限,进行docker命令行操作时,需要进行命名空间授权: 拥有读写权限的账号,可以管理命名空间和空间的镜像,也可以给其他子账号进行授权,docker可以push和pull镜像。 只读权限的账号可以看到该命名空间和镜像,docker可以拉取镜像。
  • 在使用容器镜像服务企业版之前,您需要创建企业版实例,用来托管和分发您的云原生制品。 前提条件: 注册百度智能云账号并完成实名认证。 已开通容器镜像服务企业版所依赖的云产品BOS,用于存储您的镜像数据。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部