Docker installer MySQL
Procédé de construction d'Dockerfile
Créer Dockerfile
Tout d'abord, créer un mysql d'annuaire, pour stocker des choses liées à dos.
w3big@w3big:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
répertoire de données mysql est mappé sur le chemin de stockage du fichier de configuration de conteneur de données
répertoire de journaux sera mappé sur le répertoire des journaux de conteneur de mysql
les fichiers de configuration du répertoire conf sont mappés sur le conteneur mysql fichier de configuration
Entrez le répertoire mysql créé, créez Dockerfile
FROM debian:jessie # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN groupadd -r mysql && useradd -r -g mysql mysql # add gosu for easy step-down from root 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 --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \ && rm -r "$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 # FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db: # File::Basename # File::Copy # Sys::Hostname # Data::Dumper RUN apt-get update && apt-get install -y perl pwgen --no-install-recommends && rm -rf /var/lib/apt/lists/* # gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5 ENV MYSQL_MAJOR 5.6 ENV MYSQL_VERSION 5.6.31-1debian8 RUN echo "deb http://repo.mysql.com/apt/debian/ jessie mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list # the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn't have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql) # also, we set debconf keys to make APT a little quieter 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-server="${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 \ # ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime && chmod 777 /var/run/mysqld # comment out a few problematic configuration values # don't reverse lookup hostnames, they are usually another container RUN sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/my.cnf \ && echo 'skip-host-cache\nskip-name-resolve' | awk '{ print } $1 == "[mysqld]" && c == 0 { c = 1; system("cat") }' /etc/mysql/my.cnf > /tmp/my.cnf \ && mv /tmp/my.cnf /etc/mysql/my.cnf VOLUME /var/lib/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 CMD ["mysqld"]
Créer un miroir à travers Dockerfile, remplacez-le avec votre propre nom
w3big@w3big:~/mysql$ docker build -t mysql .
Une fois créé, nous pouvons trouver l'image que vous venez de créer dans la liste de miroir local
w3big@w3big:~/mysql$ docker images |grep mysql mysql 5.6 2c0964ec182a 3 weeks ago 329 MB
Méthode deux, docker traction mysql
Trouver miroir mysql sur Docker Hub
w3big@w3big:/mysql$ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relatifr. 2529 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Creafr. 161 [OK] centurylink/mysql Image containing mysql. Optimized to be lifr. 45 [OK] sameersbn/mysql 36 [OK] google/mysql MySQL server for Google Compute Engine 16 [OK] appcontainers/mysql Centos/Debian Based Customizable MySQL Confr. 8 [OK] marvambass/mysql MySQL Server based on Ubuntu 14.04 6 [OK] drupaldocker/mysql MySQL for Drupal 2 [OK] azukiapp/mysql Docker image to run MySQL by Azuki - http:fr. 2 [OK] fr.
Ici, nous tirons un miroir officiel, marqué 5.6
w3big@w3big:~/mysql$ docker pull mysql:5.6
Attendez que le téléchargement est terminé, nous pouvons trouver miroir local Référentiel de liste mysql, étiquetés 5.6 image.
Reflétant en utilisant mysql
conteneur Run
w3big@w3big:~/mysql$ docker run -p 3306:3306 --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6 21cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e w3big@w3big:~/mysql$
Commande Description:
-p 3306: 3306: 3306 sera mappé sur le port à conteneurs du port hôte en 3306
-v $ PWD / conf / my.cnf: /etc/mysql/my.cnf: l'hôte conf / my.cnf dans le répertoire courant est monté sur le conteneur /etc/mysql/my.cnf
-v $ PWD / logs: / logs : logs accueillera le répertoire courant est monté sur le conteneur / logs
-v $ PWD / données: / mysql_data : le répertoire maître des données dans le répertoire courant est monté sur le conteneur / mysql_data
MYSQL_ROOT_PASSWORD -e = 123456: initialiser le mot de passe de l'utilisateur root
Vérifier le conteneur commence circonstances
w3big@w3big:~/mysql$ docker ps CONTAINER ID IMAGE COMMAND fr. PORTS NAMES 21cb89213c93 mysql:5.6 "docker-entrypoint.sh" fr. 0.0.0.0:3306->3306/tcp mymysql