일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Docker
- 리스트
- 김영한
- Java IO
- 자료구조
- 시작하세요 도커 & 쿠버네티스
- Kubernetes
- 알고리즘
- 도커
- 도커 엔진
- 자바 입출력 스트림
- Collection
- 컨테이너
- 자바 io 보조스트림
- 실전 자바 고급 1편
- 멀티 쓰레드
- Thread
- 자바
- java network
- 동시성
- 쿠버네티스
- 스레드 제어와 생명 주기
- 인프런
- 스레드
- LIST
- java socket
- container
- filewriter filereader
- java
- 쓰레드
- Today
- Total
쌩로그
[Docker] 시작하세요! 도커 & 쿠버네티스 - 02_도커 엔진_컨테이너 다루기(명령어 및 애플리케이션 구축) 본문
[Docker] 시작하세요! 도커 & 쿠버네티스 - 02_도커 엔진_컨테이너 다루기(명령어 및 애플리케이션 구축)
.쌩수. 2025. 2. 27. 09:02목차
- 포스팅 개요
- 본론
2-1. 도커 이미지
2-2. 도커 컨테이너 다루기
2-3. 컨테이너 외부로 노출
2-4. 컨테이너 애플리케이션 구축 - 요약
1. 포스팅 개요
이 포스팅은 위키북스 출판사의 '시작하세요! 도커/쿠버네티스'의 제 2장 도커 엔진
에 대한 부분을 학습하며 기록한 포스팅이다.
해당 파트를 통해 도커의 대략적인 명령어와 컨테이너에서 애플리케이션 구축에 대한 대략적인 개요를 살펴본다.
참고
윈도우를 사용한다면 커맨드(CMD)보단 WSL 을 사용하자.
2. 본론
2-1. 도커 이미지
도커 이미지 형식
- 형식 :
[저장소이름]/[이미지 이름]:[태그]
- 저장소 이름
- 이미지가 저장된 장소를 의미
- 생략하면 도커에서 기본적으로 제공하는 도커 허브의 이미지를 의미
- 이미지 이름
- 어떤 역할을 하는지 나타낸다.
- 생략 불가
- ex)
- Ubuntu : 우분투
- 태그
- 이미지의 버전 관리 혹인 리비전 관리에 사용됨.
- 생략하면
latest(최신)
을 나타낸다.
- 저장소 이름
※ 참고 : 리비전(Revision)
- 해당 대상이 변경되거나 수정된 이력을 나타내는 개념
- 도커 이미지에서는 특정 이미지가 빌드되거나 업데이트 된 시점의 상태를 식별하기 위한 버전정보
도커 엔진 버전 확인
$ docker -v
Docker version 27.3.1, build ce12230
도커 컨테이너 생성
아래는 우분투 생성 예시다.
이미지의 태그를 붙이지 않으면 latest
가 기본적으로 붙는다ㅣ.
$ docker run -i -t ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
de44b265507a: Pull complete
Digest: sha256:80dd3c3b9c6cecb9f1667e9290b3bc61b78c2678c02cbdae5f0fea92cc6734ab
Status: Downloaded newer image for ubuntu:latest
# 도커로 리눅스 Shell 진입
root@29e4b975a030:/#
run
은pull
,create
,start
,attach
의 모든 과정을 한번에 진행한다.- 옵션
- i : 해당 옵션이 있을 때 컨테이너와 상호작용 가능하다.
- t : TTY(=가상 터미널 환경)를 제공해준다. 그래서 생성한 컨테이너에서 쉘을 사용할 수 있게 된다.
- 도커 컨테이너 생성시
CONTAINER ID
는 무작위의 16진수 해시값으로 할당된다. - 해당 쉘에서 나오려면
ctrl + D
를 누르거나 혹은exit
를 입력하면 된다.- 그럼 정지 후 나오게 된다.
- 쉘을 정지하지 않고 나오려면,
ctrl + p,q
를 누르면 빠져나온다.(해보니깐 ctrl 누르고, P, Q 같이 눌러야됨.)
root@29e4b975a030:/# exit
# 빠져나옴.
$
※ 참고 : ctrl + P,Q 사용시 docker ps
를 하면 컨테이너가 표시된다.
즉 실행중이라는 증거다.
root@29e4b975a030:/#
# ctrl + P,Q 후
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3bec1b7944c4 ubuntu "/bin/bash" 6 minutes ago Up 6 minutes clever_hertz
도커 이미지 내려받기
$ docker pull [이미지]:[태그]
# centos 7
$ docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Downloading [==============================> ] 46.93MB/76.1MB
...(다운로드 후)
$ docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
이미지 목록 출력
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest b1d9df8ab815 2 weeks ago 78.1MB
centos 7 eeb6ee3f44bd 3 years ago 204MB
2-2. 도커 컨테이너 다루기
도커 컨테이너 생성(생성만 O , 실행 X)
$ docker create -i -t --name mycentos centos:7
--name
으로mycentos
를 지정했다.- 컨테이너의 이름이
mycentos
로 지정된다.
- 컨테이너의 이름이
docker create -it --name mycentos centos:7
0f76f788dae2554dda7f66d3f131fdee9aac6fbaf772163c36d52577a5ecface
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f76f788dae2 centos:7 "/bin/bash" 10 seconds ago Created mycentos
생성된 도커 컨테이너 실행
- 실행만 한다.
- 실행후 컨테이너로 들어가진 않는다.
$ docker start [컨테이너이름]
# 예시
$ docker start mycentos
- 시작하고 컨테이너 내부로 들어가려면
attach
명령어를 쓰면 된다. - 바로 진입한다.
$ docker attach mycentos
[root@0f76f788dae2 / ]#
※ 참고start
혹은 run
을 비롯한 모든 명령어는 컨테이너 이름 대신 ID를 사용할 수 있다.
ID는 무작위로 만들어진 16진수 해시값인데, 앞의 n자리(3자리, 4자리 모두 가능(단 중복 없을 때)) ID를 입력하면 된다.
컨테이너 확인
$ docker ps
- ps 만 하면 실행 중인 컨테이너만 확인할 수 있다.
- 모든 컨테이너를 확인하려면 속성
a
를 붙이면 된다.
$ docker ps -a
ex
- 현재 컨테이너를 두 개 생성했다.
- 그 컨테이너들은 실행 중이 아니다.
- ps만 하면 아무것도 안 나온다.
a
속성을 붙이면 두 개 나온다.
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
## 나오지 않던 컨테이너들이 나옴.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
33df3f54e4d4 ubuntu "/bin/bash" 3 minutes ago Exited (0) 3 minutes ago tender_keller
29e4b975a030 ubuntu "/bin/bash" 10 minutes ago Exited (0) 8 minutes ago laughing_borg
컨테이너 삭제
$ docker rm <컨테이너 이름 또는 ID>
위의 확인된 컨테이너를 통한 예시를 아래에서 보자.
$ docker rm tender_keller # 이름으로 지움.
tender_keller
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
29e4b975a030 ubuntu "/bin/bash" 12 minutes ago Exited (0) 10 minutes ago laughing_borg
$ docker rm 29e4
29e4
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
참고로 한 번 삭제한 컨테이너는 복구할 수 없으므로, 더 이상 사용하지 않는가를 충분히 고려한 후 컨테이너를 삭제해야 한다.
실행 중인 컨테이너는 삭제할 수 없다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f76f788dae2 centos:7 "/bin/bash" 6 weeks ago Up 23 seconds mycentos
$ docker rm 07f # 또는 docker rm mycentos
Error response from daemon: No such container: 07f
$ docker rm 0f7
Error response from daemon: cannot remove container "/mycentos": container is running: stop the container before removing or force remove
에러 로그는 컨테이너를 정지한 뒤 삭제하거나 강제로 삭제할 수 있는 옵션을 추가하라는 내용이다.
강제로 삭제하는 옵션은 -f
이다.
$ docker rm -f [컨테이너_이름 혹은 컨테이너_ID]
컨테이너 정지
$ docker stop [컨테이너_이름 혹은 컨테이너_ID]
일일이 지우기 귀찮아서 한 번에 삭제할 때
$ docker container prune
- 사용 예시는 아래와 같다.
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
3bec1b7944c4b80a03712a16c575d8423bb6d063469072acd2b6d658e926afa3
Total reclaimed space: 0B
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-a
, -q
옵션을 이용해서 삭제하기
-a
: 컨테이너의 상태와 관계 없이 모든 컨테이너를 가리킴-q
: 컨테이너의 ID만 출력
이 옵션을 이용해서 출력된 컨테이너 리스트를 변수로 이용해서 삭제한다.
먼저 정지를 하고, 삭제를 함.
$ docker stop $(docker ps -a -q)
$ docker rm $(docker ps -a -q)
2-3. 컨테이너 외부로 노출
컨테이너는 가상 머신처럼 가상 IP 주소를 할당받는다.
기본적으로 도커는 컨테이너에 172.17.0.x
의 IP를 순차적으로 할당한다.
컨테이너를 새롭개 생성한 후 ifconfig
명령어로 컨테이너의 네트워크 인터페이스를 확인한다.
$ docker run -i -t --name network_test 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:64483f3496c1373bfd55348e88694d1c4d0c9b660dee6bfef5e12f43b9933b30
Status: Downloaded newer image for ubuntu:14.04
root@b0ddf75cf40b:/# 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:9 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:1046 (1.0 KB) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
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)
eth0
부분의 inet addr:172.17.0.2
을 확인할 수 있다.
lo
인터페이스는 로컬 호스트를 뜻한다.
- 아무런 설정을 하지 않았다면 이 컨테이너는 외부에서 접근할 수 없다.
- 도커가 설치된 호스트에서만 접근할 수 있다.
- 예외로 Docker Desktop for Mac에서는 호스트에서 컨테이너 IP로의 접근이 불가능하다.(책에는 이렇게 나옴.)
따라서 외부에 컨테이너의 애플리케이션을 노출하려면 eth0
의 IP와 포트를 호스트의 IP와 포트에 바인딩해야 한다.
컨테이너에 아파치 웹 서버를 설치해서 외부에 노출해보자.
$ docker run -i -t --name mywebserver -p 8080:80 ubuntu:14.04
위에서 주목할 부분은 -p 8080:80
이다.
-p
: 컨테이너의 포트를 호스트의 포트와 바인딩해서 연결할 수 있다.- 입력 형식 :
[호스트의 포트]:[컨테이너의 포트]
- 예시 : 호스트의 777번 포트를 컨테이너의 80번 포트와 연결하려면 7777:80 과 같이 입력하면 된다.
여러 개의 포트를 외부에 개방하려면 -p
옵션을 여러 번 써서 설정하면 된다.
아래는 예시다.
$ docker run -i -t -p 3306:3306 -p 192.168.10.100:7777:80 ubuntu:14.04
참고-p 80
처럼도 입력은 가능하다. 하지만, 이렇게 입력하면 컨테이너의 80번 포트를 쓸 수 있는 호스트의 포트 중 하나와 연결한다.
그런데 컨테이너를 생성하는 시점에서 호스트의 어느 포트와 연결됐는지 알 수 없다.docker ps
명령어를 입력해 PORTS 항목을 확인해야 한다.
아파치 웹 서버 설치
# apt-get update
# apt-get install apache2 -y
# service apache2 start
도커에서 아파치 웹서버를 실행했고,
호스트의 8080 포트와 도커의 80 포트를 바인딩시켰다.
따라서 localhost:8080
으로 들어가면 도커 컨테이너의 80 포트와 매핑되어서 아파치 웹 서버로 접속해야 한다.
결과는?

잘나온다.localhost:8080
으로 들어가니 우분투에서 설치한 아파치 웹 서버의 기본 페이지가 나온다.
아파치 웹 서버가 설치된 것은 컨테이너 내부이므로 호스트에는 어떠한 영향도 받지 않는다.
참고로 컨테이너의 포트를 80 번이 아니라 다른 포트로 연결했다면, 아파치 서버로의 접근은 하지 못할 것이다.
아파치 서버가 80번 포트를 기본으로 사용하기 때문에, 호스트의 8080 포트와 컨테이너의 80포트의 바인딩이 이루어져서 아파치로 접근할 수 있었지, 그렇지 않았다면 해당 페이지는 나오지 않았을 것이다.
2-4. 컨테이너 애플리케이션 구축
컨테이너에 애플리케이션을 하나만 동작시키면 컨테이너 간의 독립성을 보장함과 동시에 애플리케이션의 버전 관리, 소스 코드 모듈화 등이 더욱 쉽다.

유형1 은 데이터베이스와 웹 서버를 하나의 컨테이너에 담은 것이고,
유형2 는 데이터베이스와 웹 서버를 각각의 컨테이너로 분리했는데,
유형2가 도커 커뮤니티나 공식 홈페이지에서 권장하는 구조다.
- 한 컨테이너에서 프로세스 하나만 실행하는 것이 도커의 철학이기도 하다.
호스트와 바인딩된 포트 확인하기
$ docker port [컨테이너_이름]
# 예시
$ docker port wordpress
80/tcp -> 0.0.0.0:64835
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab8848c7f8e5 wordpress "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:64835->80/tcp wordpress
wordpress 라는 이름을 가진 컨테이너 80/tcp 가 호스트의 64385 port와 바인딩되었다는 의미다.docker ps -a
로는 0.0.0.0:64835->80/tcp
처럼 나오는데, 64385 포트가 해당 컨테이너의 80/tcp와 바인딩되었다는 의미다.
옵션 -d
-i -t
가 컨테이너 내부로 진입하도록attach
가능한 상태로 설정한다면-d
는 Detached 모드로 컨테이너를 실행한다.- Detached 모드는 컨테이너를 백그라운드에서 동작하는 애플리케이션으로써 실행하도록 설정한다.
-d
옵션을 붙이고 우분투 이미지의 컨테이너를 실행하면 해당 컨테이너에 들어가지 않는다.- 왜냐하면 입출력이 없는 상태로 컨테이너를 (백그라운드에서) 실행한다.
- 컨테이너 내부에서 프로그램이 터미널을 차지하는 포그라운드(foreground)로 실행돼 사용자의 입력을 받지 않는다.
Detached
모드인 컨테이너는 반드시 컨테이너에서 프로그램이 실행돼야 하며, 포그라운드로 프로그램이 실행되지 않으면 컨테이너는 종료된다.
또한 -d
옵션을 붙이고 컨테이너를 실행하면 docker ps
명령어로는 확인할 수 없고, docker ps -a
로 확인가능하다.
$ docker run -d --name detach_test ubuntu:14.04
4ac9c7be1b3ac1ed720fdda9f20da81b9e049dc23e979a7b68309fc5f73c4201
$ docker ps # ubuntu 확인 불가
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab8848c7f8e5 wordpress "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 0.0.0.0:64835->80/tcp wordpress
0d1da24c0f54 mysql:5.7 "docker-entrypoint.s…" 14 minutes ago Up 14 minutes 3306/tcp, 33060/tcp wordpressdb
$ docker ps -a # ubuntu 확인 가능
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ac9c7be1b3a ubuntu:14.04 "/bin/bash" 11 seconds ago Exited (0) 10 seconds ago detach_test
ab8848c7f8e5 wordpress "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 0.0.0.0:64835->80/tcp wordpress
0d1da24c0f54 mysql:5.7 "docker-entrypoint.s…" 15 minutes ago Up 14 minutes 3306/tcp, 33060/tcp wordpressdb
c82a591bf57c ubuntu:14.04 "/bin/bash" 21 hours ago Exited (0) 21 hours ago mywebserver
이렇게 종료된 컨테이너를 docker start
명령어로 다시 시작시켜도 컨테이너 내부에 터미널을 차지하는 포그라운드로써 동작하는 프로그램이 없기 때문에 컨테이너는 시작되지 않는다.
Detached 모드
docker run -d
로 컨테이너를 실행하면, 컨테이너가 백그라운드에서 실행되어 터미널로부터 분리(detach)된다.- 즉, 사용자의 현재 터미널은 컨테이너가 실행을 시작하자마자 즉시 돌아오며, 터미널이 점유되지 않는다.
- 컨테이너의 표준 입출력은 현재 터미널과 직접 연결되어 있지 않기 때문에, 컨테이너가 출력하는 로그 등을 실시간으로 확인할 수 없다(별도로
docker logs
또는docker attach
사용).
mysql을 run -i -t
로 실행했다면, 포그라운드로 프로그램이 실행되는 것을 확인할 수 있다.
(MySQL 이미지가 컨테이너가 시작할 때 mysqld
(데몬)가 동작하도록 설정되어있다.)
이 상태에서는 상호 입출력이 불가능하고 프로그램이 포그라운드 모드로 동작하는 것을 지켜볼 수 있다.
따라서 이런 상황에서는 -d
옵션을 사용해서 컨테이너가 백그라운드에서 동작하게 해야한다.
옵션 - e
-e
옵션은 컨테이너 내부의 환경변수를 설정한다.- 컨테이너화된 애플리케이션은 환경변수에서 값을 가져와 쓰는 경우가 많으므로 자주 사용하는 옵션이다.
명령어 exec
exec
명령어를 사용하면 컨테이너 내부에서 명령어를 실행한 뒤 그 결괏값을 반환받을 수 있다.
$ docker exec [컨테이너_이름] [명령어]
# 예시
$ docker exec mycontainer ls -l
-d
로 실행한 컨테이너를attach
명령어로 컨테이너 내부에 들어간다 하더라도-d
옵션으로 생성했다면 의미가 없고, 컨테이너에서 실행 중인 프로그램의 로그 출력을 보게 될 뿐이다.exec
명령어를 이용하면 컨테이너 내부의 셀을 사용할 수 있다.
$ docker exec -i -t [컨테이너_이름] [셸]
# 예시
$ docker exec -i -t mycontainer /bin/bash
옵션 --link
- A 컨테이너에서 B 컨테이너로 접근하는 방법 중 가장 간단한 것은 NAT로 할당받은 내부 IP를 쓰는 것이다.
- B 컨테이너의 IP가 172.17.0.3이라면 A 컨테이너는 이 IP를 써서 B 컨테이너에 접근할 수 있다.
- 그러나 도커 엔진은 컨테이너에게 내부 IP를 172.17.0.2, 3, 4…와 같이 순차적으로 할당한다.
- 이는 컨테이너를 시작할 때마다 재할당하는 것이므로 매번 변경되는 컨테이너의 IP로 접근하기는 어렵다.
--link
옵션은 내부 IP를 알 필요 없이 항상 컨테이너에 별명(alias)으로 접근하도록 설정한다.
$ ... --link mycontainerdb:mysql # 예시
위와 같이 하면, 해당 옵션을 넣으면서 실행한 컨테이너가 mycontainter
라고 할 때 mycontainerdb
의 IP를 모르더라도, mysql
이라는 호스트명으로 접근할 수 있게 한다.
mycontainer
컨테이너에서 mysql
이라는 호스트 이름으로 요청을 전송하면, mycontainerdb
컨테이너의 내부 IP로 접근한다.
--link
옵션을 쓸 때--link
에 입력된 컨테이너가 실행 중이지 않거나 존재하지 않는다면--link
를 적용한 컨테이너 또한 실행할 수 없다.
다음과 같은 오류가 발생한다.
$ docker start wordpress
Error response from daemon: Cannot link to a non running container: /wordpressdb AS /wordpress/mysql
Error: failed to start containers: wordpress
wordpress
, wordpressdb
컨테이너를 링크했었다.wordpressdb
가 정지된 상태에서 위와 같은 에러가 발생했다.
이를 통해 --link
옵션이 컨테이너의 연결 뿐만 아니라, 컨테이너의 실행 순서의 의존성도 정의해주는 것을 확인할 수 있다.
※참고
--link
옵션은 컨테이너 간의 이름으로 서로를 찾을 수 있게 도와주지만, 현재deprecated
된 옵션이고, 추후 삭제될 수도 있다.이미 삭제 되었을지도...책 집필시기에서 조금 지난 시점이라..
- 도커 브리지 네트워크를 사용하면
--link
옵션과 동일한 기능을 더욱 손쉽게 사용할 수 있으므로 브리지 네트워크를 사용하는 것을 권장한다.
3. 요약
도커 이미지 형식
- 형식 :
[저장소이름]/[이미지 이름]:[태그]
- 저장소 이름
- 이미지가 저장된 장소를 의미
- 생략하면 도커에서 기본적으로 제공하는 도커 허브의 이미지를 의미
- 이미지 이름
- 어떤 역할을 하는지 나타낸다.
- 생략 불가
- ex)
- Ubuntu : 우분투
- 태그
- 이미지의 버전 관리 혹인 리비전 관리에 사용됨.
- 생략하면
latest(최신)
을 나타낸다.
- 저장소 이름
도커 명령어
# 엔진 버전 확인
$ docker v # 혹은 docker version
# 컨테이너 생성
$ docker create ...
# 컨테이너 내부로 들어가기
$ docker attach ...
# 컨테이너 실행 : `pull`, `create`, `start`, `attach`의 모든 과정을 한번에 진행한다.
$ docker run ...
# 컨테이너 목록 출력
$ docker ps
# 컨테이너 목록 전체 출력
$ docker ps -a
# 컨테이너 삭제
$ docker rm
# 컨테이너 정지
$ docker stop ..
# 컨테이너 한번에 지우기
$ docker container prune
# 이미지 내려받기
$ docker pull [이미지]:[태그]
# 이미지 목록 출력
$ docker images
컨테이너의 port와 호스트의 port를 바인딩할 때
-p
: 컨테이너의 포트를 호스트의 포트와 바인딩해서 연결할 수 있다.
- 입력 형식 :
[호스트의 포트]:[컨테이너의 포트]
호스트와 바인딩된 포트 확인하기
$ docker port [컨테이너_이름]
Detached 모드
docker run -d
로 컨테이너를 실행하면, 컨테이너가 백그라운드에서 실행되어 터미널로부터 분리(detach)된다.
exec 명령어
exec
명령어를 사용하면 컨테이너 내부에서 명령어를 실행한 뒤, 그 결괏값을 반환받을 수 있다.
$ docker exec [컨테이너_이름] [명령어]
# 예시
$ docker exec mycontainer ls -l
'Deploy > Docker' 카테고리의 다른 글
[Docker] 시작하세요! 도커 & 쿠버네티스 - 02_도커 엔진 - 컨테이너 자원 할당 제한 (0) | 2025.03.03 |
---|---|
[Docker] 시작하세요! 도커 & 쿠버네티스 - 02_도커 엔진 - 도커 컨네이너 로깅 (0) | 2025.03.03 |
[Docker] 시작하세요! 도커 & 쿠버네티스 - 02_도커 엔진 - 도커 네트워크 (1) | 2025.02.28 |
[Docker] 시작하세요! 도커 & 쿠버네티스 - 02_도커 엔진 - 도커 볼륨 (1) | 2025.02.27 |
[Docker] 시작하세요! 도커 & 쿠버네티스 - 01_도커란 (0) | 2025.02.27 |