โป ์ด ๊ธ์ '๋์ปค ๊ต๊ณผ์' ์ฑ ๊ณผ ๊ต์ก์ ํตํด ๋ค์ ๋ด์ฉ, ๊ณต์ ๋ฌธ์๋ฅผ ํ ๋๋ก ์ ๋ฆฌํ์ต๋๋ค.
์ปจํ ์ด๋ ์คํํ๊ธฐ
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run
docker run ๋ช ๋ น์ด๋ ์ปจํ ์ด๋ ์์ ์ ํ์ํ๋ค๋ฉด ์ด๋ฏธ์ง๋ฅผ pullํ๊ณ ๋ช ๋ น์ด๋ฅผ ์ํํ๋ค.
์ฃผ์ ์ต์
Option | Description |
--name | ์ปจํ ์ด๋์ ์ด๋ฆ์ ์ง์ . |
-d, --detach | ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ. |
-e, --env | ํ๊ฒฝ ๋ณ์ ์ค์ . |
--env-file | ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ฅํ ํ์ผ๋ก ์ค์ . |
--expose | ํฌํธ ๋๋ ํฌํธ ๋ฒ์๋ฅผ ๋ ธ์ถ. |
-p, --publish | ํธ์คํธ์๊ฒ ์ปจํ ์ด๋ ํฌํธ๋ฅผ ๊ณต๊ฐ. |
--rm | ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๋ฉด ์๋์ผ๋ก ์ญ์ . |
-i, --interactive | STDIN์ ํ์ฑํ. |
-t, --tty | pseudo-TTY๋ฅผ ํ ๋น. |
-v, --volume | ๋ณผ๋ฅจ ์ค์ . |
์์ธํ ์ต์ ์ docker run | Docker Docs๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค.
Expose์ Publish ์ฐจ์ด์
- ๋ ๋ค ์ปจํ ์ด๋ ์ธ๋ถ ์ ๊ทผ์ ํ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ.
- expose๋ ๋์ผํ network๋ฅผ ์ฌ์ฉํ๋ ์ปจํ ์ด๋์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅ.
- publish๋ host์ ํฌํธ์ ๋ฐ์ธ๋ํ์ฌ, host ๋๋ ์ธ๋ถ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅ.
์ฃผ์์ฌํญ
- [COMMAND]๋ Entrypoint์ ์ถ๊ฐ ์ธ์๋ก ํ์ฉ๋ฉ๋๋ค.
COMMAND ์์
$ docker run ubuntu:22.04 /bin/bash -c "whoami && date"
Unable to find image 'ubuntu:22.04' locally
22.04: Pulling from library/ubuntu
6414378b6477: Pull complete
Digest: sha256:0e5e4a57c2499249aafc3b40fcd541e9a456aab7296681a3994d631587203f97
Status: Downloaded newer image for ubuntu:22.04
root # whoami ๋ช
๋ น์ด
Mon Oct 21 13:48:18 UTC 2024 # date ๋ช
๋ น์ด
--publish ์์
$ docker run -d -p 81:80 nginx:latest # 81์ด ์ธ๋ถ๋ก ๋
ธ์ถ๋๋ ํฌํธ
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
a480a496ba95: Pull complete
f3ace1b8ce45: Pull complete
11d6fdd0e8a7: Pull complete
f1091da6fd5c: Pull complete
40eea07b53d8: Pull complete
6476794e50f4: Pull complete
70850b3ec6b2: Pull complete
Digest: sha256:28402db69fec7c17e179ea87882667f1e054391138f77ffaf0c3eb388efc3ffb
Status: Downloaded newer image for nginx:latest
6737921148d546597b43ed1b4bc7c8157174be13bf942b1c99994cba4d17bf6b
$ curl localhost:81 # powershell ์ฌ์ฉ ์ ๋ช
๋ น์ด ์ถฉ๋๋ก ์ธํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฏ๋ก curl.exe๋ก ์คํ.
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
์ปจํ ์ด๋ ๋ชฉ๋ก ๋ณด๊ธฐ
# ์ ์ฒด
docker container ls [OPTIONS]
# ์ถ์ฝํ
docker container list
docker container ps
docker ps
์ปจํ ์ด๋ ๋ชฉ๋ก์ ๋ณด๋ ๋ช ๋ น์ด์ ๋๋ค.
์ฃผ์ ์ต์
Option | Description |
-a, --all | ์ํ์ ๊ด๊ณ์์ด ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ํ์. |
-f, --filter | ์ง์ ๋ ์กฐ๊ฑด์ ๋ง๋ ์ปจํ ์ด๋๋ง ํ์. |
-s, --size | ์ ์ฒด ํ์ผ ์ฌ์ด์ฆ๋ ํ๊ธฐ. |
์์ธํ ์ต์ ์ docker ps | Docker Docs์ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค.
์ปจํ ์ด๋ ๋ก๊ทธ ํ์ธํ๊ธฐ
docker container logs [OPTIONS] CONTAINER
docker logs
docker logs๋ ์คํ ์ ์กด์ฌํ๋ ๋ก๊ทธ๋ฅผ ์ผ๊ด ๊ฒ์ํ๋ ๋ช ๋ น์ด์ ๋๋ค.
์ฃผ์ ์ต์
Option | Default | Description |
-f, --follow | ๊ณ์ ๋ก๊ทธ ํ์. | |
-n, --tail | all | ๋ง์ง๋ง n๊ฐ์ ๋ก๊ทธ๋ฅผ ํ์. |
-t, --timestamps | timestamp๋ฅผ ํ๊ธฐ. | |
--since | ํน์ ์๊ฐ ์ดํ์ ๋ฐ์ํ ๋ก๊ทธ๋ง ํ์. | |
--until | ํน์ ์๊ฐ ์ด์ ์ ๋ฐ์ํ ๋ก๊ทธ๋ง ํ์. |
์์
$ docker logs was
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/10/21 14:24:01 [notice] 1#1: using the "epoll" event method
2024/10/21 14:24:01 [notice] 1#1: nginx/1.27.2
2024/10/21 14:24:01 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
2024/10/21 14:24:01 [notice] 1#1: OS: Linux 5.15.153.1-microsoft-standard-WSL2
2024/10/21 14:24:01 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/10/21 14:24:01 [notice] 1#1: start worker processes
2024/10/21 14:24:01 [notice] 1#1: start worker process 30
2024/10/21 14:24:01 [notice] 1#1: start worker process 31
2024/10/21 14:24:01 [notice] 1#1: start worker process 32
2024/10/21 14:24:01 [notice] 1#1: start worker process 33
์ปจํ ์ด๋ ์ ์ ๋ฐ ๋ช ๋ น์ด ์คํ
Attach
docker container attach [OPTIONS] CONTAINER
docker attach
ํ์ฌ ์คํ ์ค์ธ ์ปจํ ์ด๋์ ํฐ๋ฏธ๋์ STDIN, STDOUT, STDERR์ ์ ๊ทผํฉ๋๋ค.
ํด๋น ๋ช ๋ น์ด์ ์ต์ ์ docker container attach | Docker Docs๋ฅผ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.
์ฃผ์์ฌํญ
- ctrl+c๋ฅผ ํตํด ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ฒ ๋๋ฉด ์ปจํ ์ด๋๋ ์ข ๋ฃ๋จ.
- ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ์ง ์๊ณ ์ ์์ ์ข ๋ฃํ๊ธฐ ์ํด์๋ ctrl+p+q๋ฅผ ์ฌ์ฉํด์ผ ํจ.
Exec
docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker exec
docker exec๋ ์คํ ์ค์ธ ์ปจํ ์ด๋์์ ์ ๋ช ๋ น์ด๋ฅผ ์ํํ ์ ์๋ค.
์ฃผ์์ฌํญ
- ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๋์์๋ง ๋ช ๋ น์ด ์คํ ๊ฐ๋ฅ.
- exec๋ก ์คํํ ๋ช ๋ น์ ์ปจํ ์ด๋ ์ฌ์คํ ์ ์คํ๋์ง ์์.
- ์ผ๋ถ ์ปจํ ์ด๋๋ bash, sh์ ๊ฐ์ shell์ด ์์ ์ ์์. ex) Scratch ์ด๋ฏธ์ง, ...
- -it ์ต์ ์ด ์๋ค๋ฉด ์๊ฒฉ์ผ๋ก ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋จ.
- exec๋ก ์คํํ ๋ช ๋ น์ด๋ working Directory๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ๋๋ฏ๋ก ํ์ผ ์ฌ์ฉ ์ ์ฃผ์ ํ์.
$ docker exec was sh -c "pwd"
/
$ docker exec --workdir /bin was sh -c "pwd"
/bin
Attach์ Exec ์ฐจ์ด์
Attach | Exec | |
์ ๊ทผ ํฐ๋ฏธ๋ | ์ปจํ ์ด๋์ STDIN, STDOUT, STDERR | ์๋ก์ด process์ ํฐ๋ฏธ๋ |
์ ์ ์ข ๋ฃ ๋ฐฉ๋ฒ | ctrl + p + q | ctrl + c or ctrl + d(ctrl+c๋ก ๋ฐฐ์ ์ง๋ง ctrl+d๋ง ๋์) |
PID | 1 (๋ฉ์ธ ํ๋ก์ธ์ค) | != 1 |
์ปจํ ์ด๋ ์ข ๋ฃ & ์์
# ์ข
๋ฃ
docker container stop [OPTIONS] CONTAINER [CONTAINER...]
docker stop
# ์์
docker container start [OPTIONS] CONTAINER [CONTAINER...]
docker start
docker stop๊ณผ docker start์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.
docker container stop | Docker Docs
docker container start | Docker Docs
์ฃผ์์ฌํญ
- Dockerfile์ ํตํด ์คํ๋์ง ์์ ํ๋ก์ธ์ค๋ค์ ์ข ๋ฃ ํ ์ฌ์์ํ ๊ฒฝ์ฐ ์ด์๋์ง ์์.
์ปจํ ์ด๋ ์ค์ง & ์ฌ์คํ
# ์ค์ง
docker container pause CONTAINER [CONTAINER...]
docker pause
# ์ฌ์คํ
docker container unpause CONTAINER [CONTAINER...]
docker unpause
์ฃผ์์ฌํญ
- ์ฌ์คํํ๋ ๊ฒฝ์ฐ ์ค์ง๋์ด์๋ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์คํ๋จ.
์ปจํ ์ด๋ ์ญ์
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
docker container remove
docker rm
ํ๋ ์ด์์ ์ปจํ ์ด๋๋ฅผ ์ญ์ ํฉ๋๋ค.
docker rm $(docker ps -a -q -f status=exited)
์ ๋ช ๋ น์ด๋ ์ข ๋ฃ๋ ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ฃผ์์ต์
Option | Description |
-f, --force | SIGKILL์๊ทธ๋์ ์ฌ์ฉํ์ฌ ์คํ ์ค์ธ ์ปจํ ์ด๋๋ฅผ ์ญ์ . |
-v, --volumes | ์ปจํ ์ด๋์ anonymous volumes๋ ํจ๊ป ์ญ์ |
์์
$ docker stop was
was
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5556aad7335a nginx:latest "/docker-entrypoint.…" 39 minutes ago Exited (0) 2 seconds ago was
$ docker rm was
was
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME
์ปจํ ์ด๋ ๋ฆฌ์์ค ์ฌ์ฉ๋ ์กฐํ
docker container stats [OPTIONS] [CONTAINER...]
docker stats
docker stats๋ ์คํ ์ค์ธ ์ปจํ ์ด๋์ ๋ํ ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค.
๋ฐ์ดํฐ๋ฅผ ํ๋ ์ด์์ ํน์ ์ปจํ ์ด๋๋ก ์ ํํ๋ ค๋ฉด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์ปจํ ์ด๋ ์ด๋ฆ ๋๋ ID ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค.
์ค์ง๋ ์ปจํ ์ด๋๋ฅผ ์ง์ ํ ์๋ ์์ง๋ง ์ค์ง๋ ์ปจํ ์ด๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ์ง ์์ต๋๋ค.
์ฃผ์์ต์
Option | Description |
-a, --all | ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ํ์. |
--no-stream | ๊ฒฐ๊ณ ๋ฅผ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ง ์์. |
์์ธํ ๋ด์ฉ์ docker container stats | Docker Docs๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค.
์ด์์ผ๋ก ๋์ปค ์ปจํ ์ด๋ ๊ด๋ฆฌ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด ์ ๋ฆฌ๋ฅผ ๋ง์น๊ฒ ์ต๋๋ค.
๋ค์์ ๋์ปค ์ด๋ฏธ์ง ์์ฑ ๋ฐ ์ ๋ก๋์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
'Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
03 Docker ์ด๋ฏธ์ง ๊ด๋ฆฌ (1) | 2024.09.28 |
---|---|
02 Docker๋? (1) | 2024.09.28 |
01 Docker ์ค์นํ๊ธฐ (1) | 2024.09.28 |