Development
Docker 명령어 모음
건이두
2018. 11. 10. 12:06
728x90
유저를 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대 쓸일 있을 때 확인해 보자
728x90