해당 포스팅은 사이드 프로젝트 진행 중 겪은 크고 작은 이슈들에 대한 기록입니다.
Image
라는 Immutable한 친구에 모두 담아서 이를 Conatiner
로 실행시켜 실제 로컬에 설치한 것처럼 원하는 Application을 호스트 OS에서 간편하게 가져다 쓸 수 있는 플랫폼이다. 공홈에서 설치하는 방법은 너무 간단하고 개인적으로 Mac인 이상 Terminal을 적극 활용하는 것이 좋아서 homebrew를 활용하여 설치 진행 예정.
Homebrew 설치는 Homebrew 홈페이지에 매우 친절하게 나와있다.
또한 brew로 설치하는 방법보다 Mac OS 자체에 Docker를 띄울 수 있는 brew cask를 이용.
brew install cask # cask 설치
# 완료 후
brek install --cask docker # Homebrew 2.6.0 버전 이후 사용 방식
docker search mariadb # docker search image_name (또는 docker hub 들어가서 직접 검색)
docker pull mariadb:10.6.10 # docker pull image_name:version (default: latest)
docker images # 설치된 images 리스트 출력됨
# run 이미지를 기반으로 새로운 컨테이너를 생성하고 이후의 cmd를 실행
# --name container_name
# -d 컨테이너를 백그라운드에서 실행
# -p host-port:container-port (호스트 3306 포트 연결 시, 컨테이너 3306 포트로 포워딩)
# --restart=always 도커가 실행되면 컨테이너도 항상 같이 실행
# -e 기타 환경설정 (environment)
# MYSQL_ROOT_PASSWORD=password DB root 사용자 초기 비밀번호 설정
# mariadb:10.6.10 컨테이너에 쓸 이미지 이름 (버전을 명시하지 않으면 latest로 동작함. latest가 없으면 이걸 설치하므로 주의)
docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb:10.6.10
# exec container_name 실행중인 컨테이너에서 이후의 cmd를 실행 (여기선 /bin/bash)
# -i 접근 권한 부여 (?) 이 옵션이 없으면 접속이 안 되고 막힘
# -t tty(TeleTYpewrite)를 열어줌 (그냥 텍스트 편집기 열어준다고 생각)
# /bin/bash 실행할 cmd 부분
# docker 컨테이너에서 bash shell을 열어줌
docker exec -it mariadb /bin/bash
mysql -u root -p
# 패스워드 입력 창에서 패스워드 입력 : 위에서 컨테이너 생성 시 root로 만들어둠
create database db_name # DB 생성
# IP 부분에 %가 들어가면 모든 IP에서 접속이 가능함
create user 'user_name'@'IP' identified by 'password'; # 유저 생성 ('' <- 이거 필수)
# grant 권한 종류 on db_name.table(*.* 사용시 모든 DB의 모든 테이블) to 'user_name'@'IP';
grant all privileges on db_name.* to 'user_name'@'IP'; # 권한 부여
flush privileges; # 권한 refresh
docker ps # 실행중인 컨테이너 출력
docker ps -a # 호스트 OS에 존재하는 모든 컨테이너 출력
docker images # 이미지 리스트 출력
docker rmi image_name # 이미지 삭제
docker stop container_name # 컨테이너 중지
docker start container_name # 컨테이너 시작
docker rm container_name # 컨테이너 삭제
brew install --cask sequel-pro
ssh -i [pem 키 위치] [EC2의 탄력적 IP주소]
cp [pem 키 절대 경로/pem키] ~/.ssh/
cd ~/.ssh/ # /.ssh/로 이동
ll # ll을 이용하여 파일 목록 확인하여 pem 파일이 존재하는지 체크
# 600의 의미
# 각 자리마다 자신 / 그룹 / 전체 권한을 의미
# 권한 종류 : 읽기 (4), 쓰기 (2), 실행(1)
# 즉 600이라면 자신에게 읽기 + 쓰기의 권한을 준다는 의미
chmod 600 ~/.ssh/[pem키] # pem키의 권한 변경
# 권한 변경 이후 ssh 구성 정보를 설정할 config 파일 생성
vim ~/.ssh/config
# vim에 들어왔다는 가정하여 들여쓰기 사용했음
# 아래 설정값 입력
Host [서비스 이름]
HostName [EC2의 탄력적 IP주소]
User ec2-user # EC2 Amazon Linux의 default 유저명 - OS마다 상이할 수 있음
IdentityFile ~/.ssh/[pem키]
# :wq로 저장 후 vim 종료
# config 파일은 실행 권한이 필요
chmod 700 ~/.ssh/config
ssh [config에 등록한 서비스 이름]