
docker dit 옵션과 attach
저번 시간에 사용했던 docker run 명령어를 이용해서 우분투를 실행해보겠습니다.
docker run -d --name myubuntu ubuntu
이후 docker ps 명령어를 이용해서 프로세스를 찾아보면 실행한 myubuntu 프로세스가 실행되지 않는 것을 알 수 있습니다. 왜그럴까요?
이전에 실행했던 httpd 서버의 경우에는 OS 안에 아파치 서버가 실행중이라 데몬프로세스로 실행이 되었지만
ubuntu의 경우에는 단순 OS로 데몬프로세스가 존재하지 않기 때문에 실행이 되자마자 종료가 된 것입니다.
이 경우에는 -d 대신 -dit 를 붙여줍니다.
i는 인터렉션의 약자, t 는 터미널의 약자로 터미널모드로 상호작용 하겠다는 뜻입니다.
docker run -dit --name myubuntu ubuntu
위의 명령어를 실행하고 다시 docker ps 를 실행해보면 정상적으로 실행되는 것을 알 수 있습니다.

지금 컨테이너 설정에 적혀있는 COMMAND와 NAMES에 대해서 설명해드리겠습니다.
NAMES에 myubuntu로 설정을 했는데 나중에 다른 컨테이너를 실행할 때 --link 옵션을 통해서 둘이 같이 실행하기 위해서 설정해두었습니다.
COMMAND에 /bin/bash라고 설정되어 있는데 ubuntu 컨테이너안에 bash라는 쉘이 작동중이라는 뜻입니다. 이제부터는 host OS에서 터미널을 통해 bash에 명령을 실행하면서 직접 관리할 수 있습니다.

attach 에 들어오고 난 이후부터는 도커의 명령어를 입력하지 않고, 쉘의 명령어를 사용해서 제어하면 됩니다.
docker attach 컨테이너ID
docker exec 명령어 변경
1. OS(ubuntu)
docker run -dit ubuntu bash # it 옵션 필수
docker attach 컨테이너ID
2. while process(httpd)
docker run -d -p 8080:80 httpd
docker exec -it 컨테이너ID bash
httpd는 dit를 쓰고 안쓰고 차이가 없습니다. 어차피 bash모드로 실행하려면 exec -it 옵션을 사용해야 하기 때문입니다.
그 이유는 계속해서 언급하고 있는 OS안에 데몬 프로세스의 존재 때문이고, docker ps 명령어로 프로세스를 볼 때 COMMAND 옵션을 보면 httpd와 ubuntu(bash)의 설정코드가 다른 것을 알 수 있습니다.
docker volumn 옵션으로 폴더 연결하기
볼륨 옵션은 바로가기와 같은 기능을 제공합니다.
도커 파일을 추후에 사용하게 되면 COPY 옵션을 더 많이 사용하긴 하지만 알아두는 것이 좋겠죠?
volumn옵션은 컨테이너 안의 OS에 존재하는 폴더를 링크 삼아서 로컬에 있는 폴더와 연결을 시키는 건데요.
아래 명령어를 통해 실행을 합니다.
docker run -d -p 8080:80 -v c:\users\ssarm\webapp:/usr/local/apache2/htdocs httpd
로컬에 설정할 폴더를 지정해주고 : 이후에는 OS내부의 폴더를 지정해줍니다.
이제 로컬에 webapp 폴더에서 index.html 을 만들어서 작업을 하고 localhost:8080으로 접속하면 아래와 같이 바로 반영되는 모습을 볼 수 있습니다.

docker commit 이미지 굽기와 docker hub 업로드
- commit은 현재 실행되고 있는 이미지를 그대로 보존할때, 어떤 특정 이미지로 만들어 낼 때 사용합니다.
우선 도커 허브에 접속해서 repository를 하나 만들어줍니다.

그리고 ubuntu를 다운받고 실행해줍니다.
바로 터미널로 접근해서 스크립트 파일을 만들어 줄겁니다.
docker run -dit ubuntu ## 우분투 설치 및 실행
docker ps
docker attach 8dcb ## 우분투에 터미널로 접근
우분투에 터미널로 접근이 되었다면 apt update를 통해서 프로그램 갱신 후 vim 편집기를 설치해줍니다.
apt update ## apt 프로그램 갱신
apt install vim ## vim 편집기 다운로드
설치가 완료되면 home 폴더에 ubuntu 폴더를 만들고 hello 스크립트 파일을 생성합니다.
cd home
mkdir ubuntu ## ubuntu 폴더생성
vi hello ## hello 스크립트 파일 생성
스크립트 파일에 Hello world를 작성하고 exit 명령어로 우분투 터미널을 빠져나옵니다.
이렇게 빠져나오게 되면 컨테이너가 종료되게 되는데 ctrl + P 와 ctrl + Q를 누르면 실행된 채로 빠져나올 수 있습니다.
이제 작성한 이미지를 굽고 푸쉬도 해봅시다 ! ( git 하고 매우 비슷합니다.)
docker commit 컨테이너ID 도커허브ID/이미지이름:태그명 ## 이미지 굽기
docker images ## 구운 이미지 확인하기

이제 도커허브에 레포지토리로 이동해서 확인해보면 이미지가 정상적으로 푸쉬되어 있는 것을 확인할 수 있습니다.

이제 해당 주소를 이용해서 이미지를 다운로드 받으면 vi 편집기가 다운로드 되어 있는 우분투 이미지를 다운받을 수 있습니다.
docker run -dit kioplm0211/vim-ubuntu:1.0
출처
https://www.youtube.com/playlist?list=PL93mKxaRDidGMzIllhYKx1d6aMg6_5wW3
도커입문
www.youtube.com