[서버 시작시 할거]
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