2016-04-05 7 views
5

में पोस्टग्रेर्स मैं सिस्टम संसाधनों की मात्रा को सीमित करने के लिए एक डॉकर कंटेनर के अंदर पोस्टग्रेस चला रहा हूं। मुझे डेटा को लगातार बनाने के तरीके को समझने में कुछ परेशानी हो रही है। मैं निम्नलिखित लेख पढ़ लिए हैं:डॉकर लगातार डेटा

https://www.andreagrandi.it/2015/02/21/how-to-create-a-docker-image-for-postgresql-and-persist-data/

http://container42.com/2013/12/16/persistent-volumes-with-docker-container-as-volume-pattern/

कौन सा एक डेटा केवल कंटेनर उपयोग करने का सुझाव, और फिर इसे करने के लिए अपने postgres कंटेनर लिंक हो रही है। मैं समझने में असफल रहा हूं; इसका क्या फायदा है? जहां तक ​​मैं कह सकता हूं, अगर किसी कारण से डॉकर-मशीन बंद हो जाती है (उदाहरण के लिए, इसे एक अलग भौतिक मशीन पर ले जाना), डेटा केवल कंटेनर चलना बंद कर देता है, और इसकी सभी सामग्री खो जाती है? मैंने पोस्टग्रेज़ कंटेनर में वॉल्यूम बनाने की कोशिश की है, लेकिन वास्तव में यह डिस्क पर कुछ भी सहेजने लगती नहीं है।

यहां मेरी डॉकर फ़ाइल है। मैं क्या गलत कर रहा हूं?

FROM ubuntu 
MAINTAINER Andrew Broadbent <[email protected]> 

# Add the PostgreSQL PGP key to verify their Debian packages. 
# It should be the same key as https://www.postgresql.org/media/keys/ACCC4CF8.asc 
RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 

# Add PostgreSQL's repository. It contains the most recent stable release 
#  of PostgreSQL, ``9.3``. 
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list 

# Install ``python-software-properties``, ``software-properties-common`` and PostgreSQL 9.3 
# There are some warnings (in red) that show up during the build. You can hide 
# them by prefixing each apt-get statement with DEBIAN_FRONTEND=noninteractive 
RUN apt-get update && apt-get install -y python-software-properties software-properties-common postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3 

# Note: The official Debian and Ubuntu images automatically ``apt-get clean`` 
# after each ``apt-get`` 

# Run the rest of the commands as the ``postgres`` user created by the ``postgres-9.3`` package when it was ``apt-get installed`` 
USER postgres 

# Create a PostgreSQL role named ``docker`` with ``docker`` as the password and 
# then create a database `docker` owned by the ``docker`` role. 
# Note: here we use ``&&\`` to run commands one after the other - the ``\`` 
#  allows the RUN command to span multiple lines. 
RUN /etc/init.d/postgresql start &&\ 
    psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\ 
    createdb -O docker docker 

# Complete configuration 
USER root 
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf 
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf 

# Expose the PostgreSQL port 
EXPOSE 5432 

# Add VOLUMEs to allow backup of config, logs and databases 
RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql 
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] 

# Set the default command to run when starting the container 
USER postgres 
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"] 

उत्तर

5

यह एक डेटा कंटेनर के बारे में आपके प्रश्न के उत्तर: docker mounting volumes on host

अपने dockerfile करने के बारे में, मैं तुम्हें सुझाव है या तो होगा:

1) का उपयोग डेटा कंटेनर पैटर्न

2) माउंट निर्दिष्ट करने के द्वारा मशीन होस्ट करने के लिए वॉल्यूम: docker run -v [host-path]:[container-path] ..., ताकि डेटा आपके मेजबान में एक ही स्थान पर रखा जाएगा और कंटेनर हटा दिए जाने के बाद खोया नहीं जाएगा।

रेफरी: https://docs.docker.com/engine/tutorials/dockervolumes/#/mount-a-host-directory-as-a-data-volume

संबंधित मुद्दे