我使用 Ubuntu 16.04 xenial 作为基础镜像创建了自定义 docker 镜像,并在其上安装了 JDK-1.8 和 MY-SQL 层。以下是我的 Dockerfile 创建图像的示例快照。
# Use 0.9.19 as this is the last tag that uses Ubuntu 16.04 xenial
FROM phusion/baseimage:0.9.19
# Set correct environment variables.
ENV HOME /root
# Use baseimage-docker's init system.
CMD ["/sbin/my_init"]
# Maintained by Abhi
MAINTAINER Abhishek <abhi@gmail.com>
# Set the locale. Default locale causes some Perl regexes to fail.
# http://jaredmarkell.com/docker-and-locales/
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
ENV MYSQL_PWD pass123admin
# Fix warning "debconf: delaying package configuration, since apt-utils is not installed " during build.
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
# The base Ubuntu images don't come with sudo, so Add sudo
RUN apt-get update && apt-get install -y sudo
# Install JDK 8
RUN echo "deb http://debian.opennms.org/ stable main" >> /etc/apt/sources.list \
&& curl -sS http://debian.opennms.org/OPENNMS-GPG-KEY | apt-key add - \
&& apt-get update -y \
&& echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections \
&& apt-get install oracle-java8-installer -y
## Install all software available via apt-get
RUN echo "mysql-server mysql-server/root_password password $MYSQL_PWD" | debconf-set-selections \
&& echo "mysql-server mysql-server/root_password_again password $MYSQL_PWD" | debconf-set-selections \
&& apt-get update -y && apt-get install -y \
mysql-server
对于构建映像和创建容器,一切都按预期工作。
但是每当我尝试删除使用此映像创建的 Docker-Container 时。它不会删除其中的 MY-SQL 层。
我使用$ docker rm mycontainer mycontainer命令删除使用上图创建的容器。
但是当我使用上面的图像重新创建容器时(也使用--force-recreate选项),我能够在 MySql 数据库中看到我以前的数据。这意味着$ docker rm不能完全移除带有底层的容器。
有没有办法完全删除 docker-container,包括它的 MySQL 或 JDK 底层?
提前致谢。