docker pull ubuntu:latest # ubuntu 최신 버전 다운로드
docker images # 다운로드한 이미지 확인
docker run -it --name ubuntu -p 80:80 ubuntu:latest
apt-get update
apt-get install apache2 -y # apache 설치
service apache2 start # apache 실행
Rocky Linux
docker pull rockylinux:9.3 # ubuntu 최신 버전 다운로드
docker images # 다운로드한 이미지 확인
docker run -it --privileged --name rockylinux -p 8081:80 rockylinux/rockylinux /usr/sbin/init
docker exec -it rockylinux /bin/bash # shell 모드 접속
yum install httpd
systemctl start httpd
systemctl status httpd
systemctl enable httpd
-i - interactive / 표준 입력을 활성화하여 사용자가 컨테이너와 상호 작용할 수 있게 도와준다.
-t - 가상 터미널을 할당하여 shell 모드 진입을 도와준다.
-d - 컨테이너를 백그라운드에서 실행시킨다.
--privileged - 컨테이너 내부 주요 자원에 접근할 수 있다.
--name - 컨테이너에 특정 이름을 부여한다.
-p
-p ${호스트 포트 }: ${컨테이너 포트}
컨테이너의 포트를 호스트의 포트와 바인딩해 연결할 수 있는 속성
(예) -p 3307:3307 -p 192.168.56.103:80:80
만약 여러 개의 포트를 외부에 개방하려면 -p 옵션을 여러 번 설정하면 된다.
exec - docker 컨테이너 내 특정 명령을 입력하거나 shell에 접근할 수 있다.
/usr/sbin/init - 컨테이너 띄울 때 함께 실행한다. 해당 옵션과 --privileged 옵션이 함께 사용되어야 systemctl 이 동작한다.
이후 모든 컨테이너들을 확인하면 아래와 같이 나타난다.
3. URL 접속
${호스트 PC(도커를 설치한 가상 서버)의 IPv4 }:${컨테이너 생성 시 바인딩한 port 번호 } 를 입력해주면 아래와 같이 출력된다.