앞에서 docker run 명령어를 이용하여 image 다운로드, container 생성, container 구동, container 의 console 연결까지 한번에 처리되는 것을 확인해 보았는데, 대부분은 해당 절차를 분리하여 수행하게 됩니다.
자, 그럼 시작해 봅시다.
1. image 다운로드
아래 명령어를 이용하여 docker image 를 다운로드 합니다.
$ sudo docker pull <repository:tag>
다운로드를 위해서 image 의 repository(저장소) 와 tag(태그) 로 다운로드가 가능합니다.
앞전에 ubuntu 의 경우는 repository 가 ubuntu tag 는 16.04 를 입력하여 다운로드했었습니다.
$ sudo docker pull ubuntu:16.04
다운로드가 완료되면, sudo docker images 명령어를 이용하여 다운로드된 image 목록을 확인할 수 있습니다.
dante2k@DANTE2K-GRAM-UBUNTU:~$ sudo docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
7b722c1070cd: Pull complete
5fbf74db61f1: Pull complete
ed41cb72e5c9: Pull complete
7ea47a67709e: Pull complete
Digest: sha256:e4a134999bea4abb4a27bc437e6118fdddfb172e1b9d683129b74d254af51675
Status: Downloaded newer image for ubuntu:16.04
dante2k@DANTE2K-GRAM-UBUNTU:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 7e87e2b3bf7a 4 days ago 117MB
dante2k@DANTE2K-GRAM-UBUNTU:~$
2. image 로 container 생성
아래 명령어를 이용하여 내려받은 docker image 를 기반으로 container 를 생성할 수 있습니다.
$ sudo docker create -i -t --name ubuntu1604 ubuntu:16.04
위 명령어를 좀 살펴보면, create 라는 명령어를 이용하여 생성할 수 있다는 것이 보이고,
container name 을 ubuntu1604 라는 문자열로 지정하고 있네요. (이름을 지정하지 않으면 docker 가 자동으로 이름을 랜덤하게 생성하여 적용합니다. 생성된 후 이름을 변경하고 싶은 경우 rename 명령어를 이용하여 변경할 수도 있습니다.)
그리고 마지막에 container 를 생성할 때 사용할 이미지를 지정하고 있습니다.
추가로 -i -t 는 terminal 연결을 위해서 부가적으로 추가하였습니다.
위 명령어를 입력하면 아래와 같이 container 가 생성됩니다.
dante2k@DANTE2K-GRAM-UBUNTU:~$ sudo docker create -i -t --name ubuntu1604 ubuntu:16.04
420165def7ccf7bc90ae16827894ade84f450dc07906cdaad26f1664ec0b43a5
dante2k@DANTE2K-GRAM-UBUNTU:~$ sudo docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
420165def7cc ubuntu:16.04 "/bin/bash" 8 seconds ago Created ubuntu1604
dante2k@DANTE2K-GRAM-UBUNTU:~$
3. 생성된 container start(구동) 하기
아래 명령어를 이용하여 생성된 docker container 를 구동할 수 있습니다.
$ sudo docker container start ubuntu1604
명령어를 보면 container 의 start 라는 명령어를 사용하여 구동하며, 뒤에 container name 를 적어서 특정 container 를 구동하라고 알려주고 있습니다.
위 명령어가 정상적으로 수행되면 아래와 같은 출력을 얻을 수 있습니다.
dante2k@DANTE2K-GRAM-UBUNTU:~$ sudo docker container start ubuntu1604
ubuntu1604
dante2k@DANTE2K-GRAM-UBUNTU:~$ sudo docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
420165def7cc ubuntu:16.04 "/bin/bash" About a minute ago Up 3 seconds ubuntu1604
dante2k@DANTE2K-GRAM-UBUNTU:~$
STATUS 가 'Created' 에서 'Up 구동시간' 으로 변경된 것을 확인할 ㅏ수 있습니다.
4. terminal 연결해보기
아래 명령어를 이용하여 container console 에 연결할 수 있습니다.
$ sudo docker attach ubuntu1604
연결에 해당하는 attach 명령어와 container name 을 적어서 접속을 시도합니다.
정상적으로 명령어가 처리되면 아래와 같이 콘솔에 연결됩니다.
dante2k@DANTE2K-GRAM-UBUNTU:~$ sudo docker attach ubuntu1604
root@420165def7cc:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@420165def7cc:/#
여기까지, image 다운로드, container 생성, 실행, terminal 연결까지 각각 분리하여 확인해 보았습니다.