일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- java
- Heap
- jpa
- diskpressure
- JVM
- 티스토리챌린지
- k8s
- application properties
- liveness probe
- property
- logback
- OOM
- properties
- Java Virtual Machine
- 오블완
- pod
- Xmx
- xms
- spring boot
- evicted
- Probe
- ORM
- startup probe
- Kubernetes
- readiness probe
- configmap
- Today
- Total
여우발개발
[삽질로그] window에서 docker로 mysql 띄우기 본문
배경
신규 프로젝트를 셋팅해야한다! 맨 땅에서 시작하는 프로젝트는 너무 오랜만이다.
룰루랄라 설계를 하고 소스리포를 따고 테스트용 디비를 셋팅하려고 DB팀에 요청하려다 보니, 아직 프로젝트 이름이 정해지지 않아서 DB 이름도 확정할 수가 없었다. mysql은 논리DB 이름을 변경할 수 없고 새로 만들고 데이터를 이전해야하고 매핑된 계정도 다시 매핑해줘야한다고 하신다. 나도 2번 일하기 싫어하는 사람인데 DB팀을 2번 일하게 할 바에 로컬에다가 셋팅을 하기로 마음먹었다.
서버 배포 시에는 컨테이너 기술을 당연하게 사용했지만 로컬 환경에서 사용해본 적은 없었다. 이왕 한 김에 윈도우에서 도커를 써보기로 했다.
목표
- windows 환경에서 docker 설치
- 설치된 docker에서 mysql 설치
Log
[윈도우 Docker 설치 완벽 가이드(Home 포함)
Docker는 경량 가상화 기술인 리눅스 컨테이너 도구입니다. 윈도우 Home과 Pro에서도 몇 가지 설정을 통해 Docker Desktop을 사용할 수 있습니다. 이 글에서는 윈도우에서 Docker Desktop을 설치하는 방법을
이전에는 Docker Desktop을 설치해서 사용해보려 했으나 Hyper-V 가 제대로 적용되지 않은건지 제대로 사용해볼 수 없었다. 글을 찾아보다 보니 WSL라는 기술을 사용해서 Hyper-V 없이도 Docker Desktop을 사용할 수 있다 하여 그 방식으로 적용해보고자 했다.
WSL2 깔기
❓ WSL2가 뭘까?
❗ Window Subsystem for Linux 라고 한다. 윈도우에서 linux 환경을 실행할 수 있게 해주는 기능
PS C:\\Users\\devfoxbox> wsl --install
설치 중: Ubuntu
Ubuntu이(가) 설치되었습니다.
Ubuntu을(를) 시작하는 중...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: <https://aka.ms/wslusers>
Enter new UNIX username: {ID}
New password: # {PASSWORD}
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
* Documentation: <https://help.ubuntu.com>
* Management: <https://landscape.canonical.com>
* Support: <https://ubuntu.com/pro>
System information as of Fri Jan 3 11:40:12 KST 2025
System load: 0.88 Processes: 48
Usage of /: 0.1% of 1006.85GB Users logged in: 0
Memory usage: 4% IPv4 address for eth0: 123.45.678.910
Swap usage: 0%
This message is shown once a day. To disable it please create the
/home/devfoxbox/.hushlogin file.
설치 이후에는 WSL 터미널로 바로 들어오게 되는 것 같은데 처음에는 WSL 터미널인지 모르고 헤맸다.
devfoxbox@PC:~$ wsl --set-default-version 2
wsl: command not found
devfoxbox@PC:~$ ^C
devfoxbox@PC:~$ exit
logout
배포 'Ubuntu'에 대한 설치 프로세스가 종료 코드와 함께 실패했습니다. 130.
오류 코드: Wsl/InstallDistro/WSL_E_INSTALL_PROCESS_FAILED
PS C:\\Users\\devfoxbox> wsl --set-default-version 2
WSL 2와의 주요 차이점에 대한 자세한 내용은 <https://aka.ms/wsl2를> 참조하세요
작업을 완료했습니다.
❗ChatGPT - '계정@pc명:~$' 과 'C:\\Users\\~' 의 차이
계정@pc명:~$
이 프롬프트는 Linux, macOS 등에서 사용하는 Bash 셸 또는 다른 Unix 계열 셸에서 나타나는 프롬프트입니다. 이 프롬프트는 주로 WSL(Windows Subsystem for Linux)을 통해 Windows에서 Linux 환경을 실행할 때 보게 됩니다.
- 계정: 현재 로그인한 사용자 이름.
- pc명: PC 이름 또는 호스트 이름.
- ~: 현재 디렉토리 경로를 나타냅니다. ~는 사용자의 홈 디렉토리(예: /home/username 또는 /Users/username)를 나타냅니다.
- $: 일반 사용자일 때 나타나는 셸 프롬프트입니다. 루트 사용자일 경우 #이 나타날 수 있습니다.
2. C:\\Users\\~
이 프롬프트는 Windows 운영체제에서 PowerShell 또는 Command Prompt(CMD)에서 나타나는 프롬프트입니다.
- C:\\Users\\~: ~는 Windows에서 사용자의 홈 디렉토리를 의미하는 C:\\Users\\username 경로로 해석됩니다. PowerShell에서 ~는 Windows 사용자 디렉토리의 단축 표기입니다.
차이점
- 운영체제:
- 계정@pc명:~$는 Linux나 macOS, 또는 WSL(Windows Subsystem for Linux) 환경에서의 프롬프트입니다.
- C:\\Users\\~는 Windows PowerShell 또는 Command Prompt에서 나타나는 프롬프트입니다.
- 셸 종류:
- 계정@pc명:~$는 Bash나 Zsh와 같은 Unix 계열 셸에서 나타납니다.
- C:\\Users\\~는 PowerShell이나 CMD에서 나타납니다.
- 작동 환경:
- 계정@pc명:~$는 Linux 환경에서 실행 중인 터미널 또는 Windows의 WSL에서 실행된 경우 나타납니다. WSL은 Windows에서 Linux 환경을 제공하는 도구입니다.
- C:\\Users\\~는 Windows 환경에서 PowerShell 또는 CMD를 사용 중일 때 나타납니다.
어찌됐든 윈도우에 WSL2는 깔았다.
도커 데스크탑 깔기
도커 데스크탑... 일단 삽질은 많이 했으나... 결과적으로 사용하지 못했으므로 접은글 처리로 대신한다.
윈도우용 버전은 AMD64랑 ARM64 2가지가 있다. 뭔 차인지 몰라서 또 챗지피티찬스
- ❓도커 설치할 때 arm amd 2개 있는데 뭐 깔아야해?1. AMD 버전
- AMD라는 명칭은 AMD라는 회사에서 만든 프로세서를 의미할 수 있지만, 보통 x86-64 아키텍처를 지칭하는 용어로 사용됩니다. 즉, 대부분의 인텔(Intel) 및 AMD 프로세서 기반의 컴퓨터에서 사용하는 아키텍처입니다.
- x86-64 아키텍처는 데스크탑 컴퓨터, 노트북, 서버 등에서 일반적으로 사용됩니다.
- 이 경우: Intel 또는 AMD의 최신 프로세서를 사용하는 PC에서 Docker를 설치하려면 AMD 버전을 선택하면 됩니다.
- ARM은 모바일 기기나 저전력 장치에서 주로 사용되는 ARM 아키텍처에 맞는 버전입니다. 주로 스마트폰, 태블릿, 라즈베리파이 같은 ARM 기반 장치에서 사용됩니다.
- 이 경우: 만약 ARM 기반의 프로세서를 사용하는 장치(예: Raspberry Pi, 일부 ARM 기반 서버, 최근 ARM 아키텍처를 사용하는 Apple M1/M2 칩 기반 Mac 등)에서 Docker를 설치하려면 ARM 버전을 선택해야 합니다.
- Intel 또는 AMD CPU (일반적인 데스크탑/노트북): **AMD 버전 (x86-64)**을 선택하세요.
- ARM 기반 CPU (예: Raspberry Pi, Apple M1/M2 등): ARM 버전을 선택하세요.
- Windows에서 확인하는 방법:
- 명령 프롬프트에서 wmic cpu get architecture 명령어를 입력하여 CPU 아키텍처를 확인할 수 있습니다.
- 0: x86 (32-bit)
- 6: x64 (64-bit)
- 5: ARM (ARM64)
- 명령 프롬프트에서 wmic cpu get architecture 명령어를 입력하여 CPU 아키텍처를 확인할 수 있습니다.
- macOS에서 확인하는 방법:
- 터미널에서 uname -m 명령어를 입력하면 아키텍처가 나타납니다.
- x86_64: Intel 또는 AMD (x86-64)
- arm64: Apple Silicon (ARM 아키텍처)
- 터미널에서 uname -m 명령어를 입력하면 아키텍처가 나타납니다.
- Linux에서 확인하는 방법:
- 터미널에서 uname -m을 입력하여 아키텍처를 확인할 수 있습니다.
- AMD 버전은 x86-64 아키텍처를 지원하는 데스크탑이나 서버에 설치해야 합니다.
- ARM 버전은 ARM 아키텍처를 사용하는 기기, 예를 들어 Raspberry Pi나 Apple Silicon M1/M2 칩이 있는 Mac에 설치해야 합니다.각각의 하드웨어에 맞는 버전을 선택하여 설치하시면 됩니다!
- ❗Docker 설치 시 ARM과 AMD 버전이 제공된다면, 어떤 버전을 설치할지는 사용 중인 하드웨어 아키텍처에 따라 달라집니다. 각 버전은 CPU 아키텍처에 맞는 Docker 엔진을 제공합니다.
- ❓1번 하는데 9..로 나오는데..?ChatGPT출력 결과 9는 ARM64 아키텍처를 나타냅니다. 이 경우, 해당 시스템이 ARM 기반 프로세서(예: Apple M1, ARM 기반 Windows PC 등)를 사용하고 있다는 뜻입니다.확인할 수 있는 방법:
- *wmic cpu get architecture의 출력 결과 9*는 ARM 아키텍처를 나타내므로, Docker를 설치할 때 ARM 버전을 선택해야 합니다.
- ARM 버전의 Docker는 ARM 기반 프로세서에 최적화된 버전입니다.
- ARM 기반 시스템(예: Apple Silicon, ARM Windows PC 등)을 사용하고 계신다면, ARM 버전의 Docker를 다운로드하고 설치하시면 됩니다.
- 이런 경우, ARM 버전의 Docker를 설치하셔야 합니다.
- 명령어 wmic cpu get architecture의 출력 결과에서 9가 나온다면, 이는 ARM 아키텍처를 의미하는 값입니다. 그러나, x86-64 아키텍처를 사용하는 시스템이라면 wmic cpu get architecture 명령어로 9가 아닌 **6**이 나와야 합니다.
- ChatGPT의 말:
- ❓6이랑 9랑 무슨차이야wmic cpu get architecture 명령어의 출력에서 6과 9는 서로 다른 CPU 아키텍처를 나타냅니다. 각 숫자는 아래와 같이 해석됩니다:
- 6은 x64 또는 AMD64라고도 불리는 64비트 x86 아키텍처를 의미합니다. 이는 Intel 및 AMD 프로세서에서 주로 사용되는 아키텍처입니다.
- 이 아키텍처는 대부분의 데스크탑, 노트북, 서버에서 사용되며, 64비트 운영체제를 지원합니다.
- 예시: Intel i7, AMD Ryzen 5 프로세서 등.
- 9는 ARM64 또는 AArch64 아키텍처를 의미합니다. 이는 ARM 프로세서에서 사용하는 64비트 아키텍처입니다.
- ARM 아키텍처는 모바일 기기, 임베디드 시스템, 서버, 그리고 최근에는 Apple M1/M2 칩을 사용하는 Mac과 같은 저전력 장치에서 사용됩니다.
- 예시: Apple M1/M2 칩, Raspberry Pi 4, ARM 기반 서버 등.
- 6은 x86-64 (64비트 x86) 아키텍처로, Intel 및 AMD CPU에서 사용됩니다.
- 9는 ARM64 (64비트 ARM) 아키텍처로, ARM 기반 CPU에서 사용됩니다.
- 6은 Intel 또는 AMD의 64비트 CPU를 의미합니다.
- 9는 ARM 기반의 64비트 CPU를 의미합니다.
- 만약 9가 나온다면, ARM64 기반의 시스템을 사용하고 있다는 뜻이므로, Docker 설치 시 ARM 버전을 선택해야 합니다.
- 1. 6: x64 (64-bit x86)
- ❗ChatGPT
- ❓windows amd arm 확인Windows에서 AMD 또는 ARM 아키텍처를 확인하는 방법을 안내드립니다. 이를 통해 사용하는 CPU의 아키텍처를 정확히 알 수 있습니다.
- 시작 메뉴에서 **"시스템 정보"**를 검색하여 시스템 정보 앱을 엽니다.
- 시스템 요약 섹션에서 "프로세서" 항목을 찾습니다.
- 해당 항목에서 "프로세서" 정보에 "x64" 또는 "ARM" 정보가 표시됩니다:
- x64: Intel 또는 AMD 64비트 프로세서 (즉, x86-64 아키텍처).
- ARM: ARM 아키텍처 기반의 프로세서 (예: Qualcomm Snapdragon, Microsoft Surface Pro X, Apple M1/M2 칩 기반 Mac).
- PowerShell을 열고 아래 명령어를 입력하세요:
- powershell 코드 복사 Get-WmiObject Win32_Processor | Select-Object Name, Architecture
- 출력 결과에서 Architecture 값:
- 0: x86 (32비트)
- 6: x64 (64비트, 즉 Intel 또는 AMD 기반 프로세서)
- 9: ARM (ARM64)
- 명령 프롬프트(CMD)를 열고 아래 명령어를 입력하세요:
- cmd 코드 복사 echo %PROCESSOR_ARCHITECTURE%
- 결과 값:
- AMD64: 64비트 Intel 또는 AMD 아키텍처 기반 시스템.
- ARM64: ARM 아키텍처 기반 시스템.
- 시작 메뉴 > 설정 > 시스템 > 정보로 이동합니다.
- 장치 사양에서 시스템 종류 항목을 확인합니다.
- 64비트 운영 체제, x64 기반 프로세서: Intel 또는 AMD 기반의 64비트 프로세서.
- 64비트 운영 체제, ARM 기반 프로세서: ARM 아키텍처 기반의 프로세서.
- x64 또는 AMD64는 Intel 또는 AMD 기반 프로세서입니다.
- ARM은 ARM64 아키텍처 기반의 시스템을 의미합니다.위 방법을 통해 Windows에서 사용하는 CPU의 아키텍처를 확인하시면 됩니다!
- 방법 1: 시스템 정보에서 확인하기
- ❗ChatGPT
- ❓1에서는 프로세서 Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz, 2904Mhz, 8 코어, 16 논리 프로세서 로 뜨고 2는 9 3은 AMD64 로 나오는데?위의 출력을 통해 보면, 1번(시스템 정보)에서 표시된 Intel Core i7-10700 CPU는 Intel의 x86-64 아키텍처 기반 프로세서임을 나타냅니다. 따라서 2번(PowerShell)에서 9가 나온 이유는, wmic cpu get architecture 명령어에서 출력되는 값이 정확히 **"ARM64"**를 나타내는 9일 때 ARM 아키텍처와 관련이 있지만, 실제로 이 시스템은 x86-64 기반의 Intel CPU이므로 혼동이 있을 수 있습니다.각 결과에 대한 설명:
- 시스템 정보:
- Intel Core i7-10700: 이는 Intel의 x86-64(64비트) 아키텍처를 사용하는 프로세서입니다. 따라서 AMD64와 x64가 모두 이 아키텍처를 나타냅니다.
- PowerShell에서 "9":
- *PowerShell에서 "9"**는 실제 ARM 아키텍처를 나타내는 값입니다. 그러나 이 값은 혼동될 수 있습니다. Windows 10 이상에서 Intel/AMD 프로세서 시스템에서는 종종 "9" 값이 표시되기도 하지만, 이는 기타 Windows 시스템 환경의 설정 문제나 wmic 명령어가 올바르게 아키텍처를 파악하지 못한 경우일 수 있습니다. 실제로 이 시스템은 Intel 기반의 x64 아키텍처입니다.
- 명령 프롬프트에서 "AMD64":
- AMD64는 x86-64 아키텍처를 나타내는 용어입니다. 이는 Intel과 AMD의 64비트 프로세서가 사용하는 아키텍처입니다. 여기서 AMD64는 Intel Core i7 프로세서와 호환됩니다.
- 시스템 정보와 **명령 프롬프트에서의 "AMD64"**는 모두 x86-64 (64비트) 아키텍처를 사용하는 시스템을 나타냅니다.
- *PowerShell에서 "9"**가 나온 것은 혼동될 수 있으며, 실제로는 ARM 아키텍처가 아닌 Intel/AMD 기반 시스템입니다. 이 값은 시스템에 따라 다르게 나타날 수 있는 값일 수 있습니다.
- 시스템 정보:
- 그리고 3번에서 AMD64가 나온 것은, Windows에서 x64 아키텍처(Intel 또는 AMD 기반)라는 의미입니다. AMD64는 x86-64 아키텍처를 나타내는 일반적인 명칭으로, Intel과 AMD의 64비트 프로세서 모두 해당됩니다.
- ChatGPT
- ❓amd야 arm이야현재 사용하시는 프로세서는 Intel Core i7-10700이고, x86-64 아키텍처를 사용하고 있습니다. 따라서, ARM이 아니라 AMD도 아니고 x86-64 아키텍처를 사용하는 Intel 기반 프로세서입니다.
- Intel Core i7-10700은 Intel의 x86-64 아키텍처를 사용하는 CPU입니다.
- ARM 아키텍처는 다른 종류의 CPU에서 사용되며, Apple M1/M2 같은 ARM 기반 시스템에서는 사용됩니다.
- *"AMD64"**는 x86-64 아키텍처를 의미하는 이름으로, Intel과 AMD 프로세서 모두 이 아키텍처를 사용합니다.
- 정리:
- ❗ChatGPT
설치한 후 실행! 잘 뜬다
사용하지 못했던 슬픈 히스토리
명령어를 치라고 나오는데, 리눅스 명령어들이 나온다. 도커 데스크톱 에는 따로 커맨드창이 없어서, 어디에 입력해야하나 계속 찾고있던 차에 ‘WSL’ 라는 프로그램이 따로 생긴걸 확인했다. 이거 실행해서 하면 될듯?
튜토리얼에서 git repo 다운받고 미리 설정되어있는 Dockerfile을 build해보려는데, TLS handshake timeout 가 뜨면서 node가 안받아진댄다. 딱 봐도 방화벽이다. gitlab runner 셋팅할 때 proxy 설정하는 내용이 wiki에서 조회되기래 그거로 docker desktop에서 proxy 설정했더니 잘 받아진다. 야호!
근데 도커 데스크탑 ui에서 image가 뜨지 않는다.. 빌드하면 뜬대매!
로컬 명령 프롬프트에서 docker images 하면 아무것도 없고 wsl 커맨드창에서 하면 나온다. 이 문제인가?
근데 그냥 되야하는 것 처럼 써져있는데… 다른사람들 창 봐보니 wsl에서 실행한 것 같다. $ 로 끝남
에휴 또 다른 블로그 보니 파워쉘에서 한다.
후.. 망할놈의 방화벽. 보안팀은 다 퇴근해서 방화벽 오픈도 바로 못한다.
다시 차분하게 생각해보자. 내 목표는 그냥 간단히 mysql을 띄우는거였다…. ㅠㅠ 지금이라도 서버 띄워서 해야되나 으앙너무빡쳐
wsl에서는 proxy가 작동하니, 도커 데스크탑을 버리기로 했다. 어찌됐든 서버만 띄우면 되지 뭐…. 안보여도 어쩔 수 없지……
하여, 도커 데스크탑은 사용 불가했고
wsl에서,
devfoxbox@PC:~$ docker pull mysql:latest
latest: Pulling from library/mysql
2c0a233485c3: Pull complete
cb5a6a8519b2: Pull complete
570d30cf82c5: Pull complete
a841bff36f3c: Pull complete
80ba30c57782: Pull complete
5e49e1f26961: Pull complete
ced670fc7f1c: Pull complete
0b9dc7ad7f03: Pull complete
cd0d5df9937b: Pull complete
1f87d67b89c6: Pull complete
Digest: sha256:0255b469f0135a0236d672d60e3154ae2f4538b146744966d96440318cc822c6
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
devfoxbox@PC:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 56a8c14e1404 2 months ago 603MB
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=rootpassword -d mysql:latest
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=rootpassword -p 3306:3306 -d mysql:latest
❗ chatgpt - 위 명령어에서 각 항목의 의미:
- -name mysql-container: 컨테이너 이름을 mysql-container로 설정
- e MYSQL_ROOT_PASSWORD=rootpassword: root 계정의 비밀번호를 rootpassword로 설정
- d: 컨테이너를 백그라운드에서 실행
- p: 이 옵션은 포트 포워딩을 설정
- 3306:3306: 첫 번째 3306은 호스트 머신(여기서는 Windows나 WSL)의 포트, 두 번째 3306은 컨테이너 내부의 포트를 지정
- 이 명령어는 호스트의 3306 포트를 컨테이너의 3306 포트에 매핑
- 즉, 도커 컨테이너에서 실행 중인 MySQL 서비스는 3306 포트에서 접근 가능하고, 이 포트가 호스트 시스템의 3306 포트와 연결되어 있어서 외부에서도 접속할 수 있게 돼.
- 3306:3306: 첫 번째 3306은 호스트 머신(여기서는 Windows나 WSL)의 포트, 두 번째 3306은 컨테이너 내부의 포트를 지정
- mysql:latest: 실행할 이미지 (최신 버전의 MySQL)
잘된다~ 로컬에서 실행도 잘된당
collation이 alpha랑 다르길래 바꿔서 실행해보려했으나… 설정잘못해서 켜지질 않음
빡쳐서 삭제 후 다시 띄우고 변경안하고 그대로 시작 ㅋㅋㅋㅋ
회고
# 회고에는 방화벽에 대한 짤막한 욕설과 설정의 어려움을 토로한 글을 적어두었다 ^^*
'Infra & DevOps' 카테고리의 다른 글
연쇄 pod evict 마 처치하기 (0) | 2025.01.29 |
---|---|
K8S의 Probe (Startup Probe, Readiness probe, Liveness probe) (2) | 2024.12.07 |