고정 표시기는 MySQL을 설치
Dockerfile를 구성하여 방법
Dockerfile 만들기
첫째, 다시 관련 물건을 저장하기위한 디렉토리 MySQL의를 만듭니다.
w3big@w3big:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
MySQL의 데이터 디렉토리는 데이터 컨테이너 구성 파일 저장 경로에 매핑되는
로그 디렉토리는 MySQL의 컨테이너 로그 디렉터리에 매핑됩니다
conf 디렉토리의 구성 파일은 구성 파일 MySQL의 컨테이너에 매핑됩니다
MySQL의 디렉토리 생성을 입력 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 <[email protected]>" 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"]
, Dockerfile를 통해 미러를 생성 자신의 이름으로 대체
w3big@w3big:~/mysql$ docker build -t mysql .
생성되면, 우리는 당신이 바로 로컬 미러 목록에서 만든 이미지를 찾을 수 있습니다
w3big@w3big:~/mysql$ docker images |grep mysql mysql 5.6 2c0964ec182a 3 weeks ago 329 MB
방법이, 고정 표시기 풀 mysql을
도커 허브에 MySQL의 거울 찾기
w3big@w3big:/mysql$ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 2529 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Crea... 161 [OK] centurylink/mysql Image containing mysql. Optimized to be li... 45 [OK] sameersbn/mysql 36 [OK] google/mysql MySQL server for Google Compute Engine 16 [OK] appcontainers/mysql Centos/Debian Based Customizable MySQL Con... 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:... 2 [OK] ...
여기에 우리가 공식 미러를 당겨, 5.6로 표시
w3big@w3big:~/mysql$ docker pull mysql:5.6
다운로드가 완료를 위해, 우리는 MySQL의 목록 REPOSITORY 로컬 미러를 찾을 수 있습니다 잠깐, 5.6 이미지를 표시.
MySQL을 사용 미러링
실행 컨테이너
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$
명령 설명 :
3306 : -p 3306 3306 3306에서 호스트 포트 용기 포트에 맵핑 될
-v $ PWD / conf의 / my.cnf 파일 : /etc/mysql/my.cnf : 현재 디렉토리의 conf의 / my.cnf 파일 호스트는 컨테이너 /etc/mysql/my.cnf에 장착
-v $ PWD / 로그 / 로그 : 현재 디렉토리를 호스팅 할 디렉토리 컨테이너 / 로그에 장착 기록
-v $ PWD / 데이터 / mysql_data : 현재 디렉토리 데이터 마스터 디렉토리 컨테이너 / mysql_data에 장착
-e MYSQL_ROOT_PASSWORD = 123456 : 루트 사용자의 암호를 초기화
컨테이너가 상황을 시작 확인
w3big@w3big:~/mysql$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES 21cb89213c93 mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql