Docker Container CLI
docker run [option] docker_image [command]
옵션 | 설명 |
---|
-i, --interactice | 대화식 모드 열기 |
-t | TTY(단말 디바이스 할당) |
-d, --detach=true | 백그라운드에서 컨테이너 실행하고 컨테이너 ID 등록 |
--name | 실행되는 컨테이너에 이름부여 (미 지정시 자동으로 부여 됨) |
--rm | 컨테이너 종료 시 자동으로 컨테이너 제거 |
--restart | 컨테이너 종료 시 적용 할 재시작 정책 지정 |
--env, -e | 컨테이너의 환경 변수 지정 (--env-file은 여러 환경 변수를 파일로 생성하여 지정하는 방법) |
-v, --volume=호스트경로:컨테이너경로 | 호스트 경로와 컨테이너 경로의 공유 볼륨 설정 (Bind mount) |
-h | 컨테이너 호스트명 지정 (미 지정시 컨테이너 ID가 호스트명으로 등록) |
-p [Host 포트]:[ Container 포트], --publish | 호스트 포트와 컨테이너 포트 연결 |
-P, --publish-all=[true / false] | 컨테이너 내부에 노출 된(expose) 포트를 호스트 임의의 포트에 게시 |
--workdir, -w | 컨테이너 내부의 작업 경로(directory) |
실습 환경 : UTM
VM 1대(k8s-master)로 진행
OS : Rocky Linux

js file, Dockerfile 생성
[root@k8s-master docker]
const http = require('http');
const server = http.createServer().listen(6060);
server.on('request', (req, res) => {
console.log('Your request arrived.');
res.write("HostName: " + process.env.HOSTNAME + "\n");
res.end();
});
server.on('connection', (socket) => {
console.log("Your Connected.");
});
[root@k8s-master docker]
FROM node:20-alpine3.17
RUN apk add --no-cache tini curl
WORKDIR /app
COPY runapp.js .
EXPOSE 6060
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["node", "runapp.js"]
docker build
[root@k8s-master docker]
[root@k8s-master docker]
noderun 1.0 2ddb250a6232 2 minutes ago 182MB
docker run
docker run -d --name=node-run -p 6060:6060 noderun:1.0
[root@k8s-master docker]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
763c05bf08b0 noderun:1.0 "/sbin/tini -- node …" About a minute ago Up About a minute 0.0.0.0:6060->6060/tcp, :::6060->6060/tcp node-run
[root@k8s-master docker]
[root@k8s-master docker]
HostName: 763c05bf08b0
docker top | port | stats
[root@k8s-master docker]
UID PID PPID C STIME TTY TIME CMD
root 13720 13698 0 21:55 ? 00:00:00 /sbin/tini -- node runapp.js
root 13740 13720 0 21:55 ? 00:00:00 node runapp.js
docker port
[root@k8s-master docker]
6060/tcp -> 0.0.0.0:6060
6060/tcp -> [::]:6060
docker stats
- 컨테이너 리소스 사용 통계에 대한 실시간 스트림 출력 (스트림 통계 비활성화 , --no-stream)
[root@k8s-master docker]
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
763c05bf08b0 node-run 0.00% 7.418MiB / 3.501GiB 0.21% 2.36kB / 1.04kB 0B / 0B 8
docker logs
[root@k8s-master docker]
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
docker [container] inspect
- 컨테이너 내부 구조 정보 확인
- kubectl describe 와 비슷한 느낌이다.
[root@k8s-master docker]
[
{
"Id": "763c05bf08b0f0dd83316b2fd5b8a85c715d2ffb67d2b70f526a2c8d52b3496e",
"Created": "2024-06-23T12:55:27.721165996Z",
"Path": "/sbin/tini",
"Args": [
"--",
"node",
"runapp.js"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 13720,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-06-23T12:55:28.036524563Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:f1d59eed1cac86972983802e27032bbc69080115c0269fd4ea3157f1833c4134",
"ResolvConfPath": "/var/lib/docker/containers/763c05bf08b0f0dd83316b2fd5b8a85c715d2ffb67d2b70f526a2c8d52b3496e/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/763c05bf08b0f0dd83316b2fd5b8a85c715d2ffb67d2b70f526a2c8d52b3496e/hostname",
"HostsPath": "/var/lib/docker/containers/763c05bf08b0f0dd83316b2fd5b8a85c715d2ffb67d2b70f526a2c8d52b3496e/hosts",
"LogPath": "/var/lib/docker/containers/763c05bf08b0f0dd83316b2fd5b8a85c715d2ffb67d2b70f526a2c8d52b3496e/763c05bf08b0f0dd83316b2fd5b8a85c715d2ffb67d2b70f526a2c8d52b3496e-json.log",
... 생략
docker cp | restart
[root@k8s-master docker]
const http = require('http');
const server = http.createServer().listen(6060);
server.on('request', (req, res) => {
console.log('wookja request arrived.');
res.write("HostName: " + process.env.HOSTNAME + "\n");
res.end();
});
server.on('connection', (socket) => {
console.log("wookja Connected.");
});
[root@k8s-master docker]
Successfully copied 2.05kB to node-run:/app/runapp.js
[root@k8s-master docker]
763c05bf08b0 noderun:1.0 "/sbin/tini -- node …" 26 minutes ago Up 26 minutes 0.0.0.0:6060->6060/tcp, :::6060->6060/tcp node-run
[root@k8s-master docker]
node-run
[root@k8s-master docker]
Your Connected.
Your request arrived.
Your Connected.
Your request arrived.
wookja Connected.
wookja request arrived.
docker exec [option][container] [command]
[root@k8s-master docker]
Unable to find image 'nginx:alpine' locally
... 생략
[root@k8s-master docker]
/
bin etc mnt run tmp
dev home opt sbin usr
docker-entrypoint.d lib proc srv var
docker-entrypoint.sh media root sys
docker stop & docker rm
docker stop [container]
docker rm [container]
docker images (image ls)
docker images
docker image ls
docker image rm
docker image rm [image]