위키북스로 도커 실습하기
1. network create [네트워크명] - 네트워크 생성
2. MySQL 컨테이너 생성
docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
docker ps
만 했을 뿐인데 mysql이 안올라가져있었다..
docker ps -a
로 확인하니 Exited?? 켜지지 않고 있었다.
docker desktop에서 볼륨도, 이미지도 지웠는데도 안돼서 docker logs [컨테이너ID 앞2자리]
해서 로그를 확인해봤다.
docker logs b8
Enter7-10 08:27:00+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 9.0.0-1.el9 st UpArrow UpArrow UpArrow Enter
Enter7-10 08:27:01+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
d o c k e r Space p s Space - a Enterypoint]: Entrypoint script for MySQL Server 9.0.0-1.el9 st @ Enter
2024-07-10 08:27:01+00:00 [Note] [Entrypoint]: Initializing database files
2024-07-10T08:27:01.649504Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.Exception:
System.IO.IOException: The parameter is incorrect. [Server] /usr/sbin/mysqld (mysqld 9.0.0) initializing of server in progress as process 80
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)lization has started.
at System.Console.SetCursorPosition(Int32 left, Int32 top)nnoDB initialization has ended.
at Microsoft.PowerShell.PSConsoleReadLine.AcceptLineImpl(Boolean validate)default-authenticat at Microsoft.PowerShell.PSConsoleReadLine.ProcessOneKey(ConsoleKeyInfo key, Dictionary`2 dispatchTable, Boolean ignoreIfNoAction, Object arg)] [Server] The designated data directory /var/li at Microsoft.PowerShell.PSConsoleReadLine.InputLoop()server added to it.
at Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinsics engineIntrinsics)08:27:06.013986Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
-----------------------------------------------------------------------0net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=PS C:\Users\user> ^Fracter-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci docker: Error response from daemon: Conflict. The container name "/mysql000ex11" is already in use by container "b81d91f00500dabd78622812b811b24a835bbb42db1156d932901bde846175f6". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
뭔가 인자로 준게 안맞은 것 같아보였다.
The parameter is incorrect.
...!
그래서 맨 마지막에 있는 인자를 제거하고 했더니 잘 됐다!
docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
책에서는, --default-authentication-plugin=
이게 인증 방식인데, MySQL 5.7버전에서 8.0으로 넘어오면서 외부 소프트웨어가 MySQL에 접속하는 인증방식을 바꾸어서, 그 값으로 mysql_native_password(인증 방식을 예전 방식native로 변경)한다고 설정을 해줘야 한다고 말하고 있다.
책이다보니 바뀌면서 이부분이 해결이 됐다보다.
[컨테이너명 혹은 컨테이너id앞2자리]
[컨테이너명 혹은 컨테이너id앞2자리]