1) Container?
컨테이너란 하나의 격리된 프로세스 공간 이라고 보면 됩니다.
Host OS와 kernel을 공유하면서 이를 프로세스로 간주하여 격리된 환경에서 실행하는 개념
vmware와 같이 Host OS 위에 새로운 OS를 올려서 가동하는 가상머신 방식과 달리 OS끼리 서로 다르게 독립된 공간을 가지고 있는 부분이 아닌
Host와 kernel을 공유하는 방식으로 진행되기에 시스템 리소스 부담도 적고 퍼포먼스 (속도)가 빠른 편이며 자원 할당량 또한 적은게 장점
※ 시스템 리소스 (CPU / Memory) 등 리소스를 필요한 만큼만 사용하기에 자원 활용도면에서도 장점이 있다.
[테스트 환경] OS : CentOS Linux release 7.6.1810 (Core) docker version : 18.09.8 |
2. 컨테이너 생성
※ create 명령어와 run 명령어로 컨테이너 생성 시 차이점
create 명령어로 Container 생성 시 Container 생성만 될 뿐 내부로 집입하지는 않는다. (run 명령어와 다른점)
run 명령어로 Container 생성 시 Container 생성 후 내부로 진입 (attach 명령까지 같이 진행된다고 보면 된다.)
1) docker create
■ create 명령어 이용하여 Container 생성 [root@docker-test ~]# docker create -i -t --name createdocker ubuntu:18.04 Unable to find image 'ubuntu:18.04' locally 18.04: Pulling from library/ubuntu 0c5227665c11: Pull complete Digest: sha256:8aa9c2798215f99544d1ce7439ea9c3a6dfd82de607da1cec3a8a2fae005931b Status: Downloaded newer image for ubuntu:18.04 2af90109601c4f70e6a156ad89d77d92bcfcfb4d610d95f02180965dfd854508 |
※ 도커 이미지가 없음으로 도커 허브에서 이미지 다운로드 진행된다.
[도커 생성 시 필요 옵션]
[옵션]
-i : 상호 입출력을 가능하게 함
-t : tty 활성화하여 bash shell 사용 가능하도록 컨테이너 설정
--name : 컨테이너 이름 설정
※ i, t 옵션은 필수입니다. (둘중 하나만 해도 된다고 하긴 하는데 전 둘다 써요.)
옵션 안주면 shell 환경을 정상적으로 이용할 수 없음
Container 실행 및 진입 및 빠져나오기 (create)
■ 실행 [root@docker-test ~]# docker start createdocker createdocker ■ 접속 [root@docker-test ~]# docker attach createdocker root@2af90109601c:/# ※ createdocker 네임을 가진 Container 실행하였으며 attach 명령어로 컨테이너 내부로 접속하였다. ■Container빠져나오기 (Ctrl + Q or P) / exit, Ctrl + D root@2af90109601c:/# read escape sequence [root@docker-test ~]# ※ read escape sequence는 Ctrl + Q로 Container에서 빠져나올 시 프롬포트에 출력되는 내용 |
※ 빠져나올때 명령어 차이점
Ctrl + Q or P : 컨테이너를 정지하지 않고 빠져나옴
exit / Ctrl + D : 컨테이너를 정지하고 빠져나옴
2) docker run
■ run 명령어 이용하여 Container 생성 [root@docker-test ~]# docker run -i -t --name rundocker ubuntu:18.04 root@302e8f047669:/# [설명] create 명령어 테스트하면서 ubuntu 18.04 이미지가 있음으로 바로 생성되었다. 추가로 run 명령어에 경우 컨테이너 생성 후 바로 Container로 진입한다 |
3. docker 컨테이너 목록 확인
■ ps 에 a옵션을 주면 정지된 Container 까지 확인 가능 [root@docker-test ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 302e8f047669 ubuntu:18.04 "/bin/bash" 2 minutes ago Exited (0) 31 seconds ago rundocker 2af90109601c ubuntu:18.04 "/bin/bash" About an hour ago Exited (0) About an hour ago createdocker |
[옵션 설명]
CONTAINER ID : 컨테이너에 자동으로 할당되는 고유 ID다. "docker inspect 컨테이너이름 | grep ld"로 검색하면 전체 ID 확인 가능하다
IMAGE : 컨테이너 생성 시 사용된 이미지
COMMAND : 컨테이너가 시작될 때 실행될 명령어
CREATED : 컨테이너가 생성된 후 지난 시간
STATUS : 당연히 컨테이너 상태
PORTS : 컨테이너가 개방한 Port 및 HOST 나열
NAMES : 컨테이너에 고유한 이름 (--name 옵션으로 설정한 값 이며 미설정 시 docker에서 임의로 설정됨)
4. Container 삭제
※ createdocker Name을 가진 컨테이너 삭제를 해보자.
■ Container 목록 확인 [root@docker-test ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 302e8f047669 ubuntu:18.04 "/bin/bash" 17 hours ago Exited (0) 17 hours ago rundocker 2af90109601c ubuntu:18.04 "/bin/bash" 18 hours ago Exited (0) 18 hours ago createdocker ■ Container 삭제 [root@docker-test ~]# docker rm 2af90109601c 2af90109601c ■ Container 삭제 확인 [root@docker-test ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 302e8f047669 ubuntu:18.04 "/bin/bash" 17 hours ago Exited (0) 17 hours ago rundocker |
명령어 : docker rm ContainerID
당연한 소리겠지만 삭제된 Container는 복구가 불가능하다.
실행중인 Container는 rm 명령어로 삭제가 불가함으로 정지 후 삭제하거나 rm -f 옵션을 주어 삭제를 진행하여야 한다.
추가로 빠진 부분이 있다면 댓글 주세요~!
'Cloud or container > Docker' 카테고리의 다른 글
[Docker] Centos7 Docker 설치하기 (1) (0) | 2022.12.15 |
---|
댓글