2022년 2월 24일 목요일

[ Docker ] 명령어 ( container 관련 )


도커 컨테이너 생성 및 시작

# 컨테이너 생성 (이미지에 포함되는 디렉토리와 파일들의 스냅샷을 생성, 시작하진 않음)

$ docker create -name webserver nginx


# 컨테이너 생성 및 시작

$ docker run [-d:백그라운드 실행, -i:표준입력 열기, -t:tty 디바이스사용] webserver


# 컨테이너 생성 및 시작 후, 컨테이너에서 bash사용 가능한 대화모드

$ docker run -it --name "web" nginx /bin/bash


# 컨테이너 백그라운드로 실행 후 인수(ping명령어) 실행

$ docker run -d nginx -u root /bin/ping localhost (실행 후 컨테이너 종료)

$ docker run -d --rm nginx /bin/ping localhost (실행 후 컨테이너 삭제)


# 컨테이너 백그라운드 실행 인수 로그 확인

$ docker logs {container_id}


# 컨테이너 시작 

$ docker start webserver


# 컨테이너 중지

$ docker stop webserver


# 컨테이너 삭제

$ docker rm [-f:실행 중 컨테이너 강제 삭제] webserver


도커 컨테이너 네트워크

# 컨테이너 포트 맵핑

$ docker run -d -p 8080:80 nginx


# 컨테이너 dns 서버 지정

$ docker run -d --dns 192.168.1.100 nginx


# 컨테이너 호스트명 지정

$ docker run -h test.server --add-host test.client:192.168.1.2 nginx (/etc/hosts 를 확인)


# host os와 docker의 네트워크 연결을 bridge, --net 옵션 사용하여 변경사능

# 브릿지연결 | 네트워크x | 다른 컨테이너 네트워크 | 호스트OS 네트워크 | 사용자정의 네트워크

$ --net=[bridge | none | containser:<name | id> | host | NETWORK ]


도커 컨테이너 실행환경

# 자원을 지정하여 컨테이너 실행

# 옵션:  -c[cpu비율] -m[메모리] -v[호스트와 디렉토리공유]

$ docker run -c=512[기본비율 1024] -m=2g -v /user/home/:/usr/share/nginx/html nginx


# 환경변수 설정

$ docker run -it -e=env_list nginx /bin/bash


# 작업디렉토리 설정

# docker run -it -w=/my_home nginx /bin/bash


도커 컨테이너 조작

# 컨테이너 조회

$ docker ls [-a: 정지 중 인 컨테이너도 표시] [-f name:test : 이름으로 컨테이너 필터링]


# 컨테이너 상태 확인

$ docker stats webserver


# 실행 중인 컨테이너에 echo 실행

$ docker exec -it webserver /bin/echo "hello world"


# 실행 중 프로세스 확인

$ docker top webserver


# 컨테이너에서 프로세스가 전송되고 있는 포트 확인

$ docker port webserver
80/tcp -> 0.0.0.0:80


# 컨테이너 이름 변경

$ docker rename old_name new_name


# 컨테이너 안의 파일 복사

$ docker cp ./test.txt webserver:/tmp/test.txt


# 이미지 생성부터 컨테이너가 달라진 점(차분) 확인 [A:추가 D:삭제 C:수정]

$ docker diff webserver

C /run
A /run/nginx.pid
C /etc
C /etc/nginx
C /etc/nginx/conf.d


도커 컨테이너 추출

# 컨테이너로부터 이미지 작성

$ docker commit -a(작성자) "42Fire" -m(메세지) "nginx server" webserver 42Fire/nginx_web:v1

# 이미지 생성 확인

$ docker image inspect 42Fire/nginx_web:v1


# 컨테이너를 tar파일로 출력

$ docker export webserver > werb.tar

# tar파일로부터 이미지 작성

$ cat web.tar | docker import - 42Fire/webserver:v1


# 불필요 이미지/컨테이너 일괄 삭제

$ docker system prune -a(사용하지 않는 리소스 모두)


도커 볼륨과 마운트

참조 : https://www.daleseo.com/docker-volumes-bind-mounts/


댓글 없음:

댓글 쓰기