도커 컨테이너 생성 및 시작
# 컨테이너 생성 (이미지에 포함되는 디렉토리와 파일들의 스냅샷을 생성, 시작하진 않음)
$ 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/