-
항상 도커에 대한 동경? 이 있었다.
그냥 멋져 보였지만 늘 이론 영상을 보고 쉽게 포기했다.
하지만 이번엔 결과물을 만들어서 좋다. 중간중간 헤맸던 부분과 전체 적인 부분을 적겠다.
Docker란?
컨테이너를 활용해 가상화 플랫폼을 지원
2주차에 vm을 썼는데 요즘은 도커를 많이들 쓴다고 한다. 그래서 무조건 알아야 하는 도커를 사용하게 됐다.
vm과 목적은 같지만 엄청 간단하게 구현이 가능하다.
격리된 프로세스, os를 띄우지 않는다는 다른 점이 있다.
이미지: 실행파일 + 라이브러리
컨테이너: 이미지를 실행하면 컨테이너
이미지를 통해 db 등이 쉽게 설치 가능해져 여러 사람들이 같은 환경을 쉽게 만들어 개발 속도가 향상 됐다.
Docker설치
Docker에 mysql 설치하기
1. 이미지 조회
docker search mysql
kotematic에서 Docker CLI를 통해 입력하면 여러 mysql이 여러 개 보인다. centOS 용이나 여러 버전이 있는데 잘 모르니 가장 위에 있는 것을 사용하자.
2. 도커 이미지를 다운로드하자
docker pull mysql
위처럼 버전을 명시하지 않으면 최신 버전을 받게 된다. 버전 명시는 다음과 같다.
docker pull mysql:5.7
버전은 뒤에 ( : 버전)을 적어주면 된다. 버전은 docker hub에서 볼 수 있다.
3. 이미지로 컨테이너를 만들자
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name mysql_test mysql:5.7 --character-set-server=utf8 --collation-server=utf8_unicode_ci
출처:
https://cpdev.tistory.com/158
[하루하나]위 명령어를 통해 도커 이미지(mysql)를 통해 mysql_test라는 이름의 컨테이너를 만들었다. 버전은 5.7로
run : 도커 컨테이너 생성과 동시에 접속
-d : 컨테이너를 데몬 프로세스 형태로 실행하겠다.
-p 3306:3306 : 호스트의 3306 포트와 컨테이너의 3306 포트를 연결 , 포트 포워딩을 한다.
-e MYSQL_ROOT_PASSWORD=password : 컨테이너의 환경변수를 설정한다. root계정의 비밀번호를 password로 지정했다.
-name mysql_test mysql : mysql_test(컨테이너이름) mysql(이미지 이름)
docker ps -a
현재 있는 모든 컨테이너를 볼 수 있다. 상태도 볼 수 있다. up상태면 돌고 있는 중
이미 컨테이너를 만들었다면
docker start mysql_test
를 통해 컨테이너를 돌리고 exec를 통해 접속해야 한다. 끌 때는 stop
4. 파워쉘에서 컨테이너에 접속
docker exec -i -t mysql_test bash
-exec : 컨테이너 내부의 쉘을 사용할 수 있게 된다.
-i : 상호 입출력
-t : tty를 활성화해서 배쉬 쉘을 사용하도록 활성화
-it로 붙여 쓸 수 있다.
mysql의 bash쉘에 접속이 된다.
5.mysql 접속하기
위처럼 계속하면 컨테이너에 들어오게 되고 호스트와는 다른 세계이다.
여긴 리눅스로 되어있다. docker를 윈도우에서 깔 때 wsl2도 같이 깔았기에
mysql -u root -p
유저는 root로 접속하겠다는 거다.
password는 환경변수로 입력했던 비번을 입력하면 된다.
그럼 이제 사용하면 된다.
본인은 호스트 pc에도 mysql이 깔려 있어서 3306 포트를 바꿔서 진행했는데 오류가 나서
그냥 로컬에 있는 mysql의 포트 번호를 바꾸고 도커의 mysql을 3306으로 진행했다.
www.hanumoka.net/2018/04/29/docker-20180429-docker-install-mysql/
+아 그리고 컨테이너에는 처음에 nano도 없고 sudo명령어도 먹히지 않는다. 추가해 주자
일단 업데이트를 한번 해주고 다 다운 받음 된다.
apt-get update
apt-get install sudo
apt-get install nano컨테이너의 로케일도 변경하자
www.44bits.io/ko/post/setup_linux_locale_on_ubuntu_and_debian_container
Mysql에서 사용자 추가하기
먼저 userTable을 살펴보자
use mysql;
select * from user;그럼 현재의 유저들이 나온다.
1. 사용자 생성
이제 내가 사용할 사용자를 생성해 보자. 지금은 root로 접속해 있으니까
create user gisung identified by 'password'
gisung이라는 이름의 유저를 생성 비번은 password이다.
2. 사용자 권한 주기
외부 접근 권한을 부여하자
root는 외부에서 접근 가능해선 안되니 다른 유저는 가능해야 한다.
grant all privileges on *.* to 'gisung'@'%'; #모든 db에 접근이 가능하게
grant all privileges on DB이름.* 'gisung'@'%' ; # 이건 특정 db에만 접근이 가능하게 할 때% 뜻은 localhost를 제외한 모든 호스트를 뜻 한다.
GRANT ALL PRIVILEGES ON DB명. 테이블 TO 계정 아이디@host IDENTIFIED BY '비밀번호';
그럼 이제 mysql에 접속할 땐 gisung으로 접속하면 된다.3. mysql의 utf 설정해 주기
초기 설정이 lantin1이라서 한글이 깨지니 바꾸자
아 근데 이건 도커 컨테이너를 생성할 때 해야 한다. ㅎㅎ 좀 늦게 알아서 컨테이너를 지우고 다시 만들었다.
beanbroker.github.io/2019/07/07/docekr_encode/
4. 도커 실행 시 mysql 자동 실행되게
이건 mysql이 아닌 컨테이너에서 타이핑
sudo update-rc.d mysql defaults
이럼 컨테이너 재부팅 시 mysqld 자동실행
명령어 모음
도커 hub
'TIL' 카테고리의 다른 글
2021.01.31 기록장 (0) 2021.01.30 쉘 스크립트와 mysql (0) 2021.01.30 동기비동기, 스레드풀 (0) 2021.01.30 2021.01.30 기록장 (0) 2021.01.29 2021.01.29 기록장 (0) 2021.01.28