sudo apt update && sudo apt upgrade
sudo apt-get install apt-transport-https ca-certifacates curl gnupg-agent software-properties-common
sudo usermod -aG docker [user 이름]
curl -fsSL https://download.docker.com/linux/ubuntu/gg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
도커 설치 후 설치 확인
sudo systemctl enable docker && service docker start
예시 )
ubuntu 20.04 컨테이너 만들기
docker run ubuntu:20.04
run 명령어를 사용하면 사용할 이미지가 저장되어 있는지 확인하고 없다면 다운로드 (pull) 한 후 컨테이너를 생성(create) 하고 시작(start) 한다.
하지만 위 명령어를 친다면 컨테이너는 정상적으로 실행됐지만 뭘 하라고 명령어를 전달하지 않았기 때문에 컨테이너는 생성되자마자 종료된다.
컨테이너는 프로세스이기 때문에 실행중인 프로세스가 없으면 컨테이너는 종료된다.
조금 더 자세히 설명하면 도커 이미지마다 컨테이너가 만들어질 때 실행할 명령어를 지정할 수 있고, ubuntu:20.04는 "/bin/bash"가 지정되어 쉘이 실행되어야 프로세스가 계속 실행된다.
/bin/sh 실행하고 컨테이너 종료시 컨테이너 삭제
docker run --rm -it ubuntu:20.04 /bin/sh
컨테이너 내부에 들어가기 위해 sh를 실행하고 키보드 입력을 위해 -it 옵션을 줍니다.
또 프로세스가 종료되면 컨테이너가 자동으로 삭제되도록 --rm 옵션도 추가합니다.
--rm 옵션이 없다면 컨테이너가 종료되더라도 삭제되지 않고 남아 있어 수동으로 삭제해야합니다.
CentOS 실행하기
docker run --rm -it centos:8 /bin/sh
도커는 다양한 리눅스 배포판을 실행할 수 있습니다. 공통점은 모두 동일한 커널을 사
용한다는 점입니다.
ex)
MySQL 실행하기
docker run -d -p 3306:3306 \
-e MYSQL_ALLOW_EMPTY_PASSWORD=true \
--name mysql \
mysql:5.7
-d 옵션을 줘서 백그라운드에서 실행된다.
--name 옵션을 부쳐서 container 이름을 지정했다.
-e (환경변수 설정) 옵션을 줘서 mysql 비밀번호는 없어도 된다고 지정했다.
docker exec -it mysql mysql
exec 명령어는 run 명령어와 달리 실행중인 도커 컨테이너에 접속할 때 사용하며 컨테
이너 안에 ssh server등을 설치하지 않고 exec 명령어로 접속한다.
서버에 ssh 를 설치해서 ssh로 접속할 수도 있지만,
보안을 위해 exec 로 접속하는 것을 권장한다.
이와 같이 도커를 사용하면 쉽게 프로그램 또는 서버를 실행하고 설치 또는 세팅할 수 있다.
또한 도커를 이용하면 포트를 다르게해서 여러개를 띄울 수 있다.
다시말해 한 컨테이너에 ubuntu:20.04 이미지를 담고, 또 다른 컨테이너에도 ubuntu:20.04 이미지를 담으면 한 컨테이너마다 ubuntu 가 독립적으로 2개가 실행되고 있다는 뜻이다.