프로필사진
[macOS] 도커 설치&실행, 이미지 pull, 포워딩&마운트

2019. 12. 24. 11:08🔴 ETC/Docker

300x250

1. Docker for Mac 설치하기

https://docs.docker.com/docker-for-mac/install/

 

Install Docker Desktop on Mac

To download Docker Desktop, go to Docker Hub and sign in with your Docker ID. Download from Docker Hub By downloading Docker Desktop, you agree to the terms of the...

docs.docker.com

2. 도커 설치 확인

$ docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:22:34 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.5
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.12
  Git commit:       633a0ea
  Built:            Wed Nov 13 07:29:19 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

이렇게 client, server 두개의 정보가 출력되면 된다!
도커는 하나의 실행파일이지만 실제로는 클라이언트 서버역할을 각각 할 수 있다.
도커 커맨드 명력어 입력 -> 도커 클라이언트가 받음 -> 도커 서버로 명령 전송 -> 결과 받아서 터미널 출력


3. mysql 이미지 pull하기

$ docker pull mysql:5.6

mysql 5.6버전이 필요했기에 해당 버전을 pull해서 mysql image를 받았다.

$ docker image ls

도커에 다운받은 이미지들 list를 보면 mysql이 잘 받아진 것을 확인 할 수 있다.


4. 컨테이너 실행하기

도커 실행 명령어:
docker run [options] 이미지이름[:태그][명령어][전달인자] 

$ docker run mysql:5.6

run 명령어를 사용하면 해당 이미지가 저장되어있는지 확인하고 없으면
pull한다음 컨테이너를 create한 뒤 start한다.

모든 컨테이너 목록 확인하기

$ docker ps -a

mysql 터미널 사용해보기

$ docker -it mysql:5.6 /bin/bash
- it - i + - t , 터미널 입력을 위한 옵션

5. 포워딩 & 마운트하기
= 내 로컬 pc와 컨테이너가 같은 곳을 바라보게 만드는 것

포트 포워딩 : 컨테이너 외부와 내부를 연결
마운트 : 호스트와 컨테이너의 디렉토리를 연결

이렇게 내 로컬 pc의 디렉토리와 컨테이너 내부의 디렉토리를 연결하면
혹여나 컨테이너를 삭제하더라도
mysql로 작업했던 데이터는 삭제되지 않고 내 로컬에 남아있게 된다.

또한 포트를 연결하면
도커 컨테이너의 포트번호를 모두 다 쓸 필요없이
정해준 포트번호로 사용하면 된다.

$ docker run -d --name=test-mysql -e MYSQL_ROOT_PASSWORD=’비밀번호입력’ -p 3306:3306 -v /storage/test-mysql/datadir:/var/lib/mysql mysql:5.6
- d detached mode, 백그라운드 모드
-- name 컨테이너 이름 설정
- e 컨테이너에서 사용할 환경변수 설정
- p 내부 포트 : 외부 포트, 포트 포워딩
- v 내부 dir : 외부 dir, 디렉토리 마운트

** 마운트를 하기 전에!!!

docker: Error response from daemon: Mounts denied: 
The path /storage/test-mysql/datadir
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

이런 에러를 피하기 위해서는 Docker > Preferences > file sharing에 디렉토리를 추가해줘야 한다.

 

실행중인 'test-mysql' 컨테이너에서 터미널 사용하기

$ docker exec -it test-mysql /bin/bash
- exec 실행 중인 컨테이너에서 명령어 실행

이렇게 한 다음, 'mysql -uroot -p' 명령어로 mysql를 실행해서 사용하면 된다.

'test-mysql' 컨테이너 삭제하기

$ docker rm -f test-mysql
rm 삭제
- f 강제로

그 외 자주 쓰는 명령어

docker start [options] 컨테이너 멈춰있는 컨테이너 실행
docker stop [options] 컨테이너 실행된 컨테이너 멈춤
docker restart [options] 컨테이너 실행된 컨테이너 다시 실행
docker stats [options] 컨테이너 컨테이너 상태 조회

참고:

https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

https://sung-studynote.tistory.com/66

https://www.slideshare.net/pyrasis/docker-fordummies-44424016

300x250

'🔴 ETC > Docker' 카테고리의 다른 글

docker vs virtual machine  (0) 2019.12.24
docker container lifecycle  (0) 2019.12.24
docker란?  (1) 2019.12.24