docker cheat sheet 2016
#
Unix / Linux#
디스크 공간확인, 드라이브 확인, 사이즈 확인mongodb container 무조건 지우기
다시 container 만들고 실행 하기
- -d --detch: Run container in background and print container ID
- --restart string: Restart policy to apply when a container exits (default "no")
- --publish list: Publish a container's port(s) to the host (default [])
- --volume list: Bind mount a volume (default [])
- --name string: Assign a name to the container
mongo
는 image namemongod
부터는 command
이때 주의할 점은 /data/db directory에 permission이 777로 설정되어야 한다. (TODO: mongodb data directory permission에 대해 더 알아볼것)
#
Docker에서 mongodb#
local(mac os)에서 여러개의 meteor app을 실행 할때 공유된 하나의 mongodb를 사용하기 위해 실제로 진행한 작업을 보면 다음과 같다.- docker를 설치하고 실행
- Install Docker
- 기존 container와 image는 다 정리했다. 이런거 좋아해.. 깨끗하게 다 지우고 막.. 그런거.. 그래서 날려먹은 데이터도 많고 파일도 많지만 그래도 버릇은 어쩔수 없어.
- mongodb는 깔려있다고 가정하고 없으면 깔아야 겠지.
- mongodb data가 저장될 directory 생성하고 permission은 777
- docker에 mongo를 실행할 수 있는 이미지와 container 추가하면서 volume도 바인딩. 이 명령의 실행으로 이미지도 만들어지고 컨테이너도 정상적으로 동작되어야 한다. 만일 Restaring(1) 등의 메시지가 보이는 경우
docker logs realmongo
명령을 실행해서 오류를 확인해야 한다.
- 여기서 한가지 중요한 것을 빠트렸다. 타임존을 설정하지 않으면 docker run 할때 UTC를 기본으로 사용하게된다.
- 이미 만들어진 이미지의 타임존을 바꾸는건 무지 어렵더라. 몰라서 그런건진 모르겠지만...
- 우선 docker image와 container를 생성하기 전에 docker가 실행될 머신의 타임존을 먼저 설정하자. 혹시 되어 있다면 패스~
- bash에서
tzselect
command를 통해 해당 지역을 설정하고 로그아웃/로그인 date
명령으로 타임존이 맞는지 확인 (사실 꼭 필요한 내용은 아니다.)- docker run 실행시 타임존 설정을 위해 -e 옵션으로 TZ환경값을
TZ='Asia/Seoul'
설정해준다.
기존 meteor의 mongodb에서 data를 dump, docker에 바인딩된 /data/db 폴더에 backup폴더를 만들고 그곳에...
새로만든 docker의 realmongo container에 restore
이제 meteor app 실행시 연결을 해 보자. execute
docker ps
command, see the port is 127.0.0.1:28017->27017/tcp, 따라서 MONGO_URL을 아래와 같이 해주면 연결된다.만약 meteor app 자체도 같은 docker에서 실행되고 있다면 docker 내부에서 바인딩된 ip를 사용해야 하는데 그 ip address를 알아내려면
docker inspect realmongo
로 실행 상태를 확인하고networksettings.bridge.network.IPAddress
를 사용하면 된다.
$ docker inspect 이미지이름|컨테이너이름
$ docker info
$ docker exec -it 명령
$ docker exec -it mongodb mongo myDatabase
docker exec -it mongodb bash
docker exec -it mongodb bash -c 'ls /data/db/backup'
여기서 만약 Error opening terminal: unknown.
이런 오류가 발생하면
export TERM=xterm
명령을 실행한다.
#
docker에서 mongodb backup & restoremup 배포시 기본 db 파일 경로는 /var/lib/mongodb 이다. 따라서, mongodump 명령을 아래와 같이 실행하면 백업 파일(bson) 이 저장되는 위치는 /var/lib/mongodb/backup/realgrid-forum
폴더가 된다.
새로만든 볼륨은 실제 경로와 docker image의 mongo db 경로가 /data/db 로 동일하다. 그렇게 만들었다. 따라서 배업된 위치에서 바로 압축을 풀어 실제 경로로 restore하면 된다.