如何制作Docker镜像:

您可以采用Dockerfile方式在本地环境中构建Docker镜像:

创建Dockerfile:

$ mkdir project
$ cd project
$ touch Dockerfile

编写Dockerfile:

以MySQL为例,参照Dockerhub 提供的官方Dockerfile,转到github查看详情>>

#选择基础操作系统及版本
FROM debian:stretch-slim

#执行命令修改镜像,用安装库或程序,以及配置程序。执行完一条RUN指令后,Docker引擎会在当前镜像上创建一个新的镜像层,后面会在新的镜像层上执行执行指令
RUN groupadd -r mysql && useradd -r -g mysql mysql

RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*

#设置环境变量

ENV GOSU_VERSION 1.7
RUN set -x \
    && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
    && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
    && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
    && export GNUPGHOME="$(mktemp -d)" \
    && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
    && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
    && gpgconf --kill all \
    && rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc \
    && chmod +x /usr/local/bin/gosu \
    && gosu nobody true \
    && apt-get purge -y --auto-remove ca-certificates wget

RUN mkdir /docker-entrypoint-initdb.d

RUN apt-get update && apt-get install -y --no-install-recommends \
    perl \ && rm -rf /var/lib/apt/lists/*

RUN set -ex; \
    key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \
    export GNUPGHOME="$(mktemp -d)"; \
    gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
    gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \
    gpgconf --kill all; \
    rm -rf "$GNUPGHOME"; \
    apt-key list > /dev/null

ENV MYSQL_MAJOR 8.0
ENV MYSQL_VERSION 8.0.18-1debian9

RUN echo "deb http://repo.mysql.com/apt/debian/ stretch mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list

RUN { \
        echo mysql-community-server mysql-community-server/data-dir select ''; \
        echo mysql-community-server mysql-community-server/root-pass password ''; \
        echo mysql-community-server mysql-community-server/re-root-pass password ''; \
        echo mysql-community-server mysql-community-server/remove-test-db select false; \
    } | debconf-set-selections \
    && apt-get update && apt-get install -y mysql-community-client="${MYSQL_VERSION}" mysql-community-server-core="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* \
    && rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
    && chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
    && chmod 777 /var/run/mysqld

#设置卷
VOLUME /var/lib/mysql

COPY config/ /etc/mysql/
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
#设置启动命令
ENTRYPOINT ["docker-entrypoint.sh"]

#对外暴露端口
EXPOSE 3306 33060
#设置启动参数
CMD ["mysqld"]

构建镜像

保存好Dockerfile后,请执行docker build在本地构建镜像:

例如:docker build -t="{仓库名称}/{镜像名称}:v1" .

说明:
    -t 设置添加 tag,指定新的镜像的用户信息;
    “.” 表示当前目录(Dockerfile 所在的目录),也可以替换为具体的 Dockerfile 的路径;

上传镜像

镜像创建成功,您需要将镜像上传CRS的镜像仓库中:

通过页面上传:

先执行docker save命令将镜像保存为TAR格式的本地文件(CRS支持TAR和TAR.GZ格式的镜像文件),然后通过浏览器访问CRS控制台,在页面中手动添加TAR或TAR.GZ文件:

保存镜像为TAR格式的文件:docker save -o  要保存的文件名称.tar  要保存的镜像
压缩镜像并保存为TAR.GZ格式的文件:docker save 要压缩的镜像  | gzip > 要保存的文件名称.tar.gz 
导入本地TAR格式文件:docker load < 导入的文件名.tar
导入本地TAR.GZ格式文件:gunzip -c 导入的文件名.tar.gz | docker load

通过客户端上传:

如果通过客户端上传镜像,需要执行
docker tag  
该命令为镜像打上标签(如果在构建时已打完标签,可跳过该命令)

然后执行
docker push
该命令将镜像推送到指定的仓库

详细请参考操作指南-客户端上传镜像章节。