Docker의 명령은 docker run
, docker push
와 같이 Docker <명령>
형식이며, 항상 root 권한으로 실행해야 합니다.
Docker는 Docker Hub을 통해 이미지를 공유하는 생테계가 구축되어 있습니다.
유명 리눅스 배포판, 오픈 소스 프로젝트(Redis, Nginx 등)의 Docker 이미지는 모두 Docker Hub에서 구할 수 있습니다.
Docker Hub에서 우분투 리눅스 이미지를 받아보겠습니다.
sudo docker pull ubuntu:latest
Docker pull <이미지 이름>:<태그> 형식입니다. latest를 설정하면 최신 버전을 받습니다.
ubuntu:14.04, ubuntu:12.10처럼 태그를 지정해 줄 수도 있습니다.
이제 받은 이미지의 목록을 출력해보겠습니다.
sudo docker images
docker images 명령은 모든 이미지 목록을 출력합니다.
이미지를 컨테이너로 생성한 뒤 Bash 셸을 실행해보겠습니다.
sudo docker run -i -t --name hello ubuntu /bin/bash
**docker run <옵션> <이미지 이름> <실행할 파일> 형식입니다.
여기서는 ubuntu 이미지를 컨테이너로 생성한 뒤 ubuntu 이미지 안의 /bin/bash를 실행합니다. 이미지 이름 대신 이미지 ID를 사용해도 됩니다.
-i(interactive), -t(Pseudo-try) 옵션을 사용하면 실행된 Bash 셸에 입력 및 출력을 할 수 있습니다.
--name 옵션으로 컨테이너 이름을 지정할 수 있습니다. 이름을 지정하지 않으면 Docker가 자동으로 이름을 생성하여 지정합니다.
이제 호스트 OS와 완전히 격리된 공간이 생성되었습니다. cd
,ls
명령으로 컨테이너 내부를 보면 호스트 OS와는 다르다는 것을 알 수 있습니다. exit
를 입력하여 Bash 셸에서 빠져나옵니다. 우분투 이미지에서 /bin/bash 실행 파일을 직접 실행했기 때문에 여기서 빠져나오면 컨테이너가 정지됩니다.
sudo docker ps -a
docker ps 형식입니다. -a 옵션을 사용하면 정지된 컨테이너까지 모두 출력하고, 옵션을 사용하지 않으면 실행되고 있는 컨테이너만 출력합니다.
sudo docker start hello
docker start <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.
hello 컨테이너가 시작된 것을 확인할 수 있습니다.
OS 재부팅처럼 컨테이너를 재시작해보겠습니다
sudo docker restart hello
docker restart <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용할 수 있습니다.
이제 시작한 컨테이너에 접속해보겠습니다.
sudo docker attach hello
docker attach <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용할 수 있습니다.
우리는 /bin/bash를 실행했기 때문에 명령을 자유롭게 입력할 수 있지만, DB나 서버 애플리케이션을 실행하면 입력은 할 수 없고 출력만 보게 됩니다.
Bash 셸에서 exit
또는 Ctrl+D 를 입력하면 컨테이너가 정지됩니다.
현재 컨테이너가 /bin/bash로 실행된 상태입니다. 이번에는 /bin/bash를 통하지 않고 외부에서 컨테이너 안의 명령을 실행해보겠습니다.
sudo docker exec hello echo "Hello World"
docker exec <컨테이너 이름> <명령> <매개변수> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용할 수 있습니다. 컨테이너가 실행되고 있는 상태에서만 사용할 수 있으며 정지된 상태에서는 사용할 수 없습니다.
컨테이너 안의 echo
명령을 실행하고 매개 변수로 "Hello World"를 지정했기 때문에 Hello World가 출력됩니다. docker exec 명령은 이미 실행된 컨테이너에 apt-get, yum 명령으로 패키지를 설치하거나, 각종 데몬을 실행할 때 활용할 수 있습니다.
이번에는 컨테이너를 정지해보겠습니다.
sudo docker ps
명령을 통해 hello 라는 이름을 가진 컨테이너가 실행 중인 것을 확인할 수 있습니다.
그리고 sudo docker stop hello
명령을 통해 컨테이너를 정지하고 다시 확인해보니 hello 컨테이너가 정지한 것을 알 수 있습니다.
docker stop <컨테이너 이름> 형식입니다.
생성된 컨테이너를 삭제해보겠습니다.
sudo docker rm hello
docker rm <컨테이너 이름> 형식입니다.
삭제 명령 후에 sudo docker ps -a
명령을 실행해보면 hello 컨테이너가 삭제된 것을 볼 수 있습니다.
이번에는 이미지를 삭제해보겠습니다.
sudo docker rmi ubuntu:latest
docker rmi <이미지 이름>:<태그> 형식입니다. 이미지 이름 대신 이미지 ID를 사용해도 됩니다.
docker rmi ubuntu처럼 이미지 이름만 지정하면 태그는 다르지만 ubuntu 이름을 가진 모든 이미지가 삭제됩니다.
안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
아니면 클리앙,서버포럼, okky,2cpu,그누보드 등 가입되어 있으신 개발자 커뮤니티가 있으시다면 해당 커뮤니티에 아래와 비슷하게 게시글을 올려주실수 있을까요?
클리앙 : https://www.clien.net/service/board/park/17797443
연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.
협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.
sungjh0726@naver.com
협찬제품 링크 : https://incatos.shop/surl/P/11