(Redhat) Docker 환경 세팅
[docker 패키지 저장소 url]
https://download.docker.com/linux/rhel/docker-ce.repo
1. docker 레포지토리 구성
$ dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
2. docker 환경에 필요한 패키지 설치
$ yum install docker-ce
$ yum install docker-ce-cli
$ yum install containerd.io
$ yum install docker-ce docker-ce-cli containerd.io --allowerasing
// 따로따로 설치하지 말고, 3개 동시에 설치 진행하기.
// --allowerasing 은 충돌하는 패키지를 변경하는 명령어
// rhel8.4에서 테스트했는데, (podman, buildah) 관련해서 충돌나는게 많다.
3. docker 서비스 동작 확인
$ which docker
$ ls -lh /usr/lib/systemd/system | grep docker
// 해당 경로에 docker 패키지가 있어야 systemctl 로 docker 를 동작할 수 있음
$ systemctl status docker
$ systemctl start docker
$ systemctl enable docker
$ docker version
// server 와 client 섹션으로 나뉘어져 있음
// server 와 client 버전이 동일한지 확인
$ docker info
$ docker login -u <docker ID>
Password : <docker PW>
$ docker pull httpd
// hub.docker.com 에 있는 httpd:lastest 이미지 다운로드
4. 컨테이너 생성하기
$ docker pull nginx
$ docker run -d --name {web_test} nginx:lastest
$ docker exec -it {web_test} uname -a
$ docker exec -it {web_test} bash // web_test 컨테이너 접속
$ docker run -d --name {web_test} -p 8888:80 nginx
$ docker run -d --name {web_test} -v /etc/yum.repos.d:/etc/yum.repos.d nginx
$ curl 127.0.0.1:8888 (host에 httpd 서비스가 없어도 됌)
$ ps -ef | grep 80
// docker-proxy -container-port 80 프로세스 구동중임.
// nginx 가 80 port 사용함.
4-1. 컨테이너 삭제하기
$ docker stop {web_test}
$ docker remove {web_test}
5. 컨테이너 명령어
$ docker run -d --name {web_test} --hostname=rhel84 nginx
$ docker container inspect {web_test}
$ docker container inspect {web_test} | grep {IPAddress}
$ docker container inspect {web_test} | grep {Gateway}
> ping {172.17.0.1} // docker Gateway
6. docker 이미지 개인저장소에 업로드 (hub.docker)
-- docker images 생성하기
$ docker tag nginx:latest podmanrun/test-nginx : 1.0
(기존 images) (docker계정명) / (생성하는 image명) : Tag
$ docker login
$ docker info | grep Username
-- hub.docker 에 업로드
$ docker push podmanrun/test-nginx:1.0