Docker가 먼가요? - 3. Docker 간단히 사용해보기

1. Docker 이미지 검색하기

$ docker search ubunutu

NAME                                    DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
arvindr226/ubunutu14.04-ssh             The Docker image for ssh in Ubuntu 14.04        1                                       [OK]
jpdc/ubunutu-apache-php-pgsql           Apache2, php5 and pgsql 9.3                     1                                       
jrlehtinen/ub14pfed                     Launches PingFed 9.0.2 in standalone mode on…   1                                       
csmanioto/pdi                           PDI With XRPD on Ubunutu 14                     0                                       
dawu415/ubunutu_java_buildpack_tools                                                    0                                       
gissehel/ubuntu-base                    Base for all my images created from an ubunu…   0                                       [OK]
waxzce/rust-1.7                         ubunutu based rust 1.7                          0                                       
v0rts/docker-ubuntu1604-ansible         Ubunutu 16.04 image used for application ans…   0                                       [OK]
...

2. 이미지 받아 오기

  • ubuntu 최신버전 받아오기
$ docker pull ubuntu:latest

3. 이미지 목록 확인하기

  • 다운로드 받은 이미지 목록 출력하기
$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              113a43faa138        5 days ago          81.2MB
hello-world         latest              e38bc07ac18e        2 months ago        1.85kB

4. docker 이미지로 컨테이너 실행하기

  • docker 이미지를 컨테이너로 생성한 뒤 Bash를 실행합니다.
  • -it : 옵션을 통해 docker 이미지 컨테이너의 bash 쉘을 실행 시킵니다.
    • -i : interactive
    • ‘-t’ : 가상 tty(터미널같은입력창) 할당
  • bash를 사용할 수있도록 실행합니다.
  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
$ docker run -it ubuntu /bin/bash
root@fefe911e20e7:/# 
  • 내부에서 ls 명령어를 입력해봅니다. 격리된 공간에서 ubuntu가 실행되었고 내부에서 실행이 가능해집니다.

5. docker 컨테이너 실행 확인

  • 커맨드 라인 창을 하나 더 실행하여 아래의 명령어를 입력합니다.
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
fefe911e20e7        ubuntu              "/bin/bash"         About a minute ago   Up About a minute                       sharp_varahamihira

6. 실행 중인 docker 정지 시키기

  • 실행 중인 docker 창은 두고 다른 창에서 아래의 명령 실행하기
  • sharp_varahamihiradocker ps에 나온 NAMES 항목이다.
  • docker가 컨테이너 실행 시 이름을 명시적으로 지정하지 않으면 임의의 이름을 생성한다.
  • docker stop <컨테이너 이름 또는 ID>
$ docker stop sharp_varahamihira
  • 실행 중 이던 화면은 아래와 같이 나온다.
  • docker 가 실행화면에서 exit 명령어를 입력하면 똑같은 효과가 생긴다.
root@fefe911e20e7:/# exit
$

7. 정지된 컨테이너 다시 실행하기

  • docker start <컨테이너 이름 또는 ID>
$ docker start sharp_varahamihira
  • 실행 확인
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
fefe911e20e7        ubuntu              "/bin/bash"         12 minutes ago      Up 18 seconds                           sharp_varahamihira

8. 실행 중 컨테이너에 접속하기

  • docker attach <컨테이너 이름 또는 ID>
$ docker attach sharp_varahamihira
  root@fefe911e20e7:/# 

9. 외부에서 컨테이너 안의 명령어 실행하기

  • docker exec <컨테이너 이름 또는 ID> 명령어
$ docker exec sharp_varahamihira echo "Hello Docker"
Hello Docker

10. 컨테이너 삭제 하기

  • docker rm <컨테이너 이름 또는 ID
  • 기본적으로 아래의 명령어는 실행이 정지된 상태에서만 유효하다.
$ docker rm sharp_varahamihira
  • 실행 중인 컨테이너의 경우 강제로 지우겠다는 옵션 -f 를 추가 해야한다.
$ docker rm -f sharp_varahamihira

11. 이미지 삭제 하기

  • docker rmi <이미지 이름>:<태그>
$ docker rmi ubuntu:latest
  • 삭제 확인
$ docker images

12. MySQL 서비스 올리기

  • -d 는 데몬으로 실행 옵션
  • -p 는 포트 연결 옵션 서버포트:컨테이너포트
  • -e 는 환경 변수
  • 외부에서 3307 포트로 접속이 가능하다.
$ docker run -d -p 3307:3306 --name mysql -e MYSQL_DATABASE=homestead -e MYSQL_USER=homestead -e MYSQL_PASSWORD=homestead -e MYSQL_ROOT_PASSWORD=qwer1234 mysql:5.7