컨테이너/도커

가동중인 도커 컨테이너 조작

비니화이팅 2022. 10. 18. 02:03

가동중인 도커 컨테이너 조작

가동 컨테이너 연결(docker container attach)

  • docker container attach [컨테이너ID]
    • ctrl+c : 연결한 컨테이너 종료
    • ctrl+p, ctrl+q : 연결한 컨테이너에서 분리
hbeen@DESKTOP-EDC39JU:~$ docker container attach centos1
[root@d7d783d0e237 /]#

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

  • docker container exec [옵션] [컨테이너ID] [실행할 명령] [인수]
    • 가동중인 컨테이너에서 새로운 프로세스를 실행
    • 백그라운드에서 실행되고 있는 컨테이너에 액세스하고 싶을 때 쉘이 작동하지 않는 경우는 attach로 명령 접수 불가 → exec 명령 사용
hbeen@DESKTOP-EDC39JU:~$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED       STATUS       PORTS     NAMES
b5b62df9e574   nginx     "/docker-entrypoint.…"   2 hours ago   Up 2 hours   80/tcp    sad_cannon
hbeen@DESKTOP-EDC39JU:~$ docker container exec -it sad_cannon /bin/bash
root@b5b62df9e574:/#

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

  • docker container top [컨테이너ID]
hbeen@DESKTOP-EDC39JU:~$ docker container top sad_cannon
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2633                2612                0                   05:19               ?                   00:00:00            nginx: master process nginx -g daemon off;
uuidd               2688                2633                0                   05:19               ?                   00:00:00            nginx: worker process

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

  • docker container port [컨테이너ID]
hbeen@DESKTOP-EDC39JU:~$ docker container run -d --name "webserver" -p 8080:80 nginx
7ead298d50134bd03f2121dd4408a4f6219e02352d009df2ede5b09f638d1266
hbeen@DESKTOP-EDC39JU:~$ docker container port webserver
80/tcp -> 0.0.0.0:8080

컨테이너의 이름 변경(docker container rename)

  • docker container rename [변경전] [변경후]
hbeen@DESKTOP-EDC39JU:~$ docker container rename webserver nginxserver
hbeen@DESKTOP-EDC39JU:~$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                  NAMES
7ead298d5013   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp   nginxserver

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

  • docker container cp [컨테이너ID:컨테이너 파일] [호스트 파일]
  • docker container cp [호스트 파일] [컨테이너ID:컨테이너 파일]
hbeen@DESKTOP-EDC39JU:~$ docker container cp nginxserver:/etc/nginx/nginx.conf /tmp/nginx.conf
hbeen@DESKTOP-EDC39JU:~$ ls -la /tmp
total 12
drwxrwxrwt  2 root  root  4096 Feb 13 17:34 .
drwxr-xr-x 20 root  root  4096 Feb 13 14:11 ..
-rw-r--r--  1 hbeen hbeen  643 Nov 24  2020 nginx.conf

컨테이너 조작의 차분 확인(docker container diff)

  • docker container diff [컨테이너ID]
    • 컨테이너가 이미지로부터 생성되었을 때와 달라진 점(차분)을 확인
hbeen@DESKTOP-EDC39JU:~$ docker container run -it --name "centos" centos
[root@7701372fec4b /]# useradd newuser
[root@7701372fec4b /]# exit
exit
hbeen@DESKTOP-EDC39JU:~$ docker container diff centos
C /var
C /var/log
C /var/log/lastlog
C /var/spool
C /var/spool/mail
A /var/spool/mail/newuser
C /etc
C /etc/shadow
A /etc/subgid-
A /etc/subuid-
C /etc/shadow-
C /etc/group
C /etc/subuid
C /etc/gshadow-
C /etc/passwd-
C /etc/group-
C /etc/gshadow
C /etc/passwd
C /etc/subgid
C /home
A /home/newuser
A /home/newuser/.bash_logout
A /home/newuser/.bash_profile
A /home/newuser/.bashrc
C /root
A /root/.bash_history
  • 모든 도커 컨테이너를 한 대의 호스트 머신(물리 머신)에서 작동시키는 일은 드물며, 시스템의 트래픽 증감이나 가용성 요건, 신뢰도 요건 등을 고려한 후에 여러 대의 호스트 머신으로 된 분산 환경을 구축하여 오케스트레이션 툴을 이용해 컨테이너를 관리하는 것이 일반적