programing

도커 파일은 도커 실행을 사용한 후 즉시 중지됩니다.

mailnote 2023. 11. 2. 22:02
반응형

도커 파일은 도커 실행을 사용한 후 즉시 중지됩니다.

내 도커 파일 중 하나에 문제가 있습니다. 실제로 이미지가 구축되면 이미지를 사용하여 실행한 후 즉시 중지됩니다.docker run명령어, 내 도커 파일 기본 이미지는 alpine:3.18이고 컨테이너 안에서 Mariaadb를 실행합니다.

도커 파일은 다음과 같습니다.

FROM alpine:3.18

ARG APP_USER=mysql

RUN apk update && apk add --no-cache mariadb mariadb-client

RUN mkdir -p /var/log/${APP_USER}

RUN mkdir -p /var/run/mysqld && \
    chown -R ${APP_USER}:${APP_USER} /var/run/mysqld && \
    chmod -R 750 /var/run/mysqld

RUN mkdir -p /var/lib/${APP_USER} && \
    chown -R ${APP_USER}:${APP_USER} /var/lib/${APP_USER} && \
    chmod -R 750 /var/lib/${APP_USER} && \
    mkdir -p /var/run/${APP_USER} && \
    chown -R ${APP_USER}:${APP_USER} /var/run/${APP_USER} && \
    chmod -R 750 /var/run/${APP_USER} && \
    chown -R ${APP_USER}:${APP_USER} /var/log/${APP_USER} && \
    chmod -R 750 /var/log/${APP_USER}

COPY ./conf/my.cnf /etc/${APP_USER}/my.cnf

COPY ./tools/init.sql /docker-entrypoint-initdb.d/init.sql

EXPOSE 3306

USER ${APP_USER}:${APP_USER}

CMD ["mysqld_safe"]

여기 있습니다.my.cnf파일:

[mysqld]
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock

log-error=/var/log/mysql/error.log

# Security
skip-networking

다음은 관리자 사용자를 생성하고 루트 사용자의 암호를 설정하는 스크립트입니다.

CREATE USER ${ADMIN_USERNAME}@'localhost' IDENTIFIED BY ${ADMIN_PASSWORD};
GRANT ALL PRIVILEGES ON ${MARIADB_DB_NAME}.* TO ${ADMIN_USERNAME}@'localhost' IDENTIFIED BY ${ADMIN_PASSWORD};
ALTER USER 'root'@'localhost' IDENTIFIED BY ${ROOT_PASSWORD};
FLUSH PRIVILEGES;

CREATE DATABASE wordpress;

컨테이너의 출구 상태를 확인해보니 0입니다. 다 괜찮은 것 같지만 사용을 시작하면 컨테이너가 바로 멈춥니다.docker run지휘.

사용된 명령어는 다음과 같습니다.

sudo docker run -d --name mariadb-container -p 3000:3306 mariadb-try:v1

도커 로그는 다음과 같습니다.

230611 19:52:59 mysqld_safe Logging to '/var/log/mysql/error.log'.
230611 19:52:59 mysqld_safe Starting mariadbd daemon with databases from /var/lib/mysql

콘솔을 실행하여 컨테이너에 부착하고, 거기서 시작할 수 있습니다.mysqld_safe.

달려.

이 명령은 sh 콘솔을 컨테이너에 부착하여 컨테이너가 빠져나가지 않도록 합니다(이 명령을 사용해도 문제가 해결되지 않습니다...).

docker run -it -d --name mariadb-container --rm -p 3000:3306 mariadb-try:v1 sh

부착하다

이렇게 하면 대화형 콘솔이 하나 더 부착됩니다. 여기서 시스템에 있으면 시스템을 탐색할 수 있습니다.

docker exec -it mariadb-container sh

스타트 마리아DB

컨테이너 콘솔 내에서 실행mysqld_safe

이렇게 하면 질문에 나와 있는 것과 같은 출력이 나옵니다.

230612 15:01:43 mysqld_safe Logging to '/var/log/mysql/error.log'.
230612 15:01:43 mysqld_safe Starting mariadbd daemon with databases from /var/lib/mysql

조사

이제 오류 로그를 읽을 수 있습니다./var/log/mysql/error.log

2023-06-12 15:01:44 0 [Note] Starting MariaDB 10.11.4-MariaDB source revision 4e2b93dffef2414a11ca5edc8d215f57ee5010e5 as process 95
2023-06-12 15:01:44 0 [Note] InnoDB: The first data file './ibdata1' did not exist. A new tablespace will be created!
2023-06-12 15:01:44 0 [Note] InnoDB: Compressed tables use zlib 1.2.13
2023-06-12 15:01:44 0 [Note] InnoDB: Using transactional memory
2023-06-12 15:01:44 0 [Note] InnoDB: Number of transaction pools: 1
2023-06-12 15:01:44 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2023-06-12 15:01:44 0 [Note] mariadbd: O_TMPFILE is not supported on /var/tmp (disabling future attempts)
2023-06-12 15:01:44 0 [Note] InnoDB: Using Linux native AIO
2023-06-12 15:01:44 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2023-06-12 15:01:44 0 [Note] InnoDB: Completed initialization of buffer pool
2023-06-12 15:01:44 0 [Note] InnoDB: Setting file './ibdata1' size to 12.000MiB. Physically writing the file full; Please wait ...
2023-06-12 15:01:44 0 [Note] InnoDB: File './ibdata1' size is now 12.000MiB.
2023-06-12 15:01:44 0 [Note] InnoDB: Buffered log writes (block size=512 bytes)
2023-06-12 15:01:44 0 [Note] InnoDB: Doublewrite buffer not found: creating new
2023-06-12 15:01:44 0 [Note] InnoDB: 128 rollback segments are active.
2023-06-12 15:01:44 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2023-06-12 15:01:44 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2023-06-12 15:01:44 0 [Note] InnoDB: log sequence number 0; transaction id 3
2023-06-12 15:01:44 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-06-12 15:01:44 0 [ERROR] Could not open mysql.plugin table: "Table 'mysql.plugin' doesn't exist". Some plugins may be not loaded
2023-06-12 15:01:44 0 [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
2023-06-12 15:01:44 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.db' doesn't exist
2023-06-12 15:01:44 0 [ERROR] Aborting
Warning: Memory not freed: 280

맞아요.

이제 진정한 오류가 발생하면 이미지를 재구성하지 않고도 기계 내부의 오류를 해결할 수 있습니다(그리고 도커 파일에서 복제하는 데 필요한 단계를 기록하십시오). MySQL을 시작하려고 시도합니다.

언급URL : https://stackoverflow.com/questions/76452213/dockerfile-immediately-stopping-after-use-of-docker-run

반응형