거꾸로 바라본 세상
Published 2023. 4. 19. 09:29
6. Docker container CI-CD/Docker
반응형

Docker container

[컨테이너 라이프 사이클]

컨테이너 라이프 사이클

컨테이너 조작 기본 명령

  • 컨테이너 생성

이미지로부터 컨테이너를 생성한다. 이 명령을 수행하면 이미지에 포함될 리눅스의 디렉토리와 파일들의 스냅샷을 취한다.

$ docker container create 명령
  • 컨테이너 생성 및 시작

이미지로부터 컨테이너를 생성하고, 컨테이너 상에서 임의의 프로세스를 시작

$ docker container run [옵션] 이미지명[:태그명] [인수]
옵션 설명
--attach, -a 표준 입력(STDIN), 표준 출력(STDOUT), 표준 오류 출력(STDERR)에 attach
--cidfile 컨테이너 ID를 파일로 출력
--detach, -d 컨테이너를 생성하고 백그라운드에서 실행
--interactive, I 컨테이너의 표준입력을 연다
--tty, -t 단말기 디바이스 사용

백그라운드 실행 옵션

옵션 설명
--detach, -d 백그라운드에서 실헹
--user, -u 사용자명을 지정
--restart=[no OR on-failure OR on-failure:횟수n OR always OR unless-stopped] 명령의 실행 결과에 따라 재시작 하는 옵션
--rm 명령 실행 완료 후에 컨테이너를 자동으로 삭제

네트워크 설정 옵션

옵션 설명
--add-host=[호스트명:IP 주소] 컨테이너의 /etc/hosts에 호스트 명과 IP 주소 정의
--dns=[IP주소] 컨테이너용 DNS 서버의 IP주소 지정
--expose 명령의 실행 결과에 따라 재시작 하는 옵션
--mac-address=[MAC 주소] 명령 실행 완료 후에 컨테이너를 자동으로 삭제
--net=[bridge OR none OR container: OR host OR NETWORK] 컨테이너의 네트워크를 지정
--hostname, -h 컨테이너 자신의 호스트명을 지정
--publish, -p[호스트의 포트 번호]:[컨테이너의 포트 번호] 호스트와 컨테이너의 포트 매핑
--publish-all, -p 호스트의 임의의 포트를 컨테이너에 할당
  • 컨테이너 가동 확인
$ docker container stats [식별자]
  • 컨테이너 시작

정지중인 컨테이너를 시작하거나 할당된 컨테이너 식별자를 지정하여 컨테이너를 시작

$ docker container start [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 설명
--attach, -a 표준 출력, 오류 출력을 연다
--interactive, -l 컨테이너의 표준 입력을 연다
  • 컨테이너 종료

실행중인 컨테이너를 정지시킬때 사용

$ docker container stop [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 설명
--time, -t 컨테이너의 정지시간을 지정(기본값 10초)
  • 컨테이너 재시작할

컨테이너를 재시작할 때 사용한다.

$ docker container restart [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 설명
--time, -t 컨테이너의 재시작 시간을 지정(기본값 10초)
  • 컨테이너 삭제
$ docker container rm [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 설명
--force, -f 강제로 삭제
--volumes, -v 할당한 볼륨을 삭제
  • 컨테이너 중단 및 재개

실행중인 컨테이너의 프로세스를 모두 중단시킬 때 사용한다.

$ docker container pause <컨테이너 식별자>

## webserver인 컨테이너
$ docker container pause webserver
  • 컨테이너 재개
$ docker container unpause webserver

가동 컨테이너에서 프로세스 실행(docker container exec)

가동중인 컨에티너에서 새로운 프로세스를 실행할때 docker continaer exec명령을 사용한다.
예를들어 백그라운드에서 실행중인 컨테이너에 엑세스 하고 싶을 때 임의의 명령을 실행 할 수 있다.

$ docker container exec [옵션] <컨테이너 식별자> <실행할 명령> 인수

지정할 수 있는 옵션

옵션 설명
--detach, -d 백그라운드에서 실헹
--interactive, -i 컨테이너의 표준 입력을 연다.
--tty, -t tty(단말 디바이스)를 사용한다
--user, -u 사용자명을 지정

컨테이너에서 bash 실행

$ docker container exec -it webserver /bin/bash

'hello' echo명령 실행

$ docker container exec -it webserver /bin/echo 'hello'
hello

가동 컨테이너의 프로세스 확인(docker container top)

$ docker container top webserver
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                4328                4302                0                   08:41               ?                   00:00:00            nginx: master process nginx -g daemon off;
uuidd               4403                4328                0                   08:41               ?                   00:00:00            nginx: worker process
uuidd               4404                4328                0                   08:41               ?                   00:00:00            nginx: worker process
uuidd               4405                4328                0                   08:41               ?                   00:00:00            nginx: worker process

가동 컨테이너의 포트 전송 확인(docker container port)

실행되고 있는 프로세스가 전송되고 있는 포트 확인

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

컨테이너 안의 파일을 복사(docker container cp)

컨테이너 안의 파일을 호스트에 복사할 때 docker container cp 명령을 사용한다.

$ docker container cp <컨테이너 식별자>:<컨테이너 안의 파일 경로> <호스트의 디렉토리 경로>
$ docker container cp <호스트 파일> <컨테이너 식별자>:<컨테이너 안의 파일 경로>

webserver의 컨테이너 안에 있는 /etc/nginx/nginx.conf 파일을 /tmp/에 복사할 때

$ docker container cp webserver:/etc/nginx/nginx.conf /tmp/nginx.conf 

$ ls -al /tmp/nginx.conf
-rw-r--r--  1 pscheol  wheel  648  7 20 00:06 /tmp/nginx.conf

호스트 디렉토리에 있는 test.sh 파일을 webserver 컨테이너 /tmp 폴더에 복사

$ docker container cp container cp ./test.sh webserver:/tmp/test.sh

## 복사됬는지 확인
$ docker container exec -it webserver /bin/bash
root@f29c95b346af:/tmp# ls
test.sh

컨테이너 조작의 변경확인 (docker container diff)

컨테이너 안에서 어떤 조작을 했거나 이미지로부터 생성되었을 때 달라진 점을 확인하기 위한 명령어.

$ docker container diff webserver

C /run
A /run/nginx.pid
C /tmp
A /tmp/test.sh
C /root
A /root/.bash_history
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf

 

반응형
profile

거꾸로 바라본 세상

@란지에。

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!