도커 파일은 도커 실행을 사용한 후 즉시 중지됩니다.
내 도커 파일 중 하나에 문제가 있습니다. 실제로 이미지가 구축되면 이미지를 사용하여 실행한 후 즉시 중지됩니다.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
'programing' 카테고리의 다른 글
C/C++의 서로 다른 호출 규약은 무엇이며 각각의 의미는 무엇입니까? (0) | 2023.11.02 |
---|---|
Woocommerce - 플러그인을 통해 템플릿 재정의 (0) | 2023.11.02 |
런타임 오류 49, 잘못된 DLL 호출 규칙 (0) | 2023.11.02 |
선형 레이아웃의 한 면에만 테두리를 그리는 방법은 무엇입니까? (0) | 2023.11.02 |
앵귤러 쿠키 (0) | 2023.11.02 |