2019. 12. 24. 11:08ㆍ🔴 ETC/Docker
1. Docker for Mac 설치하기
https://docs.docker.com/docker-for-mac/install/
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
'🔴 ETC > Docker' 카테고리의 다른 글
docker vs virtual machine (0) | 2019.12.24 |
---|---|
docker container lifecycle (0) | 2019.12.24 |
docker란? (1) | 2019.12.24 |