Docker의 기본 명령어를 설명하는 글이다.
Window에서 Ubuntu를 사용한다.
설치, 환경설정을 매번 해줄 필요 없이 세팅을 할 수 있게 도와주는 Docker Container에 대해서 알아보자. Container란 개발한 프로그램을 위해 필요한 모든 것을 담고 있는 것이다. 보통 VMware를 사용해서 가상환경을 구성해서 다수의 VM (컴퓨터)를 만들 수 있다. 그러나 이 경우 각각의 VM에 OS를 설치해야 하므로 많은 하드웨어 자원을 소모하게 된다. 이를 경량화한 게 Container이다. 각각의 컨테이너는 OS를 가지지 않으며 물리적인 호스트에 있는 OS 자원을 공유하여 사용한다. 하나의 컴퓨터처럼 쓸 수 있지만 OS를 설치하지 않으므로 VM보다 가볍다는 장점이 있다. 물론, 각 어플리케이션이 서로 영향을 주지 않는 것은 VM과 동일하다.
Docker는 어플리케이션을 컨테이너로 사용할 수 있도록 만들어진 오픈소스 프로젝트이다. 우분투에서 도커 엔진을 설치해보자.
sudo apt-get update
패키지 목록을 최신 상태로 갱신한다.
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
필요한 패키지를 설치한다.
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Docker의 공식 GPG 키를 추가한다. 보안 이슈로 더 이상 사용하지 말라는 경고가 나오는데 무시하자.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Docker의 공식 apt 저장소를 추가한다.
sudo apt-get update
한 번 더 업데이트 해주자.
sudo apt-get install docker-ce docker-ce-cli containerd.io
Docker를 설치하는 명령어이다.
sudo systemctl status docker
Docker가 잘 설치가 되었는지 확인하는 명령어이다. Docker 서비스의 현재 상태를 확인한다. running이라고 되어있으면 잘 설치를 한 것이다. q를 눌러 터미널로 돌아올 수 있다.
Docker를 만들었으니 Docker 컨테이너를 만들어보자. Docker 컨테이너의 경우 이미지로부터 만들어진다. 가상머신 생성 시 사용되는 iso 파일과 유사하다. Docker 이미지는 Docker Hub에 이미 올라와있다. 따라서 해당 이미지를 내려받고 컨테이너를 만들면 된다.
sudo docker run -i -t ubuntu:22.04 IMAGEID
Docker 컨테이너에 우분투 22.04 버전을 설치하여 실행한다.
docker run: 도커 컨테이너를 새로 생성하고 실행
-i: interactive 모드로 사용자가 입력할 수 있도록 한다.
-t: 터미널처럼 작동하게 해주어 셸을 실행할 수 있다.
IAMGEID: 해당 이미지 아이디에 해당하는 이미지를 사용해서 컨테이너를 실행한다. 현재 우리는 우분투 이미지를 다운 받지 않았으므로 이미지 아이디를 생략하겠다.
만약 백그라운드로 올리고 싶으면 -d 옵션을 사용하면 된다. 또한 이름을 정하고 싶다면 --name 이름 옵션을 통해 정할 수 있다.
해당 코드를 실행시키면 도커 컨테이너 안으로 들어가게 된다. Ctrl+D(컨테이너를 중지시키고 나옴)나 Ctrl+P+Q를 눌러서 원래 터미널로 돌아올 수 있다.
sudo docker pull centos
pull 명령어를 통해서도 이미지를 다운받을 수 있다. :로 버전을 명시해주지 않으면 가장 최신 버전을 받는다.
sudo docker images
다운받은 Docker 이미지 목록을 보여준다. 아까 우리가 다운받은 우분투가 있을 것이다. 만약 삭제하고 싶다면 아래 명령어를 입력하면 된다.
sudo docker rmi IMAGEID
다운한 이미지의 아이디를 넣어서 해당 이미지를 삭제할 수 있다. 현재 우분투 이미지를 기반으로 동작하는 컨테이너가 존재 중이라 삭제할 수 없을 것이다.
sudo docker ps
현재 돌아가고 있는 컨테이너를 보여준다. -a를 사용하면 동작과 상관없이 모든 컨테이너를 보여준다.
sudo docker stop CONTANERID
sudo docker ps로 확인한 CONTANER ID나 NAMES를 넣어서 해당 컨테이너 작동을 중지시킨다.
sudo docker start CONTAINERID
해당 컨테이너를 다시 실행시킨다.
sudo docker attach CONTAINERID
해당 컨테이너로 접속한다.
sudo docker exec -i -t CONTAINERID bash -c "명령어"
해당 컨테이너에 접속해서 bash 셸을 이용하여 해당 명령어를 실행한다.
sudo docker rm CONTAINERID
해당 컨테이너를 삭제한다. 컨테이너가 없으므로 이미지를 삭제할 수 있게 된다. -f 옵션을 넣어 실행 중인 컨테이너를 강제로 삭제할 수 있다. 참고로 컨테이너 내부에 데이터를 저장했을 경우 컨테이너가 삭제되는 즉시 데이터도 사라지게 된다.
sudo docker container prune
도커 컨테이너를 일괄적으로 삭제한다.
sudo docker rename 기존이름 새로운이름
컨테이너의 이름을 변경할 수 있다.
'공부 > Linux' 카테고리의 다른 글
[Linux] 3. Docker Volume (0) | 2025.04.15 |
---|---|
[Linux] 2. Docker 컨테이너에 Apache 서버를 설치하기 (0) | 2025.04.15 |
[Linux] 셸 스크립트 작성하기 (1) | 2025.03.30 |
[Linux] 리눅스 환경에서 c 파일 컴파일 후 실행하기 (0) | 2025.03.29 |
[Linux] Bash Shell을 Zsh Shell로 바꾸기 (0) | 2025.03.28 |