Fri*_*izz 25 java mysql linux docker
Docker可以将两个图像组合成一个吗?
像这样:
genericA --
\
---> specificAB
/
genericB --
Run Code Online (Sandbox Code Playgroud)
例如,有一个Java图像和一个MySQL图像.
我想要一个带有Java 和 MySQL 的图像.
不,您只能从一个图像继承.
你可能不希望Java和MySQL在同一个图像中,因为在容器中有一个单独的组件比较惯用,即创建一个单独的MySQL容器并将其链接到Java容器,而不是将它们放在同一个容器中.
但是,如果您确实必须在同一图像中使用它们,请编写一个Dockerfile,其中Java作为基本映像(FROM语句),并在Dockerfile中安装MySQL.您应该可以在很大程度上复制官方MySQL Dockerfile中的语句.
Docker不直接支持这一点,但你可以使用DockerMake(完全披露:我写了它)来管理这种"继承".它使用YAML文件来设置图像的各个部分,然后通过生成适当的Dockerfiles来驱动构建.
以下是构建这个稍微复杂的示例的方法:
--> genericA --
/ \
debian:jessie --> customBase ---> specificAB
\ /
--> genericB --
Run Code Online (Sandbox Code Playgroud)
你会使用这个DockerMake.yml文件:
specificAB:
requires:
- genericA
- genericB
genericA:
requires:
- customBase
build_directory: [some local directory]
build: |
#Dockerfile commands go here, such as
ADD installA.sh
RUN ./installA.sh
genericB:
requires:
- customBase
build: |
#Here are some other commands you could run
RUN apt-get install -y genericB
ENV PATH=$PATH:something
customBase:
FROM: debian:jessie
build: |
RUN apt-get update && apt-get install -y buildessentials
Run Code Online (Sandbox Code Playgroud)
安装docker-makeCLI工具(pip install dockermake)后,您可以specificAB通过运行来构建映像
docker-make specificAB
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9242 次 |
| 最近记录: |