티스토리 뷰

여기 두 개의 링크가 있다. 하나는 모범 답안이고 다른 하나는 … 안알랴줌~

그냥 하면 되지!

MACOSX$ ssh core@192.168.xxx.xxx
COREOS$ uname -a
Linux localhost 3.15.5+ #2 SMP Wed Jul 16 02:42:54 UTC 2014 x86_64 Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz GenuineIntel GNU/Linux
COREOS$ cat /etc/lsb-release
DISTRIB_ID=CoreOS
DISTRIB_RELEASE=379.3.0
DISTRIB_CODENAME="Red Dog"
DISTRIB_DESCRIPTION="CoreOS 379.3.0" <--- 여기는 도커 호스트!
COREOS$ ssh ... <--- 난 누구? 여긴 어디? -_-;;;


이렇게 쉬울 리가 없는데?!

MACOSX$ docker run -t -i ubuntu /bin/bash
root@fad2a805c970:/# uname -a
Linux fad2a805c970 3.15.5+ #2 SMP Wed Jul 16 02:42:54 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root@fad2a805c970:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS" <--- 여기는 도커 컨테이너!
root@fad2a805c970:/# ^D
MACOSX$ docker ps
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
<--- 엉? 어디갔지 -_-?
MACOSX$ docker ps -a
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
fad2a805c970  ubuntu:latest  /bin/bash  25 seconds ago  Exited (0) About a minute ago  goofy_hawking
<--- 헐! 죽었네... -_-;;;

그렇다… 나는… 쉘을 열고 닫은게 아니라 아니라… ubuntu를 켰다 껐다…하고 있었던 거시었다 Orz



… (내가 하루 동안했던 삽질은 생략…) …

  • 컨테이너에서 sshd 띄우기
  • 컨테이너에서 screen 사용하기
  • 컨테이너에서 쉘스크립트로 이렇게 저렇게…. busy loop? Orz
  • 세상은 넓고… 삽질거리는 끝이 없다.

풀이 과정을 모르는 정답: nsenter와 친구들

When they start using Docker, people often ask: “How do I get inside my containers?” and people will tell them “Run an SSH server in your containers!” But, as you’ll discover in this post, you don’t need to run a SSHd daemon to get inside your containers. Well unless your container is an SSH server, of course!

대충 읽어보니... "니네들이 도커 컨테이너에 ssh로 접속할라꼬 컨테이너마다 sshd를 띄우고 있다면 니네들은 분명 뻘짓하고 있는 거시여~"


그래서... 시키는 대로 해 봤다:

MACOSX$ ssh core@192.168.xxx.xxx
COREOX$ docker inspect fad2a805c970
...
"State": {
        "ExitCode": 0,
        "FinishedAt": "2014-07-24T07:22:21.017769958Z",
        "Paused": false,
        "Pid": 938, <--- 내가 원하는 거!!!
        "Running": true,
        "StartedAt": "2014-07-24T07:29:46.166857928Z"
},
...
COREOS$ sudo /usr/bin/nsenter --target 938 --mount --uts --ipc --net --pid
root@fad2a805c970:/# uname -a
Linux fad2a805c970 3.15.5+ #2 SMP Wed Jul 16 02:42:54 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root@fad2a805c970:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS" <--- 여기는 도커 컨테이너!
root@fad2a805c970:/# ^D
COREOS$ ^D
MACOSX$ docker ps
CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
fad2a805c970  ubuntu:latest  /bin/bash  1 seconds ago  Up 1 hours
<--- 살아있네!!
MACOSX$

매번 ssh, docker inspect, nsenter, … 하는게 귀찮으면, 스크립트로 만들… 귀찮… -_-;;;

내가 사용하는 CoreOS에는 nsenter가 기본으로 포함되어 있지만, 그렇지 않은 경우에는 배포판에 맞게 설치해야 한다. 자세한 내용은 https://github.com/jpetazzo/nsenter 를 참고하시길…



that's all folks

저작자 표시 동일 조건 변경 허락
신고
Creative Commons License
댓글
댓글쓰기 폼