안녕하세요, Ubuntu 22.04 Server 에서 도커를 설치 후 이미지를 가져와 컨테이너를 생성하는 방법에 대해 다뤄보겠습니다.
1. Ubuntu APT 저장소 설정
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
--설정 완료 후 패키지 업데이트--
sudo apt-get update
--오류 발생 시 확인할 부분--
$VERSION_CODENAME 항목을 $UBUNTU_CODENAME 으로 바꿔주거나 22.04 기준 코드네임인 jammy 로 수정해주신 후 수정하시면 됩니다.
이후 apt 명령어를 이용해 docker 서비스에 필요한 패키지들을 설치합니다.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2.설치 이후 실행상태를 확인합니다.
service docker status
3.도커를 이용하여 ubuntu 22.04 이미지를 불러와보겠습니다.
docker pull ubuntu:22.04
도커 이용 도중 위와 같이 로그인이 필요하다고하면
아래 링크로 접속해서 간단하게 회원가입을 진행합니다.
이 때 이메일 주소로 로그인 하는 것이 아닌 입력한 Username 으로 로그인을 진행하오니 잘 기억해주세요.
회원 가입 후 아래 명령어를 입력합니다.
docker login
유저 네임과 비밀번호를 차례대로 입력해주세요.
이제 다시 돌아가서 Ubuntu 이미지를 가져와서 컨테이너에 올려 실제로 SSH 연결까지 진행해보겠습니다.
docker pull ubuntu:22.04
docker run -it -p 2232:22 --name myserver ubuntu:22.04
----
위 명령어에 들어간 옵션
-it = 컨테이너의 표준 입력(stdin), tty(가상터미널) 활성화.
-p 2232:22 = 포트 설정 부분 (외부에서 2232 포트로 접속시 컨테이너 내부의 22번 포트로 접속되게 포워딩)
(이미 22번 포트를 우분투가 사용하고 있으니까)
--name myserver = 서버의 이름
ubuntu:22.04= pull로 가져온 이미지 이름
----
해당 이미지엔 기본적인 패키지가 없기 때문에
우선 서버에서 이미지를 가져온 후 패키지 다운로드 작업이 필요합니다.
docker run 이후 자동으로 컨테이너에 접속하게되는데,
그 상태에서 passwd 명령어로 해당 계정의 비밀번호를 변경하신 후
apt update
apt install -y vim ssh net-tools
등 기본적인 패키지 및 필요하신 패키지를 설치하시면됩니다.
이후 /etc/ssh/sshd_config 상에서
#PermitRootLogin prohibit-password
로 되어있는 부분을
PermitRootLogin yes
로 바꿔주시면 docker 컨테이너로 만든 ubuntu 환경을 ssh 로 접속하여 이용하실 수 있게 됩니다.
단 외부와의 통신의 경우 -p 를 통해 포트포워딩을 해주지 않으면 해당 포트로 통신이 되지 않으니,
외부 통신이 필요하신 경우 필요한 포트를 따로 지정해주거나
docker run 을 실행할 때 --net host 옵션을 추가하면 호스트와 동일한 네트워크를 사용하여 포트를 공유하게 만들 수 있습니다.
감사합니다.
|