sourcecode

Docker 빌드 중에 Docker가 MariaDB/MySQL을 시작할 수 없습니다.

copyscript 2022. 9. 12. 11:43
반응형

Docker 빌드 중에 Docker가 MariaDB/MySQL을 시작할 수 없습니다.

나의 전류Dockerfile다음과 같습니다.

FROM ubuntu:14.04

ENV DEBIAN_FRONTEND noninteractive
ENV INITRD No
ENV LANG en_US.UTF-8

# Maria DB Versions
ENV MARIADB_MAJOR 5.5
ENV MARIADB_VERSION 5.5.55+maria-1~trusty

# Create mysql user and group
RUN groupadd -r mysql && useradd -r -g mysql mysql

# Install needed dependencies
RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common && rm -rf /var/lib/apt/lists/*

# Add the MariaDB PGP key to verify their Debian packages.
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db

# Add MariaDB's repository. We use the Ubuntu 14.04 version as there ain't no MariaDB 5.5 for Ubuntu 16.04.
RUN add-apt-repository 'deb http://mirror.jmu.edu/pub/mariadb/repo/5.5/ubuntu trusty main'

# Install Maria DB and open the access for outside of the container
RUN apt-get update \
    && apt-get install -y --no-install-recommends mariadb-server=$MARIADB_VERSION \
    && rm -rf /var/lib/apt/lists/* \
    && sed -i 's/^\(bind-address\s.*\)/# \1/' /etc/mysql/my.cnf \
    && update-rc.d -f mysql disable

# Run as user mysql
USER mysql

# Start the MariaDB to add a user and create the DB
RUN mysqld

RUN echo "@TODO: Create DB, User and grant access"

# Expose Port
EXPOSE 3306

컨테이너를 빌드할 때docker build -t testmariadb .다음과 같은 출력이 표시됩니다.

    Step 13/17 : RUN mysqld
---> Running in 5aeb49c81f5e
170428 20:00:25 [Note] mysqld (mysqld 5.5.55-MariaDB-1~trusty) starting as process 7 ...
170428 20:00:25 InnoDB: The InnoDB memory heap is disabled
170428 20:00:25 InnoDB: Mutexes and rw_locks use GCC atomic builtins
170428 20:00:25 InnoDB: Compressed tables use zlib 1.2.8
170428 20:00:25 InnoDB: Using Linux native AIO
170428 20:00:25 InnoDB: Initializing buffer pool, size = 256.0M
170428 20:00:25 InnoDB: Completed initialization of buffer pool
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
170428 20:00:25  InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
170428 20:00:25  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
170428 20:00:25  InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: 127 rollback segment(s) active.
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
170428 20:00:25  InnoDB: Waiting for the background threads to start
170428 20:00:26 Percona XtraDB (http://www.percona.com) 5.5.52-MariaDB-38.3 started; log sequence number 0
170428 20:00:26 [Note] Plugin 'FEEDBACK' is disabled.
170428 20:00:26 [Note] Server socket created on IP: '0.0.0.0'.
170428 20:00:26 [Note] Event Scheduler: Loaded 0 events
170428 20:00:26 [Note] mysqld: ready for connections.
Version: '5.5.55-MariaDB-1~trusty'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

제가 알기로는 마리아DB가 시작되지만, 거기서 멈춰서 다음 명령을 실행하지 않습니다.도커에서 MariaDB를 시작하는 다른 방법이 있습니까?

1) 붙지 않습니다.MariaDB가 실행됩니다.그러나 목적을 달성하려면 RUN 명령이 아닌 CMD 명령을 사용해야 합니다.

명령 CMD는 RUN과 마찬가지로 특정 명령 실행에 사용할 수 있습니다.그러나 RUN과 달리 빌드 중에 실행되는 것이 아니라 빌드 중인 이미지를 사용하여 컨테이너가 인스턴스화될 때 실행됩니다.

2) 도커 파일의 마지막 부분은 다음과 같습니다.

#Run as user mysql
USER mysql

RUN echo "@TODO: Create DB, User and grant access"

#Expose Port
EXPOSE 3306

#Right way to run mysqld
CMD ["mysqld"]

이미지 구축에 최적

docker build -t testmariadb .

빌드 이미지 실행용

docker run testmariadb

OR(독립 모드의 경우)

docker run -d testmariadb

3) Ubuntu Base 이미지를 사용하는 이유를 자신에게 물어보십시오(FROM ubuntu:14.04).컨테이너 내에서 mariaDb만 실행하려면 https://hub.docker.com/_/mariadb/을 사용해야 한다고 합니다.

컨테이너 실행 시 사용하는 도커 명령어는 무엇입니까?

MariaDB의 Docker 공식 파일을 따르십시오.도커 마리아DB

최신 Docker File Maria입니다.DB

이는 잘못되었다.

# Start the MariaDB to add a user and create the DB RUN mysqld

네가 원했겠지

CMD mysqld

또는 그 정도

에서 보다.

https://github.com/docker-library/mysql/blob/7a850980c4b0d5fb5553986d280ebfb43230a6bb/8.0/Dockerfile

끝은

EXPOSE 3306 CMD ["mysqld"]

RUN, WORKDIR, ADD, COPY, ENV(기타 일부)를 사용하면 도커 이미지 구성, 소프트웨어 부팅을 위한 ENTRIPOINT 및 CMD(nginx 이미지의 경우 nginx, Wordpress...)를 수행할 수 있습니다.

문서

https://docs.docker.com/engine/reference/builder/

언급URL : https://stackoverflow.com/questions/43688168/docker-cant-start-mariadb-mysql-during-docker-build

반응형