Das beste Docker installieren MySQL-Tutorial im Jahr 2024. In diesem Tutorial können Sie Mirroring mysql, lernen

Docker installieren MySQL

Verfahren nach Dockerfile Konstruieren

erstellen Sie Dockerfile

Zuerst ein Verzeichnis mysql erstellen, für die Speicherung von Backup-related stuff.

w3big@w3big:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf

MySQL-Datenverzeichnis wird in den Datencontainer-Konfigurationsdatei Speicherpfad abgebildet

Protokollverzeichnis wird dem mysql Container Protokollverzeichnis zugeordnet werden

Konfigurationsdateien conf werden in die Konfigurationsdatei mysql Container abgebildet

Geben Sie mysql-Verzeichnis erstellt, erstellen 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"]

Erstellen Sie einen Spiegel durch Dockerfile, ersetzen Sie es mit Ihrem eigenen Namen

w3big@w3big:~/mysql$ docker build -t mysql .

Einmal erstellt, können wir das Bild finden Sie nur in der lokalen Spiegelliste erstellt

w3big@w3big:~/mysql$ docker images |grep mysql
mysql               5.6                 2c0964ec182a        3 weeks ago         329 MB

Methode zwei, Docker Pull mysql

Finden mysql Spiegel auf Docker Hub

w3big@w3big:/mysql$ docker search mysql
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                    MySQL is a widely used, open-source relatide.   2529      [OK]       
mysql/mysql-server       Optimized MySQL Server Docker images. Creade.   161                  [OK]
centurylink/mysql        Image containing mysql. Optimized to be lide.   45                   [OK]
sameersbn/mysql                                                          36                   [OK]
google/mysql             MySQL server for Google Compute Engine          16                   [OK]
appcontainers/mysql      Centos/Debian Based Customizable MySQL Conde.   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:de.   2                    [OK]
de.

Hier haben wir einen offiziellen Spiegel ziehen, beschriftet 5.6

w3big@w3big:~/mysql$ docker pull mysql:5.6

Warten, bis der Download abgeschlossen ist, wir REPOSITORY lokalen Spiegel von mysql Liste finden können, beschriftet 5.6 Bild.


Mirroring mysql

Laufbehälter

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$ 

Befehl Beschreibung:

  • -p 3306: 3306: 3306 an den Host - Port Containerhafen in 3306 abgebildet werden

  • -v $ PWD / conf / my.cnf: /etc/mysql/my.cnf: die conf / my.cnf Host im aktuellen Verzeichnis mit dem Behälter /etc/mysql/my.cnf montiert

  • -v $ PWD / logs: / logs : logs wird das aktuelle Verzeichnis als Host für den Container / logs montiert

  • -v $ PWD / Daten: / mysql_data : die Stammdatenverzeichnis unter dem aktuellen Verzeichnis mit dem Behälter / mysql_data montiert

  • -e MYSQL_ROOT_PASSWORD = 123456: initialisieren Sie das Kennwort des Root - Benutzer

Überprüfen Sie die Behälter Umstände beginnt

w3big@w3big:~/mysql$ docker ps 
CONTAINER ID    IMAGE         COMMAND                  de.  PORTS                    NAMES
21cb89213c93    mysql:5.6    "docker-entrypoint.sh"    de.  0.0.0.0:3306->3306/tcp   mymysql
Docker installieren MySQL
10/30