nginx를 실행 했을 때 사용했던 옵션-d와 -p를 복습해보자.
docker run -d -p 80:80 nginx
-d는 데몬화를 의미하고 -p는 포트바인딩을 의미한다.
mysql을 연결하기 위해서는 -e, -v 옵션들을 더 알아야 한다. 차근차근 알아보자.
nginx와 마찬가지로 mysql도 위와 같은 방법으로 run을 하고 로그를 확인하면 다음과 같은 에러가 발생한다.
docker run -d -p 3306:3306 mysql
docker logs <컨테이너ID>
에러 메시지를 보면 환경변수에 ROOT 비밀번호를 설정해야 한다.
이때 알아야 하는 옵션이 -e이다. 여기서 e는 environment variable이다.
옵션 -e를 넣어서 다시 해보자.
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql
sudo apt install mysql-client-core-8.0
mysql -h 127.0.0.1 -u root -p
위와 같은 순서로 실행하면 mysql에 로그인이 가능하다.
이렇게 하면 문제점이 있다. 데이터를 저장하고 컨테이너를 삭제하면 데이터가 남아 있지 않는다. 컨테이너를 삭제해도 데이터를 사용하고 싶으면 -v, volume 옵션을 사용해야 한다. 즉, 상태관리가 필요한 데이터들은 따로 관리 하는 것이 좋다.
-v /home/user1/my-database:/var/lib/mysql
:을 기점으로 앞에는 호스트os에 저장하는 것이다. 뒤에는 컨테이너안 저장소로 생각하면 된다.
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -v /home/user1/my-database:/var/lib/mysql
mysql
이렇게 실행하면 컨테이너를 지우고 다시 만들어도 저장했던 데이터들이 남아있다. mount 개념이라고 생각하면 된다.
이때 불편한점이 또 있다.
호스트os에 저장했던 폴더를 마음대로 못지운다는 것이다. 물론 sudo를 이욯하면 가능하다.
docker에 volume에 my-database을 만들면 된다.
docker volume ls
docker volume create my-database
docker volume ls는 volume 목록을 확인하는 것이고, create는 volume을 생성하는 것이다. 이렇게 설정해 놓으면 다음과 같이 명령어를 변경할 수 있다.
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -v my-database:/var/lib/mysql mysql
my-databaase 폴더 위치가 궁금하면 다음과 같이 명령어를 실행하면 된다.
sudo ls -al /var/lib/docker/volumes
mysql을 연결하면서 2가지 옵셥을 더 배웠다. 정리해 보자.
docker run
-d 데몬화한다.
-p 포트바인딩 한다.
-e 환경변수를 정의한다.
-v 볼륨바인딩을 한다.(데이터를 유지하기 위해) - mount 개념
mysql
가상화, 리눅스, 도커에 대해 공부하면서 컴퓨터와 조금씩 더 친해지는 것 같다.
'새싹 한국정보보호산업협회 교육 > 교육' 카테고리의 다른 글
[python] 파이썬으로 구구단 가로 출력, 로또 번호 만들기 (0) | 2024.08.22 |
---|---|
[도커] python 이미지 만들고 실행하기(vscode Remote -SSH 이용) (0) | 2024.08.20 |
[도커] docker 에서 Nginx 실행하기 (0) | 2024.08.19 |
[도커] ubuntu22.04에서 docker 설치 후 hello world 출력하기 (0) | 2024.08.19 |
시스템보안 개론 (0) | 2024.08.06 |
댓글