반응형
말랑Cow
IT
말랑Cow
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Linux (33)
    • Windows (6)
    • Network (7)
    • Hardware (10)
    • Zabbix (13)
    • python (9)
    • script (0)
    • docker (16)
    • NAS (1)
    • DB (3)
    • php (33)
    • jQuery (1)
    • 정보보안기사 (0)
    • Ajax (1)
    • Javascript (21)
    • DELL (0)
    • HPE (0)
    • Secui (0)
    • AWS (2)
    • Elastic (0)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 도커
  • 서버
  • 자바스크립트
  • jQuery
  • JavaScript
  • 네트워크
  • 모니터링
  • Shell
  • Linux
  • php
  • 리눅스
  • 자빅스
  • Python
  • docker
  • CentOS
  • bash
  • 파이썬
  • ZABBIX
  • php 객체
  • php 클래스
hELLO · Designed By 정상우.
말랑Cow

IT

docker

도커 컨테이너 다루기(1) - 생성/진입/삭제

2021. 4. 19. 09:30
반응형

도커를 편하게 다루기 위해 Kitematic 이라는 도구가 있지만 CLI 기준으로 정리한다.

(Windows, Mac, Linux 등 OS에 상관없이 도커의 CLI를 사용하는 방법은 전부 동일)

 

1. 컨테이너 생성


● 도커 엔진 버전 확인

[root@localhost ~]# docker -v
Docker version 20.10.6, build 370c289

도커는 다양한 기능이 빠르게 업데이트되고 새로운 버전이 배포되므로 사소한 버전차이로 중요한 기능을 사용하지 못 할 수도 있기 때문에 설치된 도커 엔진의 버전을 확인하는 것은 중요하다.

 

● 도커 컨테이너 생성

(1) docker run

[root@localhost ~]# docker run -i -t ubuntu:14.04
Unable to find image 'ubuntu:14.04' locally
14.04: Pulling from library/ubuntu
2e6e20c8e2e6: Pull complete 
0551a797c01d: Pull complete 
512123a864da: Pull complete 
Digest: sha256:4a8a6fa8810a3e01352981b35165b0b28403fe2a4e2535e315b23b4a69cd130a
Status: Downloaded newer image for ubuntu:14.04
root@aad16506e16e:/#

ubuntu:14.04 이미지가 로컬에 존재하지 않아 도커 중앙 이미지저장소인 도커 허브에서 자동으로 이미지 다운로드한다.

i 옵션 : 상호 입출력을 가능케 한다.

t 옵션 : tty를 활성화 하여 bash 쉘을 사용하도록 컨테이너를 설정한다.

 

위 두 옵션(-i -t) 중 하나라도 사용하지 않으면 쉘 환경을 정상적으로 이용할 수 없다.

 

run 명령으로 컨테이너를 생성하면 생성 및 실행과 동시에 컨테이너 내부로 들어온다.

컨테이너에서 기본 사용자는 root가 되고 호스트이름은 무작위 16진수 해시값(해당 호스트의 고유 ID)이 된다.

 

(2) docker create

[root@localhost ~]# docker create -i -t --name socentos centos:7
1f799c0834f7a71e67070f2eed6e928b65b2726102178aee9f99611b2ee719bc

컨테이너 생성 시 run 말고도 create 명령어를 사용할 수 있다.

name 옵션 : 컨테이너의 이름을 설정한다.

 

create 명령 결과로 출력된 값(1f799....)은 무작위 16진수 해시값이며 컨테이너의 고유 ID가 된다.

이 해시값(고유 ID)은 docker inspect 명령어로 확인할 수 있다.

또한 run 과 달리 create 명령은 컨테이너 생성만 할 뿐 내부로 들어가지 않는다.

 

run 명령 : pull (이미지없을 시) => create => start => attach(-i -t 옵션 시)

              위 과정이 한꺼번에 포함된다.

 

create 명령 : pull(이미지없을 시) => create. 이 두가지 과정만 진행한다.

 

● 컨테이너 시작/진입

 

[root@localhost ~]# docker start socentos
socentos
[root@localhost ~]# docker attach socentos
[root@1f799c0834f7 /]#

socentos 라는 컨테이너를 start 로 시작했고 attach 로 진입하였다. (root@고유ID로 변경된 것 확인)

 

[root@localhost ~]# docker attach socentos
[root@1f799c0834f7 /]# read escape sequence
[root@localhost ~]# docker attach 1f7
[root@1f799c0834f7 /]# 

read escape sequence 는 ctrl+P,Q 로 빠져나와 출력되는 내용이다.

위 처럼 고유ID 의 해시값 초기 2~3문자만 입력하여 진입(attach)해도 가능하다.

 

● 컨테이너를 빠져나오는 방법

exit / ctrl+D : 컨테이너를 빠져나옴과 동시에 컨테이너를 정지시킴
ctrl+P, Q : 컨테이너를 정지하지 않고 빠져나옴 (애플리케이션 개발목적으로 컨테이너를 사용할 땐 이 방법을 많이 씀)

 

● 이미지 내려받기

[root@localhost ~]# docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
docker.io/library/centos:7

pull 명령은 도커 공식저장소에서 이미지를 다운받는다.

위 명령은 centos:7 이미지를 다운로드 한 것이다.

 

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       14.04     13b66b487594   2 weeks ago    197MB
centos       7         8652b9f0cb4c   5 months ago   204MB

위 명령으로 도커 엔진에 존재하는 이미지의 목록을 알 수 있다.

 

● 도커 컨테이너 목록 확인

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS                         PORTS     NAMES
1f799c0834f7   centos:7       "/bin/bash"   About an hour ago   Up About a minute                        socentos
aad16506e16e   ubuntu:14.04   "/bin/bash"   About an hour ago   Exited (0) About an hour ago             pensive_visvesvaraya

ps에 a 옵션을 주면 정지된 컨테이너 까지 포함되서 출력해준다.

CONTAINER ID : 컨테이너에 자동으로 할당되는 고유한 ID. 위에선 일부분만 출력되지만 [ docker inspect 컨테이너이름 | grep Id ] 로 검색하면 전체ID 확인 가능하다.
IMAGE : 컨테이너 생성 시 사용된 이미지
COMMAND : 컨테이너가 시작될 때 실행될 명령어
#docker run -i -t ubuntu:14.04 echo hello world! 라고 하면 컨테이너는 실행될 때 마다 echo hello world! 를 실행함. 하지만 이미지에 내장된 커맨드인 /bin/bash 를 덮어쓰기 때문에 상호 입출력이 가능한 쉘이 실행되지 않아 hello world! 만 출력하고 컨테이너가 종료된다.
CREATED : 컨테이너가 생성되고 난 뒤 흐른 시간
STATUS : 컨테이너의 상태( 실행중 : Up / 종료 : Exited / 일시중지 : Pause )
PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트를 나열
NAMES : 컨테이너의 고유한 이름. 컨테이너 생성 시 --name 옵션으로 이름을 설정하지 않으면 도커엔진이 임의로 형용사와 명사를 무작위로 조합해 이름을 설정

 

● 컨테이너 삭제

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED             STATUS                         PORTS     NAMES
1f799c0834f7   centos:7       "/bin/bash"   About an hour ago   Up 10 minutes                            socentos
aad16506e16e   ubuntu:14.04   "/bin/bash"   2 hours ago         Exited (0) About an hour ago             pensive_visvesvaraya
[root@localhost ~]# docker rm aad
aad
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED             STATUS          PORTS     NAMES
1f799c0834f7   centos:7   "/bin/bash"   About an hour ago   Up 10 minutes             socentos

한번 삭제한 컨테이너는 복구가 불가하다.

실행중인 컨테이너는 삭제할 수 없으믈 ㅗ정지시키거나 강제 옵션을 주어 삭제해야 한다.(rm -f)

 

docker container prune
docker stop $(docker ps -a -q) 한 다음 docker rm $(docker ps -a -q)

위 명령은 모든 컨테이너를 삭제하는 명령이다.

 

 

반응형

'docker' 카테고리의 다른 글

도커 컨테이너 다루기(4) - 도커 네트워크  (0) 2021.05.26
도커 컨테이너 다루기(3) - 도커 볼륨  (0) 2021.05.25
도커 컨테이너 다루기(2) - 컨테이너 외부 노출  (0) 2021.05.24
CentOS 7 + 도커 설치  (0) 2021.04.16
docker란?  (0) 2021.04.16
    'docker' 카테고리의 다른 글
    • 도커 컨테이너 다루기(3) - 도커 볼륨
    • 도커 컨테이너 다루기(2) - 컨테이너 외부 노출
    • CentOS 7 + 도커 설치
    • docker란?
    말랑Cow
    말랑Cow

    티스토리툴바