티스토리 뷰
반응형
참고:
1. 테스트 환경
- ec2 Instance 2 EA (ubuntu 18.04)
- docker version 20.10.2
- docker API version 1.41
- jq 1.5.1
2. docker.service 수정
- Instance IP 주소는 1.1.1.1, docker daemon용 포트는 33333으로 가정
- 다음과 같이 진행하여 기존 ExecStart를 주석처리하고 새 라인을 작성
root@ip-1-1-1-1:~# cd /lib/systemd/system
root@ip-1-1-1-1:/lib/systemd/system# ls docker*
docker.service docker.socket
root@ip-1-1-1-1:/lib/systemd/system# vi docker.service
# 생략
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:33333
# 후략
3. Docker daemon 재시작
- 재시작할 경우, 해당 인스턴스의 33333 포트로 Docker API에 접근이 가능하다.
root@ip-1-1-1-1:/lib/systemd/system# systemctl daemon-reload
root@ip-1-1-1-1:/lib/systemd/system# systemctl restart docker.service
root@ip-1-1-1-1:/lib/systemd/system# ps -ef | grep 33333
root 4315 1 0 16:39 ? 00:00:03 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H 0.0.0.0:33333
root@ip-1-1-1-1:/lib/systemd/system# curl localhost:33333
{"message":"page not found"}
4. API Call
- 기본적으로 curl --silent localhost:33333, POST 메소드는 curl -X POST --silent localhost:33333으로 접근하였다.
a). docker ps
- 온갖 정보가 다 나오므로, 보안에 주의해야할 것으로 보임!
root@ip-1-1-1-1:/lib/systemd/system# curl --silent localhost:33333/containers/json | jq '.[0]'
{
"Id": "baed~~~",
# 너무 길어서 생략
b). docker ps -a
root@ip-1-1-1-1:/lib/systemd/system# curl --silent localhost:33333/containers/json?all=true | jq '.[0]'
{
"Id": "baed~~~",
# 너무 길어서 생략
c). docker stop
- POST 메소드를 사용한다.
root@ip-1-1-1-1:/lib/systemd/system# curl --silent localhost:33333/containers/baed3ac2c1f1709d37793295bb38948e6ce2b1b169ca049afb74901211eaa457/json | jq -r '.State.Status'
running
root@ip-1-1-1-1:/lib/systemd/system# curl -X POST --silent localhost:33333/containers/baed3ac2c1f1709d37793295bb38948e6ce2b1b169ca049afb74901211eaa457/stop | jq -r '.'
root@ip-1-1-1-1:/lib/systemd/system# curl --silent localhost:33333/containers/baed3ac2c1f1709d37793295bb38948e6ce2b1b169ca049afb74901211eaa457/json | jq -r '.State.Status'
exited
d). docker start
- POST 메소드를 사용한다.
root@ip-1-1-1-1:/lib/systemd/system# curl -X POST --silent localhost:33333/containers/baed3ac2c1f1709d37793295bb38948e6ce2b1b169ca049afb74901211eaa457/start | jq -r '.'
root@ip-1-1-1-1:/lib/systemd/system# curl --silent localhost:33333/containers/baed3ac2c1f1709d37793295bb38948e6ce2b1b169ca049afb74901211eaa457/json | jq -r '.State.Status'
running
root@ip-1-1-1-1:/lib/systemd/system# curl --silent localhost:33333/containers/baed3ac2c1f1709d37793295bb38948e6ce2b1b169ca049afb74901211eaa457/json | jq -r '.State.Health.Status'
healthy
5. docker 명령어를 통한 외부 호출
- docker -H [IP]:[PORT] [명령어]
- 보안 그룹으로 2.2.2.2 인스턴스로부터의 1.1.1.1:33333 접근이 허용되어 있는 것으로 간주한다.
ubuntu@ip-2-2-2-2:~$ docker -H 1.1.1.1:33333 ps
CONTAINER ID IMAGE
baed~~~ some_container~~~
'Dev. > Docker' 카테고리의 다른 글
[Docker] docker build 중 COPY / ADD에서 특정 파일은 제외하기 (0) | 2021.10.18 |
---|---|
[Docker] m1 macbook no matching manifest for linux/arm64/v8 문제 (0) | 2021.08.05 |
[Docker] node.js Dockerfile 예시 (0) | 2021.06.16 |
[Docker] logging option (0) | 2021.03.02 |
[Docker] Graceful Shutdown in Docker (1) | 2021.01.11 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Docker
- shell
- Database
- eureka
- Gradle
- terraform
- dev
- etc
- Java
- Puppeteer
- pgloader
- Node.js
- JEST
- mysql
- IntelliJ
- javascript
- AWS
- Git
- kotlin
- 코딩테스트
- Linux
- postgresql
- react
- JPA
- jQuery
- hashicorp
- spring boot
- Vault
- Spring Cloud Config
- AWS IoT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함