본문 바로가기
네트워크 수업/Docker

Docker 23.05.08

by 6^6 2023. 5. 8.
728x90

2023.05.08 - [네트워크 수업/Docker] - Docker.pdf 23.05.08

 

dot을 도커라고 한다.

 

host OS의 커널을 공유한다.

Container Deployment 는 Guest OS가 없다.

바로 얹혀짐.

  =>가상화가 훨씬 수월해지고 간편해짐. 속도도 빠름.

 

KVM 

주 OS의 커널을 빌려쓴다.

 

 

 

 

 

 

CentOS7, RHEL7

# yum install -y yum-utils // yum-config-manager (yum 설정 정보와 저장소 관리자 설치)

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# yum install -y docker-ce  // Community Edition (무료), Enterprise Edition (유료)

# systemctl start docker  //아래의 명령어는 현재 사용 가능한 최신 버전의 도커 엔진을 설치한다.

# wget get.docker.com  // wget (web get) : 웹 상의 파일을 다운로드 받을 때 사용하는 명령어로 # docker info // 도커의 정상동작 확인

 

 

[root@samba /]# docker -v   =>docker 버전 확인Docker version 23.0.5, build bc4487a

 

 

[root@samba /]# systemctl start docker
[root@samba /]# docker run -i -t ubuntu:14.04  => os를 다운받으면서 container를 생성하는 명령어

-i => input output

-t => terminal 띄어라

ubuntu 14.04를 다운받음과 동시에 container를 만든다.  ==>순식간에 받아짐.

 

root@b6a2539a2a8d:/# pwd ==>컨테이너 속이다. 
/
root@b6a2539a2a8d:/#    

 

 

 

 

Alt+F4 넣기

 

ctrl+shift+q

[root@samba /]# docker -ls
Unable to parse logging level: s

[root@samba /]# docker ps   => up된거 확인 가능
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
b6a2539a2a8d   ubuntu:14.04   "/bin/bash"   4 minutes ago   Up 4 minutes             quizzical_blackburn


docker attach b6a2539a2a8d  또는  quizzical_blackburn  ==>종료된거 켤때

 

[root@samba /]# docker ps -a   ==> 종료된거 까지 보임CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
b6a2539a2a8d   ubuntu:14.04   "/bin/bash"   7 minutes ago   Up 7 minutes             quizzical_blackburn

 

[root@samba /]# docker attach b6a2539a2a8d
root@b6a2539a2a8d:/#    ==>우분투 속으로 들어왔다.

 

 

docker rm -f quizzical_blackburn   ==>-f 로 살아있는거 강제로 지우고

docker ps -a 하면 다 날아간거 확인 가능

docker images ==>운영체제 원본

docker rmi ubuntu:14.04  ==>이렇게 하면 지워진다.

docker images 하면 날아갈거 확인

docker run 

 

[root@samba /]# docker pull ubuntu:14.04   ==> 하면 도커 허브에서 다운로드만 받아짐.
14.04: Pulling from library/ubuntu
Digest: sha256:64483f3496c1373bfd55348e88694d1c4d0c9b660dee6bfef5e12f43b9933b30
Status: Image is up to date for ubuntu:14.04
docker.io/library/ubuntu:14.04

 

[root@samba /]# docker create -i -t --name myfirst_container ubuntu:14.04  ==> 컨테이너 생성하는 명령어
01ad0a9748efcf18e7596a5496f830d74e81eefc7b083df6e9c4a1b87d720a35

==>근데 생성만되고 실행은 안됨

[root@samba /]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
01ad0a9748ef   ubuntu:14.04   "/bin/bash"   42 seconds ago   Created                   myfirst_container
b6a2539a2a8d   ubuntu:14.04   "/bin/bash"   16 minutes ago   Up 16 minutes             quizzical_blackburn  ==>아까 지워준거

 

실행하려면 

[root@samba /]# docker start 01ad0a9748ef
01ad0a9748ef

 

[root@samba /]# exit  ===>그 다음 종료하고 빠져나오기
exit
There are stopped jobs.

 

도커를 하는 이유는 메모리를 나눠서 가지기 때문에 좋다.

 

컨테이너 설치가 빠른이유는 docker원본을 쓰기때문. 그래서 원본이 사라지면 컨테이너를 못쓴다. 이렇게 빠른 이유중 하나가 도커이미지는 5개 layer로 저장된다. (파일 하나로 저장되는것이 아닌다.)

저장되는것은 도커 안으로 들어가면 (16진수 hash로 저장된다). 컨테이너가 동작할때 이미지를 지우면 뱅글링(깨진)이미지가 남는다. 따라서 컨테이너가 동작할땐 이미지가 지워지지않는다.

 

 

[과제]  - pdf 3page 연습

CentOS 깔아보기 (pdf참조)

 

 

[root@samba /]# docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7
docker.io/library/centos:7


[root@samba /]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       7         eeb6ee3f44bd   19 months ago   204MB
ubuntu       14.04     13b66b487594   2 years ago     197MB

 

 

[root@samba /]# docker create -i -t --name mycentos centos:7
edcd87efa7cbc9aac44ae7671608a28f13983882d305ca87d936e958900ce699
[root@samba /]# docker start mycentos
mycentos

[root@samba /]# docker start firstwebserver
[root@samba /]# docker attach mycentos

[root@edcd87efa7cb /]# 

ctrl+shift+q

[root@samba /]# docker ps -a

 

 

 

========

컨테이너의 외부아이피 확인

[root@samba /]# systemctl start docker 

[root@samba /]# docker run -i -t --name network_test ubuntu:14.04

root@f07e1adfa993:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:05  
          inet addr:172.17.0.5     ==>고정아이피니까 암기해라. 172.17.0.0 대역

 

 

가상서버는 만들기도, 지우기도, 장애대처하기도 쉽다.

도커 수어?는 서버3대가 돌아가다 한대가 죽으면 그 죽은 게 되살아난다. 자동으로!

 

만들어서 어따 써먹냐

호스트 특정 아이피에 도커의 출력을 갖다 붙일수 있다.

 

"

다음과 같이 컨테이너를 생성한 후 아파치 웹 서버를 설치하여 외부에 노출해 보자

# docker run -i -t --name mywebserver -p 80:80 ubuntu:14.04

// -p 옵션의 사용법 => [호스트의 포트]:[컨테이너의 포트]

호스트의 7777번 포트를 컨테이너의 80번 포트와 연결하려면 7777:80과 같이 입력하며,

호스 트의 특정 IP를 사용하려면 192.168.100:7777:80과 같이 바인딩할 IP와 포트를 명시한다.

또한 여러 개의 포트를 외부에 개방하려면 –p 옵션을 여러 번 써서 다음과 같이 한다.

# docker run -i -t -p 3306:3306 -p 192.168.0.100:7777:80 ubuntu:18.04

"

 


root@f07e1adfa993:/# exit
exit
[root@samba /]# docker run -it --name myfirstweb -p 80:80 ubuntu:14.04

//에러나서

[root@samba /]# docker container prune  ==> 일괄삭제한다.

[root@samba /]# docker rm -f quizzical_blackburn

아님

docker stop 하고 이름 쓰기

 

[root@samba /]# systemctl stop firewalld

[root@samba /]# systemctl stop httpd

[root@samba /]# docker run -i -t --name mywebserver -p 80:8080 ubuntu:14.04

 

cd /etc/

 

# cat <<EOF>> /etc/modules-load.d/k8s.conf
br_netfilter
EOF

# cat <<EOF>> /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

# sysctl --system

[root@samba /]# docker run -i -t --name firstwebserver -p 80:8080 ubuntu:14.04

 

안되면>>

iptables -t filter -F

iptables -t filter -X

systemctl restart docker

docker container prune

 

apt-get update

apt-get install apache2 -y 

service apache2 start

>>

 

 

내컴퓨터와 클라우드서비스와 동기화시키기

공인아이피를 받게되면 내가 클라우드서비스를 만들것

 

클라우드서버를 만들어보자

[root@samba etc]# docker container prune    ==>다시 지우기
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
713fd2cd02b6d2dae8df9af052b6d22734a11b5bb1414f3bec78d255070264e6

Total reclaimed space: 26.27MB
[root@samba etc]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@samba etc]# 

 

 

 

이번엔 이미지를 안하고 create해볼것

 

[root@samba etc]# docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
ca1778b69356: Pull complete 
Digest: sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d4c203e58387dc6b3
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

[root@samba etc]# docker create -i -t --name owncloud -p 80:80 ubuntu:20.04
47a04edd2118c38af8fd8c253129b2722ddd8bedf5898a08baf6ce92be507a99
[root@samba etc]# docker start owncloud
[root@samba etc]# docker attach owncloud

root@47a04edd2118:/# apt update -y && apt upgrade -y 
==> update가 따로있고 upgrade(성능업)가 따로있다.ㅎ

 

 

※ PPA란?  - 4page

PPA(Personal Package Archive)는 개인 패키지 저장소로써

개발자가 소스코드를 업로드하 면 자동으로 패키지화하여

사용자가 다운로드 받아 설치할 수 있게 해주는 소프트웨어 저장소 이다.

PPA를 통해 최신 버전들을 다운로드 할 수 있다.

 

* PPA 추가하기 add-apt-repository [저장소 이름]

apt install software-properties-common // PPA를 추가 또는 제거하는 툴

add-apt-repository ppa:ondrej/php // PHP PPA 추가

apt update apt install libapache2-mod-php7.2 openssl php-imagick php7.2-common php7.2-curl php7.2-gd php7.2-imap php7.2-intl php7.2-json php7.2-ldap php7.2-mbstring php7.2-mysql php7.2-pgsql php-smbclient php-ssh2 php7.2-sqlite3 - 5 - php7.2-xml php7.2-zip 설치가 완료되었다면, Apache를 재실행한다.

 

enter

6

70

70

 

add-apt-repository ppa:ondrej/php

apt update

apt install libapache2-mod-php7.4 openssl php-imagick php7.4-common php7.4-curl php7.4-gd php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-pgsql php-smbclient php-ssh2 php7.4-sqlite3 php7.4-xml php7.4-zip  ==>그대로 붙여넣기(6개월사이 7.4로 업데이트됨.)

Y

 

root@47a04edd2118:/# service apache2 start

root@47a04edd2118:/# service apache2 enable

 

 

[root@samba etc]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.51.9 

 

root@47a04edd2118:/# service apache2 start

 

 

ddl dml dcl 만 할줄알면 마리나DB를 사용가능하다.

root@47a04edd2118:/# apt install mariadb-server  ==>mariadb-server 설치

 

root@47a04edd2118:/# service mysql start

root@47a04edd2118:/# mysql -u root -p
Enter password: 1111


MariaDB [(none)]> GRANT ALL ON owncloud_db.* TO 'owncloud_user'@'localhost' IDENTIFIED BY '1111';

MariaDB [(none)]> flush privileges;    =>현재 사용중인 MySQL의 캐시를 지우고 새로운 설정을 적용하기 위해 사용합니다. 이 명령어를 사용하려는 사용자는 reload권한을 가지고 있어야 합니다.

 

root@47a04edd2118:/# apt install wget

 

https://owncloud.com/download-server/

root@47a04edd2118:/# wget https://download.owncloud.com/server/stable/owncloud-complete-latest.zip

==>다운로드 진행

root@47a04edd2118:/# apt install unzip  ==>unzip도 깔기

root@47a04edd2118:/# unzip owncloud-complete-latest.zip -d /var/www

root@47a04edd2118:/# rm -rf owncloud-complete-latest.zipo   ==>용량크니까 삭제하기
root@47a04edd2118:/# cd /var/www
root@47a04edd2118:/var/www# ls
html  owncloud   ==>확인
root@47a04edd2118:/var/www# 

root@47a04edd2118:/var/www# ls ./html
index.html   ==> 이 파일이 

이거다.

 

root@47a04edd2118:/var/www# chown -R www-data:www-data /var/www/owncloud/

==> owncloud를 www-data의 소유로 바꾼다.

ls -l

chmod -R 755 /var/www/owncloud/

 

apt install vim ==>vim 설치

vi /etc/apache2/conf-available/owncloud.conf

 

vi /etc/apache2/conf-available/owncloud.conf 내용은 다음과 같다.

복붙!

Alias /owncloud "/var/www/owncloud/"

 

<Directory /var/www/owncloud/>
 Options +FollowSymlinks
 AllowOverride All
<IfModule mod_dav.c>
 Dav off
</IfModule>
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
</Directory>

 

((

Alias /owncloud "/var/www/owncloud/"

 

<Directory /var/www/owncloud/>
 Options +FollowSymlinks
 AllowOverride All
<IfModule mod_dav.c>
 Dav off
</IfModule>
SetEnv HOME /var/www/owncloud    ==>환경변수
SetEnv HTTP_HOME /var/www/owncloud   ==>환경변수
</Directory>

))

root@47a04edd2118:/var/www# a2enconf owncloud

root@47a04edd2118:/var/www# a2enmod rewrite

root@47a04edd2118:/var/www# a2enmod headers

root@47a04edd2118:/var/www# a2enmod env
root@47a04edd2118:/var/www# a2enmod dir
root@47a04edd2118:/var/www# a2enmod mime

 

root@47a04edd2118:/var/www# service apache2 restart

 

 

 

 

 

관리자계정 만들기

http://10.10.51.9/owncloud/

 

 

 

 

 

[root@samba sunny]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED       STATUS                     PORTS     NAMES
47a04edd2118   ubuntu:20.04   "/bin/bash"   3 hours ago   Exited (1) 3 seconds ago             owncloud
[root@samba sunny]# docker start owncloud
owncloud

 

[root@samba sunny]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)  ==>disbled 여야함.
   Active: inactive (dead) since Mon 2023-05-08 11:18:28 KST; 3h 58min ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 7860 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 1157 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
 Main PID: 1157 (code=exited, status=0/SUCCESS)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

[root@samba sunny]# docker attach owncloud
root@47a04edd2118:/# service apache2 status
 * apache2 is not running

root@47a04edd2118:/# service apache2 start

 

 

 

 

만약 아이피만 넣고도 들어가게 하게 하고싶으면 alias 를 만져주면된다.
동기화 완

 

 

 


서울 서버에서 만들

 

 

awskey 는 내 금고 열쇠. 잃어버리면 큰일난다!

은행인증서도 RSA방식을 쓴다.

.pem 는 secureCRT용

.ppk는 쁘띠용 

 

 

 

 

 

13.209.50.96 이 공공ip 근데 재부팅하면 ip주소 바뀐다....

 

 

elastaic IP(탄력적 IP)를 할당받자.

탄력적 ip주소 할당

 

 

 

공인아이피를 무료로 쓰는것(아마존은 인스턴스에 연결을해야 무료다. 연결안하면 돈나감.,)

15.165.60.240 은 이제 내 고정 아이피가 됨.

 

15.165.60.240 은 이제 재부팅해도 안바뀐다!!! 인스턴스에 붙였기 때문에!

 

 

 

 

 

 

아까 만든 인증키 awskey.pem

 

다시 실행

ec2-user
여기서 패스워드 생성

 

이제 이걸 도메인에 붙일거다(www.moon.com 하면 들어갈수있게)

 

 

 

원래는 kisa에서 도메인을 사야하지만 500원주고 살수있는 사이트가 있다.

hjlee113.shop

 

 

 

DNS 검색 서비스

 

추가하고 hjlee113.shop넣고 생성하기

 

이제 A레코드 만들기

가비아에 알려줘야할 4가지
맨뒤에 . 빼고 복붙
소유자인증하고 확인누르면 도메인 설정됨.

20분~2시간 기다리면 네임서버 됨!

 

 

cmd 에서 이름풀이

 

 

 

 

 

 

 

 

 

728x90

'네트워크 수업 > Docker' 카테고리의 다른 글

클라우드서버 구축 nextcoud 23.05.11  (0) 2023.05.11
CLI(Command-line Interface) 23.05.11  (0) 2023.05.11
[실습] IOS_FW GNS3 23.05.10  (0) 2023.05.10
방화벽 23.05.10  (0) 2023.05.10
Docker(AWS) 23.05.09  (0) 2023.05.09

댓글