-
2-1. 도커 명령어Docker 2018. 11. 13. 15:54
도커사용에 필요한 명령어를 정리한다.
docker run (컨테이너 생성 및 실행 )
docker run : docker pull, docker create, docker start, docker attach이 한번에 실행이 된다.
docker pull(이미지없을때) -> docker create -> docker start -> docker attach(-i -t옵션)
docker run -i -t ubuntu:14.04 docker images // 컨테이너 리스트 docker pull // 이미지가 없을경우 다운로드 docker create // 컨테이너 생성 docker start 컨테이너 // 컨테이너 실행 docker attach 컨테이너 // 컨테이너 명령어 실행 -i 옵션 // 상호 입출력 -t // tty활성화해서 bash 쉘 사용 컨트롤 + p + q // 프로세스는 종료하지 않고 콘솔만 빠져 나온다.
docker create (컨테이너 생성)
docker create -i -t --name myContainer centos:7 // --name 옵션을 통해 컨테이너 명칭 지정 docker inspect // 컨테이너 ID 확인
컨테이너 목록 확인
docker ps // 활성화된 컨테이너만 노출 docker ps -a // 모든 컨테이너 노출 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3e1c0ed5bfe ubuntu:latest "sleep 1000" 12 seconds ago 5 seconds ago 300:80 grave_kowalevski
- CONTAINER ID : 컨네이너 고유 hash id
- COMMAND : 컨테이너가 시작 될 떄 실행도리 명령어. 대부분 이미지에 미리 내장돼 있으며 별도의 커맨드를 설정하지 않아도 된다, 하지만 docker run이나 create 명령어의 맨 끝에 입력해서 컨테이너를 생성할 때 덮어쓸 수 있다.
docker run -i -t ubuntu:14.04 echo hello world!
- CREATED : 컨테이너가 생성되고 흐른 시간
- STATUS : Up(실행중), Exited중단), Pause(일시중단)
- 컨테이너가 개방한 포트와 호스트에 연결한 포트
- NAMES : 컨테이너 고유한 이름으로 --name 옵션을 사용했을때 사용자 지정 이름을 사용할 수 있다.
docker rename beforeContainer afterContainer // docker rename
컨테이너 삭제
docker rm 컨테이너명 docker rm -f 컨테이너명 // 실행중인 컨테이너는 삭제 할 수 없기에 강제적으로 컨테이너를 삭제한다. docker stop // 컨테이너 정지 docker container prune // 컨테이너 전체 초기화
// -a : 전체, -q : 컨테이너 ID만 docker rm $(docker ps -a -q) // prune 대신 컨테이너 ps 리스트를 찾아 삭제함 docker stop $(docker ps -a -q)컨테이너 외부노출 (port)
컨테이너는 가상 머신과 마찬가지로 가상 IP을 할당 받는다.172.17.0.x의 IP를 순차적으로 할당한다.
기본적으로는 NAT의 eth0 인터페이스와 로컬 호스트인 lo 인터페이스가 있고 eh0의 IP/PORT와 컨테이너 IP/PORT을 바인딩 해야한다.docker run -p 8000:80 ubuntu:14.04 // 외부 8000을 컨테이너 내부 80포트로 바인딩 한다. docker run -p 8000:80 -p 9000:80 ubuntu:14.04 // 복수의 포트를 바인딩 할 수 있다.
컨테이너 애플리케이션 구축
doker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=db mysql:5.7 echo ${ENVIRONMENT_NAME} // 컨테이너 내부에서 환경변수를 확인 할 수 있다. docker run -d --name wordpress --link wordpressdb:mysql -p 80 wordpress
-e // 환경 변수 전달 -d // Detached 데몬 모드 (foreground) --link // NAT으로 할당 받은 IP로 컨테이너 끼리 접근 할 수 있지만 매번 바뀌는 IP는 불편하기 때문에 컨테이너의 Alias을 걸어 접근 할 수 있도록 한다 실행 중인 컨테이너만 link걸 수 있다.
docker exec -i -t wordpressdb /bin/bash // Detached모드에서도 쉘을 사용 할 수 있도록 한다. -i -t옵션으로 상호 입출력이 가능하다 docker exec wordpressdb ls // 실행후 결과만 output으로 받을 수 있다.
도커 볼륨
도커 이미지로 컨테이너를 생성하면 읽기 전용이 되며 컨테이너의 변경 사항만 별도로 저장해서 각 컨테이너의 정보를 보존한다.
하지만 컨테이너를 삭제 했을경우 저장하고 싶은 데이터도 함께 삭제 되기 때문에 볼륨이란것을 이용하게 된다.- 호스트와 볼륨 저장소를 공유하는 방법
- 볼륨 컨테이너를 활용하는 방법
- 도커가 관리하는 볼륨을 사용 하는 방법
호스트와 볼륭 저장소 공유
컨테이너의 파일이 호스트로 파일이 복사된다.이미 존재하는 디렉터리 데이터가 있을경우 컨터이너의 디렉터리 자체가 덮어쓰워진다.-v 옵션은 호스트 볼륨 공유는 호스트의 디렉터리를 컨테이너의 디렉터리에 마운트 한다.docker run -d --name wordpressdb -e MYSQL _ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress \ -v /home/wordpress:/var/lib/mysql \ mysql5:7 docker run -d -e WORDPRESS_DB_PASSWORD=password --name wordpress_hostvolumn --link wordpressdb:mysql -p wordpress
볼륨 컨테이너 이용 방법
볼륨을 사용하는 컨테이너를 다른 컨테이너와 공유하는 방법, --volumes-from옵션을 설정하면 -v 또는 --volme 옵션을 적용한 컨테이너의 볼륨 디렉터리를 공유 할 수 있다.도커 볼륨
도커 자체에서 제공하는 볼륨 기능을 활용해 데이터를 보존할 수 있다. 컨테이너를 생성 하듯이 볼륨을 생성해서 사용한다.
docker colume create --name myvolume docker volume ls // 리스트확인 docker run -v myvolume:컨테이너의_공유_디렉토리
도커 네트워크
도커 컨테이너는 순차적으로 IP을 생성하며 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스를 호스트에 생성하며 이 인터페이스의 이름은 veth로 시작한다. 도커 엔진에 의해 자동으로 생성된다.컨테이너의 eth0 인터페이스는 호스트의 veth-- 라는 인터페이스와 연결됐으며 veth--인터페이스는 docker0 브리지와 바인딩돼 외부와 통신할 수 있다.- 브리지 네트워크
- 호스트 네트워크 : 호스트 네트워크을 그대로 사용
- 논 네트워크 : 사용하지 않음
- 컨테이너 네트워크 : 타 컨테이너의 네트워크을 사용
컨테이너 로깅
컨테이너 표준 출력 StdOut 과 에러 StdErr 로그를 별도의 메타데이터 파일로 저장하며 이를 확인하는 명령어를 제공한다.기본적으로 JSON현태로 도커 내부에 로그파일이 저장된다.위치 : cat /var/lib/docker/containers/${CONTAINER_ID}/${CONTAINER_ID}-json.log도커 데몬 시작시 --log-driver을 써서 로깅 드라이버를 변경 할 수 있다.docker logs mysql // 컨테이너 내부에서 출력을 보여주는 명령어 docker logs --tail mysql // 마지막 줄부터 보여 준다. docker logs --since 147465976 mysql // 특정 시간 이후부터 보여 준다. Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes) --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
syslog 로그
syslog로그는 유닉스 표준 로그로써 커널, 보안등 시스템과 관련된 로그, 애플리케이션의 로그등 다양한 로그를 수집 저장한다.
우분트 : /var/log/syslog
centos : /var/log/messages
journalctl -u docker.service 명령어로 위치 확인도 가능docker run -d --name conainerName --log-driver=syslog ubuntu:14.04
'Docker' 카테고리의 다른 글
1-2. 도커란? (0) 2018.11.11 1-1. 도커를 시작하기 위해 vm이란? (0) 2018.11.11