유저를 docker 그룹에 넣기
sudo usermod -aG docker ${USER}
restart 명령으로 컨테이너 재시작하기
sudo service docker restart
search 명령으로 이미지 검색
sudo docker search ubuntu
ubuntu최신버전 docker 이미지 다운 받기
sudo docker pull ubuntu:latest
docker실행후, 컨테이너의 bash쉘에 연결
sudo docker run -i -t --name hello ubuntu /bin/bash
attach 명령으로 컨테이너에 접속하기
sudo docker attach hello
exec 명령으로 외부에서 컨테이너 안의 명령 실행하기
sudo docker exec hello echo "Hello World"
Hello World
stop 명령으로 컨테이너 정지하기
sudo docker stop hello
rm 명령으로 컨테이너 삭제하기
sudo docker rm hello
모든 컨테이너 목록을 출력합니다.
sudo docker ps -a
rmi 명령으로 이미지 삭제하기
sudo docker rmi ubuntu:latest
이미지 목록을 출력합니다.
sudo docker images
Dockerfile 작성하기
https://github.com/pyrasis/dockerbook/blob/master/Chapter04/Dockerfile
======================================================================
example/Dockerfile
======================================================================
FROM ubuntu:14.04
MAINTAINER Foo Bar <foo@bar.com>
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx
VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"]
WORKDIR /etc/nginx
CMD ["nginx"]
EXPOSE 80
EXPOSE 443
======================================================================
build 명령으로 이미지 생성하기
sudo docker build --tag hello:0.1 .
hello:0.1 이미지가 생성되었습니다. 이제 실행을 해봅니다.
sudo docker run --name hello-nginx -d -p 80:80 -v /root/data:/data hello:0.1
docker안의 nginx에 연결해 보기
http://localhost
======================================================================
cp 명령으로 파일 꺼내기
sudo docker cp hello-nginx:/etc/nginx/nginx.conf .
======================================================================
commit 명령으로 컨테이너의 변경사항을 이미지로 생성하기
sudo docker commit -a "Foo Bar <foo@bar.com>" -m "add hello.txt" hello-nginx hello:0.2
docker commit <옵션> <컨테이너 이름> <이미지 이름>:<태그> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.
======================================================================
diff 명령으로 컨테이너에서 변경된 파일 확인하기
sudo docker diff hello-nginx
A /data
C /run
A /run/nginx.pid
C /var/lib/nginx
A /var/lib/nginx/body
A /var/lib/nginx/fastcgi
A /var/lib/nginx/proxy
A /var/lib/nginx/scgi
A /var/lib/nginx/uwsgi
C /etc/nginx
A /etc/nginx/site-enabled
C /dev
C /dev/kmsg
======================================================================
inspect 명령으로 세부 정보 확인하기
sudo docker inspect hello-nginx
======================================================================
Docker 컨테이너 연결하기
$ sudo docker run --name db -d mongo
$ sudo docker run --name web -d -p 80:80 --link db:db nginx
docker run 명령에서 연결 옵션은 --link <컨테이너 이름>:<별칭> 형식입니다.
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3971618834cd nginx:latest nginx About a min Up About a m 0.0.0.0:80->80/tcp web
8d4031106c57 mongo:2.6 /usr/src/mongo/docke 4 minutes a Up 4 minutes 27017/tcp db,web/db
db 컨테이너와 web 컨테이너가 연결되었습니다. web/db라고 표시되는데 web 컨테이너에서 db 컨테이너에 접속할 수 있다는 것입니다.
이제 web 컨테이너 안에서 db:27017 주소로 db 컨테이너의 MongoDB에 접속할 수 있습니다.
mongodb://db:27017/exampledb
컨테이너 안에서 다른 컨테이너에 접속할 때는 <별칭>:<포트 번호> 형식으로 사용합니다.
docker inspect 명령으로 web 컨테이너의 세부정보에서 hosts파일 경로를 구해보면,
hosts파일에 db 컨테이너의 ip 주소가 추가된 것을 볼 수 있음
======================================================================
앰배서더를 사용해서, 서로 다른 서버에 있는 컨테이너들 간에 연결하기
나중에 서버 2대 쓸일 있을 때 확인해 보자