세로형
Recent Posts
Recent Comments
Link
04-20 00:01
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

도커란? 그리고 우분투(ubuntu)에 도커(docker)와 mysql 설치하기 본문

빅데이터

도커란? 그리고 우분투(ubuntu)에 도커(docker)와 mysql 설치하기

이수진의 블로그 2018. 11. 8. 13:16



요즘 도커가 정말 핫합니다.

정말정말 편하기 때문이고 강력하기 때문이죠

그 복잡한 설치 작업들을 그냥 딱! 해주니까 너무 좋은게 도커입니다.


도커는 2013년 3월 산타클라라에서 열린 pycon conference에서 solomon hykes가 the future of linux containers라는 세션을 발표하면서

이 세상에 알려졌습니다.

https://www.youtube.com/watch?v=wW9CAH9nSLs&feature=youtu.be

해당 영상입니다. 참고하시면 되겠습니다.


도커란?

도커라는 것은 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.

이 컨테이너는 서버에서 이야기 하는 것인데 다양한 프로그램, 환경 등을 컨테이너로 추상화하고 동일한 인터페이스를 제공해서 배포 및 관리를 매우 단순하게 해줍니다.


컨테이너란?


컨테이너는 격리된 공간에서 프로세스가 동작하는 기술입니다.

약간 가상화 기술이라고 생각하시면 됩니다. 하지만 가상화 기술과는 차이가 있습니다.


우리가 보통 '가상화'를 한다고 하면 보통 OS를 가상화 했습니다. 뭐 예를 들어 VMware나 VirtualBox같은 것들을 이용했겠죠?

근데 VM에서 하면 HostOS위에서 내가 설치하려는 전체 OS를 설치하기 때문에 무겁고 느립니다. 그리고 메모리, CPU 코어 등 손실이 발생하게 되죠.



반면에 도커는 docker engine위에 application이 올라가있습니다. 즉 host os 위에서 docker engine위에 컨테이너가 생성됩니다. 이렇게 하면 장점이 생기는데요. 일부분만 패키징 되기 때문에 용량이 크게 줄어듭니다. 그리고 프로세스 영역도 기존의 os와 공유합니다.

즉! 간단하게 보면 프로세스를 격리 시킨 형태이죠. 이 프로세스를 격리시킨 방법을 리눅스에서는 리눅스 컨테이너라고 불리웁니다. 이 각 프로세스는 서로 독립적이기에 영향을 미치지 않고 실행됩니다. low한 vm느낌이죠.


이미지(image)

도커에서 또 다른 중요한 개념이 이미지입니다.

이미지는 컨테이너를 실행시키는 파일 및 설정 값등을 포함하고 있는 것을 뜻합니다. 그렇기에 상태값을 가지지 않고 변하지 않습니다.


즉, 컨테이너는 이미지가 실행된 상태라고 생각하시면 되고 그 실생시키기 위한 파일이 이미지 입니다. 만약 뭐가 추가되거나 바뀌면 그건 이미지가 아니라 컨테이너에 저장됩니다. mysql 이미지는 dysql을 싱행하는데 필요한 파일 명령어 등을 가지고 있는 것이지요.


이런게 바로 도커라고 합니다.

이제 우분투(ubuntu)에서 설치해볼까요?

저는 ubuntu 16.04.1 버전에서 진행했습니다. 아마 다른 버전도 크게 다를것 없을거라 생각합니다.



이 명령어는 미처 캡처를 못해서..

curl -fsSL https://get.docker.com/ | sudo sh로 설치해주면 됩니다.

그럼 쭉쭉 설치가 될 것입니다.


근데 기본적으로 docker는 sudo 명령어를 받습니다.

그래서 매번 비밀번호를 요구하죠. 귀찮죠 이건?



sudo usermod -aG docker $USER

명령어를 통해서 현재 user를 docker에 추가시킵니다.

이렇게 하면 비밀번호를 굳이 물어보지 않습니다.



그리고 간단히 도커를 실행시켜 보죠

sudo service docker start를 통해 실행

sudo service docker status를 통해 상태를 확인합니다.

잘 실행이 되고 있네요



이제 mysql을 설치해볼까요??

현재 docker에다가 mysql을 연결시키려고 합니다.

sudo docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7

의 명령어를 칩니다.

그러면 먼저 local에서 이미지를 찾습니다. 그렇지 않으면 웹에서 받아오죠.

-p를 통해 포트를 지정하고 --name을 통해 이름을 설정합니다.



다 받아졌으면 sudo docker ps를 통해 확인해봅니다.

이건 현재 실행중인 도커 프로세스를 확인하는 것입니다.

그러면 저기 container id가 있네요?



sudo docker exec -it 컨테이너아이디 mysql -uroot

를 해보면 실행이 됩니다!


아마 다른 방법으로 실행도 될것입니다.

다른 방법은 차차 공부해봐야겠네요


반응형
그리드형
Comments