안녕하세요. hia의 개발 story입니다.
지난번에는 직접 도커 이미지를 만들어서 컨테이너화 시켜보았습니다.
이번에는 도커 이미지 중 mariadb를 찾아서 image를 다운로드하여 컨테이너화 해보겠습니다.
docker search, pull, images 명령어
docker에서 이미지를 검색하기 위한 명령어는 docker search [검색어]입니다.
docker search mariadb
그러면 아래와 같이 여러가지의 mariadb 이미지들이 보입니다.
이 중에서 저는 가장 처음에 있는 mariadb를 이용하여 설치하려고 합니다.
받아올 이미지를 결정하였다면 이제 docker pull [이미지명]:[버전정보] 명령어를 입력합니다.
버전의 경우 생략가능하며 생략하게 되면 가장 최신 이미지를 받아오게 됩니다.
저는 가장 최신 버전의 이미지를 다운로드하도록 하겠습니다.
docker pull mariadb
아래의 명령어를 이용하여 이미지가 잘 다운로드 되었는지 확인할 수 있습니다.
docker images
docker run, ps, exec 명령어
이제 다운로드 받은 이미지를 컨테이너화 시킬 것입니다.
docker run 명령어를 이용하는데 이때 여러 옵션값이 있습니다.
-d : 백그라운드에서 실행
--name : 컨테이너 이름 설정
-p : 포트 설정( 로컬 환경에서의 포트:컨테이너 안에서의 포트 번호를 입력하면 됩니다. )
* 이해가 잘 안 될 수 있는데 예를 들어 mariadb의 기본 설정 포트는 3306이고 현재 로컬에서 3306 포트를 사용 중이라면
어쩔 수 없이 포트를 변경해주어야 합니다.
이때 포트를 3307:3306과 같이 지정해 주면 컨테이너 내부에서는 3306으로 로컬에서는 3307로 접근할 수 있게 됩니다.
이 부분은 더 공부해서 옵션에 대해서는 자세하게 적도록 하겠습니다.
- e : 기타 옵션 - mariadb의 루트 비밀번호를 지정
docker run -d --name [컨테이너이름] -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mariadb
run 명령어 실행 이후에 곧장 ps 명령어를 이용하여 생성된 컨테이너를 확인합니다.
docker ps
ps 명령어를 입력했을 때 아무것도 뜨지 않는다면 컨테이너화 된 mariadb가 실행 중이 않을 수 있습니다.
이때는 docker ps -a 명령어를 이용하여 모든 컨테이너를 불러와서 확인합니다.
불러온 컨테이너 아이디로 docker start [CONTAINER ID]를 시도해 보고 잘 되지 않는다면
docker rm [CONTAINER ID]로 컨테이너를 삭제한 후 다시 docker run을 실행해 보시기 바랍니다.
이제 설치된 mariadb에 접속하여 기본 데이터베이스와 사용자 아이디를 만들어주도록 하겠습니다.
이 때는 docker exec 명령어를 이용하여 실행합니다.
-it 옵션과 뒤에 /bin/bash를 입력하여 쉘 모드로 실행할 수 있습니다.
docker exec -it mariadb /bin/bash
아래는 실행이 되어 접속된 mariadb의 모습입니다.
bash 쉘에서 mariadb에 접속을 해보겠습니다.
password는 maradb 컨테이너를 생성할 때 설정한 비밀번호를 입력합니다.
mysql -u root -p
-- 데이터베이스 생성
-- CREATE DATABASE [데이터베이스이름];
CREATE DATABASE project;
-- 사용자 생성
-- CREATE USER '[사용자명]'@'[접속 url]' identified by '[비밀번호]';
-- 어디서나 접속 가능한 사용자 만들기
CREATE USER 'jenny'@'%' identified by '1111';
-- 사용자에게 특정 데이터베이스의 권한 부여
-- GRANT ALL PRIVILEGES ON [데이터베이스].* to '[사용자명]'@'[접속 url]';
GRANT ALL PRIVILEGES ON project.* to 'jenny'@'%';
이제 설치된 mariadb를 이용하여 작은 프로젝트를 하나 진행하려고 합니다.
docker에 대한 개념은 더 공부하고 정리해서 글로 적을 예정입니다.
'docker' 카테고리의 다른 글
[docker] docker로 이미지 만들기 (1) | 2023.01.09 |
---|