[docker] 리눅스 기반 도커(docker)설치 및 명령어 실습

업데이트:

이전 글 : [docker] 도커(docker) 개념 과 정의 및 용어정리

안녕하세요👋
이전 글에서는 도커의 개념과 정의 등에 대해 이야기를 해보았습니다 이번에는 도커 설치와 명령어들에 대해 실습을 해보면서 알아보도록 하겠습니다

🙏요약

이번 글에서는 도커의 설치와 기본적인 명령어들에 대해 이야기하겠습니다

  1. 도커 설치
  2. 도커 기본 실습

📝도커 설치

image

apt install docker.io
sudo usermod -aG docker (계정이름)
docker version

docker.io로 설치해주셔야 합니다. 설치 후 who 명령어나 echo $USER 명령으로 자신의 계정아이디를 알고(default는 ubuntu) docker에 sudo권한을 설정해주셔야합니다. docker는 대부분 sudo권한으로 사용하는데 매번 sudo를 사용하기도 귀찮고 docker가 아닌 다른곳에 함부러 sudo권한을 사용할 수도 있기때문에 권한을 주시는게 좋습니다. 이후 docker version을 통해 잘 나오는지 확인하시면 됩니다 2021.08 기준 최신 20.10.7 버전이네요.

참고
만약 ebs를 사용하시거나 다른 저장공간에 docker 파일들을 따로 보관하시고 싶으신 경우

sudo vi /etc/docker/daemon.json 
{"data-root":"저장할공간(ex /data/docker)"} 
sudo systemctl restart docker

vi로 daemon.json 파일을 생성해서 여신 후 밑에같이 작성하시고 저장해주신후 docker를 재시작해주시면 됩니다

🔎도커 기본 실습

도커 실습을 하기 이전에 처음부터 모든 명령어를 쭉 나열하고 이렇게 쳐라 할 수도 있지만 조금씩 명령어들을 추가시키면서 정확이 어떤 동작을 시키는 옵션들인지 파악해 보는게 무엇보다도 중요할 것입니다. 조금 귀찮더라도 처음부터 하나하나씩 명령어를 추가해 나가시면서 따라오시면 훨신 오래 기억에 남고 이해도 잘 되실거라고 생각합니다

hello-world

docker run hello-world


image
이렇게 뜨시면 hello-world 출력에 성공하신 것입니다.👏

이제 정말 자주 사용하게 될 도커 명령어들에 대해 이야기해볼텐데요

docker ps
docker ps -a
docker images

docker pull (이미지주소)
docker create (이미지이름)
docker start (이미지이름)
docker run (이미지주소,이미지이름)

docker rm (컨테이너 id)
docker rmi (이미지 id)

하나씩 설명해보겠습니다 docker ps 명령어는 현재 실행하고 있는 docker 컨테이너들 , -a 명령어를 보시면 컨테이너가 만들어 졌지만 중지되어있는 컨테이너들까지 보실 수 있습니다. 이미지와 컨테이너의 개념을 클래스와 객체(인스턴스)의개념으로 보시면 이해하기 쉬우실 건데요 이미지를 가지고 컨테이너를 주구장창 찍어낼 수 있다고 생각하시면 되겠습니다. docker rm 과 docker rmi는 컨테이너와 이미지 삭제인데요 컨테이너 id와 이미지id 가 엄청 긴데 이걸어떻게 치냐 앞에 1~2글자만 쳐도 그거에 맞는 컨테이너와 이미지를 삭제해 줍니다

docker run = docker pull + docker create + docker start
느낌적으로 이해가 될 것이라고 생각합니다 docker run은 이미지파일을 받아오고(있으면 말고) 컨테이너를 생성한뒤 실행하는 형태라고 볼 수 있습니다

docker run ubuntu:20.04

다음으로는 ubuntu를 한번 설치하고 컨테이너를 만들어 실행해보겠습니다. 실행해보시면 아무일도 일어나지 않는 걸 알수있는데요 docker ps -a 해보시면 분명 컨테이너는 만들어졌다가 없어진것을 보실 수 있습니다 ubuntu의 bash쉘이 실행됬지만 아무것도 하지 않으므로 그냥 종료가 된 것인데요 뒤에 명령어를 사용하면 동작은 하지만 1번하고 종료가 됩니다. 이래서야 도저히 사용할 수 없겠죠?

docker run -i -t ubuntu

이번에는 run에 -i 와 -t옵션을 주었습니다 인터렉티브(-i)하게 터미널(-t)을 실행시키라는 의미인데요 이렇게 하면 명령어를 입력하면서 우분투를 실행시킬 수 있습니다
image
docker에서 띄운 ubuntu 컨테이너 내에서 명령어들을 입력하고 잘 동작하는것을 확인할 수 있죠. 하지만 여기서도 백그라운드에서 실행해놓고 필요할 때에 들어가서 명령어를 입력하고 싶은데 exit명령어로 나오게 되면 실행이 종료되고 맙니다

docker run -i -t -d --rm --name myubuntu ubuntu

이번에는 조금더 많은 옵션이 추가되었습니다 -d 옵션은 백그라운드에서 동작하도록 하는 옵션이고 –rm은 삭제되면 컨테이너도 함께 삭제 –name은 컨테이너에 이름을 부여하는 옵션입니다. 이번에 실행해보시면 역시나 아무일이 일어나지 않는데요 하지만 docker ps로 실행되고있는 컨테이너를 보시면 myubuntu가 실행되고 있는 것을 보실 수 있습니다

docker exec -i -t myubuntu bash
docker stop my ubuntu

동작하고 있는 ubuntu에 접근해서 명령어도 입력할 수 있고 exit로 빠져나오더라도 이번에는 중지되지 않고 살아있는 것을 보실 수 있습니다. 중지시키고 싶을 때에는 exit로 빠져나오신 후에 stop명령으로 중지시키면 위에서 걸어논 –rm옵션으로 컨테이너도 함께 삭제되는 것을 보실 수 있습니다
이제 어느정도 docker의 동작이 이해가 되실 거라고 생각합니다 이제부터는 자주 사용되는 다른 프로그램을 동작시켜보겠습니다

docker 로 nginx를 실행시키기

docker run -d -p 80:80 --rm --name mynginx nginx

run에 d 옵션으로 백그라운드로 실행을 시켰고 80번포트를 nginx의80번 포트와 연결시켜서 실행시켰습니다 또 –rm 명령으로 컨테이너 중지시 자동 컨테이너를 삭제시키도록 하였습니다 위 명령어면 자동으로 nginx이미지를 받아서 실행시키겠죠?

image
이후 해당 서버가 동작하는 ip를 통해 접속해보면 80번 포트를 통해 nginx의 기본 페이지가 잘 열리는 것을 확인할 수 있습니다.

docker exec -i -t mynginx bash
apt update
apt install vim
find / -name index.html

exec 명령으로 실행되고있는 mynginx 의 bash에 들어가서 apt update 이후 apt install vim 으로 vim을 설치하고 index.html 을 찾아 변경해봅시다.

image
저는 이렇게 변경해주었고 이제 실행을 시켜보면

image
잘 바뀌는 것을 볼 수 있겠습니다. 하지만 이제 컨테이너를 stop명령을 통해 중지시키고 rm을 통해 끈 뒤 다시 생성해보면 해 놨던 모든 작업들이 다 사라지는 것을 볼 수 있습니다. 이와같은 것들을 유지하기 위해 우리는 volume이라는 옵션과 컨테이너를 이미지화 시켜서 저장하는 commit을 사용할 것입니다.

volume,commit 등으로 컨테이너의 정보를 유지시키고 또 스스로 코딩한 내용을 이미지화 시키는 build나 push등의 내용은 다음 글에서 다루도록 하겠습니다
여기까지 잘 이해했다면 이제 컨테이너의 개념은 어느정도 익혔다고 생각합니다. 그럼 다음 글에서 뵙겠습니다

긴글 봐주셔서 감사합니다 앞으로도 유용한 내용을 많이 공유하겠습니다 그럼 안녕 👋

댓글남기기