[서버] Docker

2025. 4. 29. 12:51·서버

[서버 시작시 할거]

systemctl start docker.service

docker start mysql8

docker start centos8

docker ps

 

[이미지만들기]

도커 로그인

docker login -u 도커아이디

 

cd /root/.docker

docker stop centos8

docker commit -a "mycentos8" -m "" centos8 mycentos8:latest

docker commit -a "만들이미지명" -m "메세지(주로비워두고깃허브에올림)" 기존이미지명 만들이미지명:버전

실패한거는 <none>로 뜸 => 이미지아이디로 지워주기 드래그 우클릭시 복붙바로됨

docker rmi da2590bda053

 

단점 : 다른 환경에서 받았을때 루트패스워드를 모르면 로그인을 못함

 

[이미지 도커허브에 올리기]

repository 먼저 만들어야함

그대로 복사해서 사용

docker push koona0/mycentos8:latest

안되네!@@ 이유는 경로때문 내가 만들어둔 이미지 이름이 안맞음

 

경로때문에 이미지 삭제하고 다시 만듦 ㅎ

docker rmi mycentos8:latest

docker commit -a "mycentos8" -m "" centos8 koona0/mycentos8:latest

docker push koona0/mycentos8:latest

잘된다

도커허브들어가보면 잘 올라가있음

클라우드서버 실행 

docker start contos8

docker exec -it centos8 /bin/bash


Docker Hub - 서버를 기본적으로 셋팅 후 이미지화하여 재사용하기 위함

1. Docker Hub에 회원갑입 및 로그인

2. 실서버에서 docker login 명령어 사용

    docker login -u 도커아이디

3. 이미지를 생성할 컨테이너를 정지 

4. 도커저장소이름:버전 사용시 도커허브에 저장소가 생성되어있어야함

    도커허브에서 create a repository 클릭해서 생성

    생성후 우측에 있는 샘플 코드 확인

5. 컨테이너를 이미지화하여 서버에 저장 (위의 샘플코드를보고 만들기)

    docker commit -a "만들이미지명" -m "메세지(주로비워두고깃허브에올림)" 컨테이너이름 저장소이름:버전

6. docker images 이미지확인

7. 샘플코드를 이용해서 푸시 (버전 맘대로써도됨)

    docker push koona0/mycentos8:버전

 

기본적으로 클라우드서버사용하는 회사는 도커허브를 많이 사용함

주소를 알려주면 거기서 풀로 다운하면 됨

 

[ Docker Hub 이미지 다운]

기존 이미지 삭제

docker rmi koona0/mycentos8:latest

 

도커허브에있는거 다운

docker pull koona0/mycentos8:latest

 

서버 여러개일 경우 한쪽에서 푸시하고 다른쪽에서 풀해서 쉽게 세팅 가능

또한 백업서버를 만들어둘때도 사용


[프리라우팅]

실서버

systemctl start httpd

 

클라우드서버

systemctl start nginx

systemctl start vsftpd

netstat -ln

80포트가 돌고있나 확인

 

실서버

netstat -ln | grep "10080"

포트에 listen 떠있어야함

그런데 왜 웹브라우저로 실서버아이피:10080하면 안뜰까? 포트포워딩업슴

iptables -L

iptables -F

방화벽 풀고

iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-port 10080

포트포워딩 : netstat으로 보고 tcp인지 udp인지 보고 때려야함

iptables -t nat -L

10080번 포트 리다이렉트 잘 됐나 확인

프리라우팅지우기 (뒤에 있는 숫자는 1부터 시작)

iptables -t nat -D PREROUTING 1

 

클라우드의 엔진엑스가 80번인데 실서버에게 10080으로 전달 

10080을 웹브라우저에 쓰면 안열림 

실서버에서 81로 쓰겠다고  함

웹브라우저에서 실서버아이피:81 하면 엔진엑스가 나옴

포트없이쓰면 실서버의 웹인 아파치가 뜸

 

프리라우팅 없어도 되는거는 사용자가 있어야하고 아이디패스워드가 잇어야함

웹같은경우 접속시 아이디패스워드가 필요없기때문에 프라라우팅이 필요

프리라우팅이 아이디패스워드 없이 익명으로 접속할 수 있게 해줌

 

웹을 프리라우팅 안할경우 도커가 아이디패스워드 확인하기때문에 너 뭐야 안돼 돌아가 함

 

++

정적라우팅, 동적라우팅 알아보기

 

++

x.x.x.2 => DNS 라우팅

x.x.x.3 => http://aaa.koo.co.kr 

x.x.x.4 => http://bbb.koo.co.kr

DNS가 아래 두 주소를 교통정리해줌


WEB SERVER

실제서버 : httpd (Apache)

클라우드서버 : nginx

Docker에서 10080 오픈 요청 => 실제서버 10080 (TCP)

클라우드서버 : nginx 가동 (80)

실제서버 : 10080 가동

웹브라우저를 확인 10080포트는 사용할수없음 (도커의 포트) => 10080포트로 접속시 에러발생 

iptables 데몬으로 라우팅해야함 필수!

iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-port 10080

81 > 실서버10080 > 클라우드서버80

iptables -t nat -L => 열었나 안열었나 PREROUTING 부분을 참조

만약 잘못열어서 삭제해야한다면

iptables -t nat -D PREROUTING 1

순서는 1부터 시작 


 

systemctl stop nginx

 

실서버

iptables -t nat -A PREROUTING -p tcp --dport 7021 -j REDIRECT --to-port 10021

iptables -t nat -D PREROUTING 1

iptables -F

라우팅한번하고 풀어줘야함

 

클라우드서버

systemctl stop vsftpd

vi /etc/vsftpd/vsftpd.conf

패시브모드 해제

 

systemctl start vsftpd

 

파일질라로 접속시 능동형 10021포트로 접속

 

실서버에서는 10021 tcp 클라우드서버에서는 21 tcp6

실서버에서 라우팅시 tcp로 적용 

 

10022로 해서 SSH로 접속해도 잘 접속됨

 


[Oracle18c 컨테이너 생성]

https://www.oracle.com/database/technologies/xe18c-downloads.html

 

리눅스 링크 복사

https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm

 

실서버 

cd /home/down

wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm

 

 

깃허브에 oracledocker 검색하면 이미지 있음 

링크 복사 

https://github.com/oracle/docker-images.git

 

실서버

git clone https://github.com/oracle/docker-images.git

ls -al

도커이미지폴더가 생김

cd docker-images/OracleDatabase/SingleInstance/dockerfiles/

우리는 18c.1.0 rpm을 다운한거같은데

도커파일 폴더에 해당 버전이 없음

 

근디 다시 구글에서 오라클 18.4c 검색해서 들어가서 복사하면

https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm

1.0.1임 맞는거임

 

빌딩

./buildContainerImage.sh -v 18.4.0 -x

docker 이미지가 생성됨 자신의 PC환경에 맞게 정보수집을 함

오라클은 이렇게 해야됨 다른 시스템에 할 때도 이렇게 해야함 

 

이미지 다운에 한참 걸림

이미지 크기만 해도 5.9기가 충격적

 

useradd oracle

오라클데몬사용자 생성 비번안만들고 그냥 사용해보쟈

비번 없어서 바로 로그인못하는데 su해서 루트로 들어간 후 su oracle 이용

권한 700임

chmod 755 oracle

su oracle

cd oracle

mkdir oradata

오라클 데이터 저장할곳 생성 이름맘대로해도되는데 기본 이거임

생성한 디렉토리 권한이 775로 잡힘 -> 보안골치아픔

chmod 757 oradata

exit

빠져나오기 => 루트

 

이렇게 oradata먼저 만들어놔야 나중에 디렉토리 난리 안남

 

docker images

 

docker run --name oracle_18c -p 192.168.94.2:1521:1521 -p 5500:5500 -p 192.168.94.2:1522:1522 -p 5501:5501 -e ORACLE_PWD=a123456 -e ORACLE_CHARACTERSET=utf8 -v /home/oracle/oradata:/opt/oracle/oradata oracle/database:18.4.0-xe

이거는

xepdb1, xepdb2 사용할것을 암시

관리자 콘솔 5500, 5001 로 접속한다는거

근디 안됨슨 에러남

근데 docker ps -a 해보면 컨테이너 생성돼있음

docker rm oracle_18c

삭제하기

 

run 실패한 경우 꼭 삭제하고 다시 run명령어

 

docker run --name oracle_18c -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=a123456 -e ORACLE_CHARACTERSET=utf8 -v /home/oracle/oradata:/opt/oracle/oradata oracle/database:18.4.0-xe

 

docker start oracle_18c

실행

 

docker ps

했을때 오라클 뜨면 성공 (●'◡'●)

 

docker exec -it oracle_18c sqlplus sys/a123456@//localhost:1521/XE as sysdba

 

이케 하고 일단 오라클 버추얼박스에 오라클 포트포워딩 1521

 

sqldeveloper 새접속

시드 생성

호스트 서버아이피넣기 

 

XEPDB생성

 

DBA 추가 

XEPBD 확인

 

--

서버

루트사용자로 

docker exec -it oracle_18c /bin/bash

su oracle

ls -l $ORACLE_HOME/bin/oracle*

chmod 6751 $ORACLE_HOME/bin/oracle

 

여기서 6은

SetUID(4) + SetGID(2) = 6
SetUID (4): 이 파일을 실행하는 사용자가 누구든, 해당 파일 소유자 권한으로 실행됨
SetGID (2): 이 파일을 실행하는 사용자가 누구든, 해당 그룹 권한으로 실행됨
Oracle에서는 보안 및 권한 문제 때문에 SetUID 또는 SetGID를 설정하는 경우가 많음

 

exit

exit

루트로 돌아오기

 

cd oracle/oradata/XE

이거를 아래 테이블스페이스에 사용할거임


/home/oracle/oradata/XE/XEPDB1

이렇게하면 XEPDB1에만 적용되는거고 

/home/oracle/oradata/XE

이렇게하면 하위에 모두 적용

사수가 XEPDB5에다가 해 하면 

/home/oracle/oradata/XE/XEPDB5

--

[오토스케일링]

쌍둥이 만들기 한쪽 저장되면 다른쪽도 저장되게함 

오라클은 이렇게 안하면 한쪽 데이터를 빼오기 너무 힘듦

  • CentOS7, Oracle
    • /home/oracle/oradata
  • Docker
    • Oracle 18c : 1521
    • /opt/oracle/oradata

얘네가 왔다리갔다리

오라클에만 쓰임 매

두개의 디렉토리가 동기화 

--

 

 

테이블스페이스 생성하기 

퍼미션 계속 바꾸면 보안약해짐

그냥 오라클로 바로 설정 ㅋ.,..ㅋㅋ

임시테이블스페이스 생성

 

이제 사용자 만들기

DBA > 보안 > 사용자 > 우클릭 > 사용자 생성

아직 적용 ㄴㄴ

시스템 권한 모두 관리자 눌러주고 

저기 세개 체크 풀어주고 적용 

기존 XEPDB 속성 해서 수정하면 수정하는게 아니라 새로 만들어짐

 

서버에 테이블이 만들어짐

 

어디에있을까?

 

실서버루트

cd oracle/

docker exec -it oracle_18c /bin/bash

su oracle

cd /home/

cd oracle

요깄따

 


 

실서버루트

cd /home/oracle/oradata/dbconfig/XE

vi listener.ora

 

vi tnsnames.ora

여기서

XEPDB1을 복사해서 만들어버릴수도있음 이름이랑 포트 바꿔서

서버는 이런게 가능!

근데 도커깔때 포트를 열어놨어야함

윈도우는 이런거 못함 보안때문에 파일 못엶


cd /home/down

이제 필요없는거 삭제 

rm -drf docker-images/

 

docker image해서 나오는 이미지는 지우면 안됨 => 백업 불가능


[오라클설치]

1. 오라클 사이트에 rpm 다운로드 => git hub  oracle docker

    git clone https://github.com/oracle/docker-images.git

    cd docker-images/OracleDatabase/SingleInstance/dockerfiles/

2. 빌딩

    ./buildContainerImage.sh -v 18.4.0 -x

    docker 이미지가 생성됨 자신의 PC환경에 맞게 정보수집을 함

    docker images => oracle/database:18.4.0-xe

3. useradd oracle => oracle을 담당하는 데몬 사용자

    oracle사용자로 전환 후 퍼미션 조정 

    chmod 755 oracle

    oracle 디렉토리로 이동후 mkdir oradata

    chmod 757 oradata

4. 루트로 전환

 

5. 해당 docker oracle이미지로 docker 설치

docker run --name oracle_18c \ 컨테이너명 

-p 1521:1521 -p 5500:5500 \ 오라클 포트명, 웹에서 오라클 접속할 수 있는 관리자 콘솔 

-e ORACLE_PWD=a123456 \ 오라클 sys, system 관리자 패스워드 

-e ORACLE_CHARACTERSET=utf8 \ 오라클 언어셋

-v /home/oracle/oradata:/opt/oracle/oradata \ xepdb 관련 DB정보가 백업되는곳

oracle/database:18.4.0-xe 

⭐만약 도커 설치시 에러발생한 경우 docker rm oracle 컨테이너 삭제하고 다시해야함 

 

6. docker exec -it oracle_18c sqlplus sys/비밀번호@//localhost:1521/XE as sysdba


클라우드 서버 ftp의 tcp6을 tcp로 바꾸기할 수 있는데

하다가 작살날까봐 안함 

 

[Nginx 웹디렉토리 설정]

vi  /etc/nginx/nginx.conf

cd /home

ls -al

사용자디렉토리의 권한 700으로 되어있음

 

su nayoung 

루트사용자 접속 상태에서 바로 일반사용자로 접속가능

chmod 755 nayoung

사용자 디렉토리 755로 변경

 

cd nayoung

mkdir web

웹디렉토리 생성

cd web

 

10022포트로 파일질라 접속해서 web폴더에 html 파일 업로드

exit

루트로 다시 돌아와서 

vi  /etc/nginx/nginx.conf

:42 co 42

systemctl restart nginx

 


 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
'서버' 카테고리의 다른 글
  • [배포]
  • [서버] 보안
  • [서버] Docker 세팅
  • [서버] 세팅 - SSH, WEB (Apache), FTP, DB (Mysql)
9na0
9na0
응애
  • 9na0
    구나딩
    9na0
  • 전체
    오늘
    어제
    • 분류 전체보기 (174) N
      • Web (99) N
      • Java (28)
      • 데이터베이스 (12)
      • 세팅 (11)
      • 과제 (3)
      • 쪽지시험 (2)
      • 정보처리기사 (2)
      • 서버 (13)
  • 블로그 메뉴

    • 링크

      • 구깃
    • 공지사항

    • 인기 글

    • 태그

      file24
      exam1_1~10
      re2
      net1
      datalist
      io_dto
      net2
      notice_writer
      net4
      Oracle
      net3
      java_io1~10
      file25
      ab1
      re_java10
      spring-boot
      noticewriteok
      file25_t
      net5~10
      macbook pro m4
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    9na0
    [서버] Docker
    상단으로

    티스토리툴바