TIL

Docker란?

Gisungcu 2021. 1. 30. 22:24

항상 도커에 대한 동경? 이 있었다.

그냥 멋져 보였지만 늘 이론 영상을 보고 쉽게 포기했다.

하지만 이번엔 결과물을 만들어서 좋다. 중간중간 헤맸던 부분과 전체 적인 부분을 적겠다.

 

Docker란?


컨테이너를 활용해 가상화 플랫폼을 지원

 

 

2주차에 vm을 썼는데 요즘은 도커를 많이들 쓴다고 한다. 그래서 무조건 알아야 하는 도커를 사용하게 됐다.

vm과 목적은 같지만 엄청 간단하게 구현이 가능하다.

격리된 프로세스, os를 띄우지 않는다는 다른 점이 있다.

 

이미지: 실행파일 + 라이브러리

컨테이너: 이미지를 실행하면 컨테이너

 

이미지를 통해 db 등이 쉽게 설치 가능해져 여러 사람들이 같은 환경을 쉽게 만들어 개발 속도가 향상 됐다.

 

Docker설치

goddaehee.tistory.com/251

 

[Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치)

[Docker (1)] window10 Docker 설치하기(윈도우 10 도커 설치) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ Window10 도커 설치 ] 입니다. : ) 도커 설치하기 ▶ 1. 도커란? 도커 설치와 관련된 포스팅 이기.

goddaehee.tistory.com

 

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/

 

Docker에서 mysql설치하고 접속해보기

###개발환경Windows 10 pro, Docker for Windwos Docker에 mysql 설치하기일단 docker의 kitematic을 열고 Docker CLI를 클릭하여 윈도우 파워쉘을 열고 Docker 명령어로 진행하겠다.(GUI를 사용할수도 있지만, 나는 터미

www.hanumoka.net

 

+아 그리고 컨테이너에는 처음에 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 자동실행

 

 

 

nickjoit.tistory.com/144

 

mysql 사용자추가/DB생성/권한부여

서버 관리를 하다보면 mysql 사용자 계정을 추가해 줄때가 있다. MySQL 접속 및 데이터 베이스 추가 # mysql -u root -p 사용자 계정을 추가하기 전에 먼저 현재 생성된 사용자 계정을 확인한다. mysql > use

nickjoit.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

명령어 모음

captcha.tistory.com/49

ratseno.tistory.com/88

 

Docker 명령어 정리

Docker 사용법 CentOS Docker는 OS의 자원을 사용하기 때문에 기본적으로 Root 사용자에서 명령어를 사용해야한다 1. search (image 검색) # docker search centos - Docker Hub로부터 사용가능한 image를 찾는 명..

captcha.tistory.com

도커 hub

hub.docker.com/_/mysql

 

mysql - Docker Hub

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

roqkffhwk.tistory.com/91

 

MySQL 대소문자 구분 안하기 - lower_case_table_names 변경

MySQL로 간혹가다 작업 도중 분명히 테이블이 존재하는데  Table '테이블명' doesn't exist 라는 문구가 나올때가 존재한다. 윈도우에서는 대부분 대소문자 구분없이 설치가 되지만, 간혹가다가 리눅

roqkffhwk.tistory.com

 

 

MySQL 대소문자 구분 안하기 - lower_case_table_names 변경

MySQL로 간혹가다 작업 도중 분명히 테이블이 존재하는데  Table '테이블명' doesn't exist 라는 문구가 나올때가 존재한다. 윈도우에서는 대부분 대소문자 구분없이 설치가 되지만, 간혹가다가 리눅

roqkffhwk.tistory.com