도커 스터디 1일차
도커 스터디 1주차
2.2 도커 컨테이너 다루기
2.2.1 컨테이너 생성
# 도커 엔진의 버전을 확인
PS C:\Users\Playdata> docker -v
Docker version 20.10.12, build e91ed57
# 컨테이너 생성 명령어
PS C:\Users\Playdata> 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:60840958b25b5947b11d7a274274dc48ab32a2f5d18527f5dae2962b64269a3a
Status: Downloaded newer image for ubuntu:14.04
ubuntu:14.04는 컨테이너를 생성하기위한 이미지의 이름이며
-i -t옵션은 컨테이너와 상호(interactive) 입출력을 가능하게 한다.
이 두가지 옵션이 없을 경우 셸을 정상적으로 사용할 수 없습니다.
이유 : -i는 상호 입출력, -t는 활성화해서 배시(bash)셸을 사용하도록 컨테이너에서 설정
엔진이 존재하지 않으므로 도커 중앙 이미지 저장소인 도커 허브에서 자동으로 이미지를 내려받는다.
root@0d9a3f1e061d:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@0d9a3f1e061d:/# exit
exit
# exit or ctrl+d
컨테이너 내부에서 빠져나오면서 동시에 정지시키는 방법
- exit 말고 ctrl+D도 이용가능
컨테이너를 정지시키지 않고 빠져나오는 방법
Ctrl+P, Q -> 애플리케이션 개발 목적으로 만들어짐
컨테이너의 기본 사용자는 root고 @ 뒤에는 호스 트 이름이며 무작위 해쉬값이 생성되며 최대 16진수 헤시값이 생성됩니다.
# docker pull 이미지
PS C:\Users\Playdata> docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
# docker images - 이전에 내려받은 이미지의 목록을 보여줌
PS C:\Users\Playdata> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker/getting-started latest bd9a9f733898 2 weeks ago 28.8MB
centos 7 eeb6ee3f44bd 5 months ago 204MB
ubuntu 14.04 13b66b487594 11 months ago 197MB
# -name 옵션에는 컨테이너의 이름을 설정하여 pull과같은 명령어로 사용가능
PS C:\Users\Playdata> docker create -i -t --name mycentos centos:7
963a6e1e795a30e8eaeba12ed8c0ab6b55e9e4e2b20df03695f79a4ebd88bace
# inspect로 도커 아이디와 다른 특이 사항 확인 가능. or docker inspect 이미지이름 | grep Id
PS C:\Users\Playdata> docker inspect mycentos
[
{
"Id": "963a6e1e795a30e8eaeba12ed8c0ab6b55e9e4e2b20df03695f79a4ebd88bace",
-
도커 이미지를 내려받을땐 docker pull centos:7 처럼 사용한다.
# 컨테이너 시작 PS C:\Users\Playdata> docker start mycentos mycentos # 컨테이너 접속 PS C:\Users\Playdata> docker attach mycentos [root@963a6e1e795a /]#
2.2.2 컨테이너 목록 확인
# docker ps 명령어는 정지되지 않은 컨테이너만 출력한다. 정지된 컨테이너를 포함한 모든 컨테이너를 출력하려면 -a 작성
PS C:\Users\Playdata> docker ps(-a)
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
963a6e1e795a centos:7 "/bin/bash" 15 minutes ago Up 8 minutes mycentos
5e52d541c526 docker/getting-started "/docker-entrypoint.…" 39 minutes ago Up 39 minutes 0.0.0.0:80->80/tcp wonderful_mclean
# COMMAND : 커맨드는 컨테이너가 시작될 때 실행될 명령어입니다.
PS C:\> docker run -i -t ubuntu:14.04 echo hello world!
hello world!
#
- CONTAINER ID : 컨테이너에게 자동으로 할당되는 고유한 ID
- IMAGE : 컨테이너를 생성할 때 사용된 이미지의 이름
- COMMAND : 커맨드는 컨테이너가 시작될 때 실행될 명령어입니다. 커맨드는 대부분의 이미지에 미리 내장돼어있기 때문에 별도로 설정할 필요가 없습니다. 컨테이너가 시작될 때 /bin/bash 명령어가 실행됐으므로 상호 입출력이 가능한 셀 환경을 사용할 수 있다.
- CREATED : 컨테이너가 생성되고 난 뒤 흐른 시간
- STATUS : 컨테이너의 상태를 나타내며, 컨테이너가 실행 중임을 나타내는 'UP', 종료된 상태인 'Exited', 일시 중지된 상태인 'Pause' 등이 있다.
- PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트를 나열합니다.
- NAMES : 컨테이너의 고유한 이름입니다.
# 컨테이너 이름 확인하기
PS C:\> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f9c6dacb04 ubuntu:14.04 "echo hello world!" 28 minutes ago Exited (0) 28 minutes ago gallant_mendel
..
# 컨테이너 이름 바꾸기
PS C:\> docker rename gallant_mendel my_container
# 컨테이너 이름 바꼇는지 확인
PS C:\> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ef9c6dacb04 ubuntu:14.04 "echo hello world!" 29 minutes ago Exited (0) 29 minutes ago my_container
..
2.2.3 컨테이너 삭제
# 컨테이너 제거
PS C:\> docker rm my_container
my_container
PS C:\> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
963a6e1e795a centos:7 "/bin/bash" 2 hours ago Up About an hour mycentos
0d9a3f1e061d ubuntu:14.04 "/bin/bash" 2 hours ago Exited (0) 2 hours ago happy_jackson
5e52d541c526 docker/getting-started "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp wonderful_mclean
# docker rm mycentos
Error response from daemon: You cannot remove a running container 963a6e1e795a30e8eaeba12ed8c0ab6b55e9e4e2b20df03695f79a4ebd88bace. Stop the container before attempting removal or force remove
- 실행 중이므로 삭제할 수 없음
# docker stop mycentos
# docker rm mycentos
mycentos 제거 성공
# 두 가지 경우를 합쳐서 쓰는 용어
docker rm -f mycentos
# prune은 모든 컨테이너를 삭제할 수 있다.
PS C:\> docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
0d9a3f1e061d5ad93bb27a089b477689f3a383296954adf6ddc64317564d5828
Total reclaimed space: 8B
# docker ps 명령어의 -a옵션과 -q옵션을 조합해 컨테이너를 삭제할 수도 있습니다. -a는 컨테이너 상태와 관계 없이 모든 컨테이너를, -q는 컨테이너의 ID만 출력하는 역할
PS C:\> docker ps -a -q
5e52d541c526
# 컨테이너의 실행 상태와 관계없이 모든 컨테이너를 정지하고 삭제.
PS C:\> docker stop $(docker ps -a -q)
5e52d541c526
PS C:\> docker rm $(docker ps -a -q)
5e52d541c526
- 컨테이너를 삭제하고 확인하는 명령어를 입력해서 확인했습니다.
2.2.4 컨테이너를 외부에 노출
# 기본적으로 도커는 컨테이너에 172.17.0.x의 IP를 순차적으로 할당합니다. 컨테이너를 새롭게 생성한 후 ifconfig 명령어로 컨테이너의 네트워크 인터페이스를 확인
PS C:\> docker run -i -t --name network_test ubuntu:14.04
root@8b9b255f193d:/# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:736 (736.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@8b9b255f193d:/#
- 이전의 run 예제와 다른점은 -p 옵션을 추가하여 컨테이너의 포트를 호스트의 포트와 바인딩해 연결할 수 있게 설정합니다.[호스트의 포트]:[컨테이너의 포트]
시작하세요! 시작하세요! 도커/쿠버네티스 : 친절한 설명으로 쉽게 이해하는 컨테이너 관리[개정판]
Author And Source
이 문제에 관하여(도커 스터디 1일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@alsrb3272/도커-스터디-1일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)