ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 명령어 모음
    Development 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
Designed by Tistory.