docker如何制作自己的镜像

docker如何制作自己的镜像,第1张

准备一个用来制作镜像容器。这里我们使用 centos 安装 apache 的容器。容器的制作方法如下

*** 作步骤如下:

语法如下:

示例如下:

使用 docker build 创建镜像时,需要使用 Dockerfile 文件自动化制作镜像。 Dockerfile 的执行过程,很像源码编译时 /configure 后产生的 Makefile 。

这里将镜像发布到 hubdockercom ,docker的官方仓库。

由于 Docker 编译需要依赖于 Docker Daemon ,所以只能在 64 位的 Linux 环境下先安装 Docker 程序,再从 Github 上克隆 Docker 的代码进行编译。
在 Docker 的目录下执行 make 命令将默认执行 Makefile 中 make binary 指令进行编译。

default: binary

all: build
$(DOCKER_RUN_DOCKER) hack/makesh

binary: build
$(DOCKER_RUN_DOCKER) hack/makesh binary

cross: build
$(DOCKER_RUN_DOCKER) hack/makesh binary cross
从以上的 Makefile 可以看出,执行 make、make binary、make all 或 make cross 都可以得到可运行的 Docker 程序。
在 Mac OS 环境下使用 brew 的命令安装 Docker ,只能得到一个 docker client 的二进制程序,如果以 daemon 的方式运行,会得到 ‘This is a client-only binary - running the Docker daemon is not supported’ 的错误提示信息。
方法 1
使用 VirtualBox 或者 VMWare Workstation 安装一个 Linux 的虚拟机。宿主机使用 等方案使网络“正常”访问各种“服务”,虚拟机网卡使用 NAT 模式。在 Linux 虚拟机内使用 make 进行编译 Docker 不会有任何网络问题。只是编译速度受限于 等网络解决方案,有可能等待时间很长。
方法 2
Docker 每次发布新版本,都会在 docker-dev 的镜像仓库发布一个新的标签,这个镜像仓库包含了编译 Docker 镜像所依赖的所有环境,只需替换 Docker 代码目录下的 Dockerfile 即可实现编译 Docker 。

FROM dockercn/docker/docker-dev:v120
VOLUME /var/lib/docker
WORKDIR /go/src/githubcom/docker/docker
ENV DOCKER_BUILDTAGS apparmor selinux
ENTRYPOINT [“hack/dind”]
COPY /go/src/githubcom/docker/docker
Dockerfile 中只保留必要的步骤就可以实现编译了。
方法 3
对 Docker 代码中的 Docker 进行彻底的改造,用国内的各种镜像替换其中不能在“正常”网络条件下访问的镜像,使得代码能够快速编译通过。

FROM dockercn/docker/ubuntu:14041
MAINTAINER Meaglith Ma <genedna@gmailcom> (@genedna)

RUN echo "deb >

目前来看,Docker至少有以下应用场景:

1)测试:Docker很适合用于测试发布,将Docker封装后可以直接提供给测试人员进行运行,不再需要测试人员与运维、开发进行配合,进行环境搭建与部署。

2)测试数据分离:在测试中,经常由于测试场景变换,需要修改依赖的数据库数据或者清空变动memcache、Redis中的缓存数据。Docker相较于传统的虚拟机,更轻量与方便。可以很容易的将这些数据分离到不同的镜像中,根据不同需要随时进行切换。

3)开发:开发人员共同使用同一个Docker镜像,同时修改的源代码都被挂载到本地磁盘。不再因为环境的不同而造成的不同程序行为而伤透脑筋,同时新人到岗时也能迅速建立开发、编译环境。

4)PaaS云服务:Docker可以支持命令行封装与编程,通过自动加载与服务自发现,可以很方便的将封装于Docker镜像中的服务扩展成云服务。类似像Doc转换预览这样的服务封装于镜像中,根据业务请求的情况随时增加和减少容器的运行数量,随需应变。

具体到Docker技术在测试领域的应用,可以体现在:

1)快速搭建兼容性测试环境

从Docker的镜像与容器技术特点可以预见,当被测应用要求在各类Web服务器、中间件、数据库的组合环境中得到充分验证时,可以快速地利用基础Docker镜像创建各类容器,装载相应的技术组件并快速启动运行,测试人员省去了大量花在测试环境搭建上的时间。

2)快速搭建复杂分布式测试环境

Docker的轻量虚拟化特点决定了它可以在一台机器上(甚至是测试人员的一台笔记本电脑上)轻松搭建出成百上千个分布式节点的容器环境,从而模拟以前需要耗费大量时间和机器资源才能搭建出来的分布式复杂测试环境。

3)持续集成

Docker可以快速创建和撤销容器,在持续集成的环境中,可以频繁和快速地进行部署和验证工作。

还能。ocker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows *** 作系统的机器上,也可以实现虚拟化,在编译之后还能看到原有文件,在image里,image包含了docker源码编译所需的所有文件。

Docker 中的PHP容器安装扩展的方式有
1、通过pecl方式安装
2、通过php 容器中自带的几个特殊命令来安装,这些特殊命令可以在Dockerfile中的RUN命令中进行使用。

docker-php-source extract | delete
参数说明:

案例:

命令格式:
docker-php-ext-install “源码包目录名”

注意点:

案例:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/dianzi/13269496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-04
下一篇 2023-07-04

发表评论

登录后才能评论

评论列表(0条)

保存