'docker'에 해당되는 글 2건

  1. 2019.11.07 Flex Media Server 설치 (@docker)
  2. 2019.11.07 DOCKER 소개 및 설치, 기본 명령어 소개

Flex Media Server 설치 (@docker)

Posted by TheFanStory Linux/ubuntu : 2019. 11. 7. 13:28

아래 링크를 참고하세요

https://blog.knowledgebox.online/linux/lnx-plex-with-docker/

 

Docker로 Plex Media Server 설치하기

Docker를 사용하여 Plex Media Server를 설치하는 방법 정리

blog.knowledgebox.online

 

 

더보기

[ Flex Media 설치 ]  @ docker

Docker로 컨테이너를 실행하는 간단한 방법은 터미널에서 docker run 명령어를 사용하는 것입니다.
설정이 복잡하지 않을 때는 docker run 명령어로 실행하는 것이 그다지 문제가 되지 않지만, 설정이 복잡해질 경우에는 명령어가 굉장히 복잡해지기 때문에 현실적으로 사용하기가 어렵습니다.
이 포스트에서는 조금 더 편리한 사용을 위해 YAML 방식의 설정 파일을 이용하는 docker-compose를 사용하여 컨테이너를 실행할 예정입니다.

 

 

 

1. 환경설정

 

홈디렉토리에 Docker 및 Plex Media Server의 설정을 저장할 디렉토리를 아래와 같이 생성합니다.

[계정@localhost ~]$ > mkdir ~/docker [계정@localhost ~]$ > cd docker [계정@localhost ~/docker]$ > mkdir plex [계정@localhost ~/docker]$ > cd plex [계정@localhost ~/docker/plex]$ > mkdir config

 

 

docker-compose.yml 파일을 다음과 같이 생성합니다.
자신의 환경에 맞게 수정하세요.

 

[계정@localhost ~]$ > cd ~/docker

[계정@localhost ~/docker]$ > vim docker-compose.yml

 

version: '2'

services: plex:

  container_name: plex

  image: plexinc/pms-docker

  restart: unless-stopped

  networks:

    - UDN_Service

  ports:

    - 32400:32400/tcp

    - 3005:3005/tcp

    - 8324:8324/tcp

    - 32469:32469/tcp

    - 1900:1900/udp

    - 32410:32410/udp

    - 32412:32412/udp

    - 32413:32413/udp

    - 32414:32414/udp

  volumes:

    - /storage/public:/data

    - /home/계정/docker/plex/config:/config

  environment:

    - PLEX_UID=1000

    - PLEX_GID=100

    - TZ=Asia/Seoul

    - VERSION=latest

    - PLEX_CLAIM=claim-TB4R~~~~~와 같은 claim token

    - ADVERTISE_IP=http://외부에 공개할 IP 주소 또는 URL:32400/

  hostname: 사용할 Plex Media Server 이름

networks:

  UDN_Database:

    external:

      name: UDN_Database

  UDN_Service:

    external:

      name: UDN_Service

 

 

* networks:
docker-compose가 생성하는 기본 네트워크가 아닌 별도의 네트워크를 사용하겠다는 의미입니다.
이 항목을 설정하지 않으면 docker-compose가 생성하는 기본 네트워크를 사용하게 되는데, docker-compose.yml 파일이 있는 디렉토리명_default와 같은 이름으로 생성됩니다.
docker-compose.yml에 지정된 모든 Docker 컨테이너는 별도 설정이 없을 경우 기본적으로 docker-compose가 생성한 기본 네트워크에 연결됩니다.

 

[계정@localhost ~/docker]$ > docker network ls

NETWORK ID NAME DRIVER SCOPE

3640e59420fe UDN_Database bridge local

e38fb7c9fe3c UDN_Service bridge local

4398feaef58e bridge bridge local

f780747b759b docker_default bridge local

4756bb8ee162 host host local

0bedac919e79 none null local

 

networks:에서 지정한 네트워크는 docker-compose.yml 파일에 설정되어 있어야 합니다.
Database용 네트워크(UDN_Database)와 서비스용 네트워크(UDN_Service)로 각각 설정하였고, Plex Media Server 컨테이너는 UDN_Service 네트워크를 사용하도록 지정하였습니다.

 

networks:

  UDN_Database:

    external:

      name: UDN_Database

  UDN_Service:

    external:

      name: UDN_Service

 

 

Docker 네트워크를 생성하는 방법은 아래를 참고하세요.

 

[계정@localhost ~/docker]$ > docker network create --driver bridge --subnet 10.10.10.0/24 --gateway 10.10.10.1 UDN_Database

[계정@localhost ~/docker]$ > docker network create --driver bridge --subnet 10.10.20.0/24 --gateway 10.10.20.1 UDN_Service

 

 

* volumes:
Docker 컨테이너(Plex Media Server)와 Host PC의 디렉토리 연결을 위한 항목입니다.

/storage/public:/data는 컨텐츠가 저장되어 있는 Host PC의 /storage/public 디렉토리를 Docker 컨테이너(Plex Media Server)의 /data 디렉토리에 연결한다는 의미입니다.
이 설정을 사용해 Host PC의 컨텐츠를 Docker 컨테이너(Plex Media Servder)를 통해 서비스 할 수 있습니다.

 

/storage/public을 자신의 환경에 맞게 변경하세요.

 

/home/계정/docker/plex/config:/config는 Host PC의 /home/계정/docker/plex/config 디렉토리를 Docker 컨테이너(Plex Media Server)의 /config 디렉토리에 연결한다는 의미입니다.

Docker 컨테이너(Plex Media Server)의 /config 디렉토리는 Plex Media Server의 설정이 저장되는 디렉토리입니다.
이 설정을 사용해 Docker 컨테이너(Plex Media Server)의 설정을 Host PC에 영구적으로 저장할 수 있습니다.
설정하지 않아도 무방하나 이런 경우 컨테이너를 삭제하면 설정이 초기화됩니다.
Plex Media Server의 설정을 계속 유지하기 위해 컨테이너 내부가 아닌 Host PC에 설정을 저장하는 것이 좋습니다.
/home/계정/docker/plex/config를 자신의 환경에 맞게 변경하세요.

 

 

* environment:
Docker 컨테이너(Plex Media Server)의 환경변수를 설정하기 위한 항목입니다.

environment에서 중요한 항목은 PLEX_CLAIM과 ADVERTISE_IP입니다.
PLEX_CLAIM 코드는 https://plex.tv/claim에 접속하여 받을 수 있습니다.

시간제한이 있으므로 유의하세요

ADVERTISE_IP는 외부에서 Plex Media Server에 접속할 수 있도록 IP 또는 URL을 설정하는 항목입니다.
ADVERTISE_IP를 설정하지 않으면 Plex Media Server가 실행되는 동일 네트워크에서만 접속할 수 있습니다.

 

 

2. 실행

docker-compose.yml 파일을 생성한 후 다음과 같은 명령어로 컨테이너를 실행합니다.

[계정@localhost ~]$ > cd ~/docker 

[계정@localhost ~/docker]$ > docker-compose up -d plex

 

docker-compose.yml에서 plex라는 이름을 가진 컨테이너를 백그라운드(-d)로 실행(up)하라는 의미입니다.
-d 옵션을 주지 않으면 터미널 창을 닫을 때 Docker 컨테이너(Plex Media Server)가 같이 종료됩니다.

 

  

DOCKER 소개 및 설치, 기본 명령어 소개

Posted by TheFanStory Linux/ubuntu : 2019. 11. 7. 13:12

도커(Docker)는 2013년에 등장한 새로운 컨테이너 기반 가상화 도구.

 

Host OS 위에 Guest OS 를 통째로 올리는 기존 가상화 기술과는 차이가 있다.

 

 

 

 

[초보자를 위한 도커 안내서]

 

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

 

초보를 위한 도커 안내서 - 도커란 무엇인가?

도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이미지에 대해 알아보고 왜 이렇게 도커가 인기 인지 하나하나 살펴보겠습니다.

subicura.com

https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

 

초보를 위한 도커 안내서 - 설치하고 컨테이너 실행하기

초보를 위한 도커 안내서 2번째 글입니다. 도커의 기본적인 내용을 이야기 했던 첫번째 글에 이어 실제로 도커를 설치하고 컨테이너를 실행하면서 도커 명령어를 알아봅니다. 도커를 처음 접하는 분들을 위해 아주 가볍게 자주 쓰는 명령어를 다루었습니다.

subicura.com

https://subicura.com/2017/02/10/docker-guide-for-beginners-create-image-and-deploy.html

 

초보를 위한 도커 안내서 - 이미지 만들고 배포하기

이 글은 초보를 위한 도커 안내서 - 설치부터 배포까지 시리즈의 마지막 글입니다. 지난 글에서 도커를 설치하고 컨테이너를 실행해 보았으니 이번엔 이미지를 만들고 서버에 배포해보도록 하겠습니다.

subicura.com

 

 

 

[도커 무작정 따라하기]  (마지막에 책광고)

https://www.slideshare.net/pyrasis/docker-fordummies-44424016

 

도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!

도커 무작정 따라하기 - 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다! 도커의 기본 개념부터 설치와 사용 방법까지 설명합니다. 더 자세한 내용은 가장 빨리 만나는 도커(Docker)를 참조해주세요~ http://www.pyrasis.com/private/2014/11/…

www.slideshare.net

[docker 란 무엇인가?  : docker 기본 사용법]  (위 도커 무작정 따라하기 요약판, 지막에 책광고)

https://www.slideshare.net/pyrasis/docker-docker-38286477?next_slideshow=1

 

Docker란 무엇인가? : Docker 기본 사용법

Docker란 무엇인가? : Docker 기본 사용법 Docker Seoul Meetup #1 발표 자료입니다. Docker 기본 개념과 사용 방법을 설명하였습니다.

www.slideshare.net

 

 

 

 

도커 튜토리얼 : 깐 김에 배포까지

https://blog.nacyot.com/articles/2014-01-27-easy-deploy-with-docker/

 

nacyot의 프로그래밍 이야기 :: 도커(Docker) 튜토리얼 : 깐 김에 배포까지

도커(Docker)는 2013년에 등장한 새로운 컨테이너 기반 가상화 도구입니다. 도커는 계층화된 파일시스템(AUFS, BTRFS 등)을 사용해 가상화된 컨테이너의 변경사항을 모두 추적하고 관리합니다. 이를 통해서 컨테이너의 특정 상태를 항상 보존해두고, 필요할 때 언제 어디서나(단, Docker가 설치만 되어있다면) 이를 실행할 수 있도록 도와주는 도구입니다. 이 글은 Docker 입문자를 위한 튜토리얼로, 도커의 기본 개념들과 사용법에 대해서 소개합니

blog.nacyot.com

 

 

 

 

더보기

[ DOCKER 설치]

아래 블로그를 참고

https://blog.knowledgebox.online/linux/lnx-plex-with-docker/

 

Docker로 Plex Media Server 설치하기

Docker를 사용하여 Plex Media Server를 설치하는 방법 정리

blog.knowledgebox.online

 

 

 

[ Docker 설치 ]

Docker는 기본적으로 Linux에서 동작합니다.
Windows 또는 Mac에서는 Docker for Windows 또는 Docker for Mac을 설치하세요.
필자는 Arch Linux에서 Docker를 설치하였지만, Docker의 특성상 다른 배포판에서도 간단히 설치할 수 있습니다.

  • Arch Linux

    [계정@localhost ~]$ > sudo pacman -Syu docker docker-compose

  • Ubuntu

    [계정@localhost ~]$ > sudo apt install docker docker-compose

조금 더 편하게 Docker를 사용하기 위해 현재 로그인한 사용자를 docker 그룹에 넣어줍니다.

[계정@localhost ~]$ > sudo usermod -aG docker $USER

재부팅시 자동으로 실행되도록 서비스를 등록합니다.

 

      [계정@localhost ~]$ > sudo systemctl enable docker.service //서비스 활성화

      [계정@localhost ~]$ > sudo systemctl start docker.service //서비스 시작

      [계정@localhost ~]$ > docker info //서비스 확인

      [계정@localhost ~]$ > docker version //Docker 클라이언트 및 서버 정보 확인

 

 

 

 

 

 

[ DOCKER 기본 명령어 ]

 

 

ㅇ docke 설치

 

curl -fsSL https://get.docker.com/ | sudo sh

 

 

ㅇ sudo  없이 docker 사용하기

 

sudo su 

: root 권한 획득

 

또는

 

sudo usermod -aG docker $USER # 현재 접속중인 사용자에게 권한주기

sudo usermod -aG docker your-user # your-user 사용자에게 권한주기

sudo service docker restart 

현재 계정에서 로그인 / 로그아웃

 

 

* docker 그룹은 root 권환과 동일하므로 꼭 필요한 계정만 포함

 

 

ㅇ docker version  

도커 버전 확인

 

 

ㅇ 컨테이너 실행하기

 

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

 

옵션설명

-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정, 생략시 도커가 이름 자동 생성
–rm 프로세스 종료시 컨테이너 자동 제거
-it

-i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션

-i : interactive  , -t : pseudo-tty

–link

컨테이너 연결 [컨테이너명:별칭]

deprecated 되어 조만간 사용 불가되므로 docker network 기능을 사용하는것을 권장.

 

 

ㅇ docker 목록 확인하기

 

docker ps [OPTIONS]

 

ex) 

docker ps 

 

옵션설명

-a :  실행되었다가 종료된 컨테이너(Exited(0))가 추가로 보임, 종료된 컨테이너는 재시작할 수 있고, 명시적으로 삭제할 수도 있다.

--all : 

 

 

 

o 이미지와 컨테이너 세부정보 확인하기

 

docker inspect hello-nginx

 

 

 

 

ㅇ 컨테이너에서 파일 꺼내기

 

docker cp  hello-nginx:/etc/nginx/nginx/conf ./

 

 

 

ㅇ 컨테이너에서 변경된 파일 확인하기

 

docker diff hello-nginx

 

 

 

ㅇ 컨테이너 변경사항을 이미지로 저장하기

 

docker commit -a "Foo Bar <foo@bar.com>" -m "add hello.txt" hello-nginx hello:0.2

 

 

 

 

 

ㅇ 컨테이너 중지하기

 

docker stop [OPTIONS] CONTAINER [CONTAINER...]

 

실행중인 컨테이너를 하나 또는 여러개 (띄어쓰기로 구분) 중지할 수 있다.

 

 

ex) TENSORFLOW 컨테이너 중지

docker ps # get container ID of TENSORFLOW

docker stop ${TENSORFLOW_CONTAINER_ID}

docker ps -a # show all containers

 

* 도커 ID의 전체 길이는 64자리 입니다. 하지만 명령어의 인자로 전달할 때는 전부 입력하지 않아도 됩니다. 예를 들어 ID가 abcdefgh...라면 abcd만 입력해도 됩니다. 앞부분이 겹치지 않는다면 1-2자만 입력해도 됩니다.

 

 

 

ㅇ 중지된 컨테이너 다시 시작하기

docker start CONTAINER 

 

 

ㅇ 컨테이너 재시작

 

docker restart CONTAINER 

 

 

ㅇ 컨테이너 제거하기

 

docker rm [OPTIONS] CONTAINER [CONTAINER...]

 

 

ex)

docker ps -a # get container ID docker

rm ${UBUNTU_CONTAINER_ID} ${TENSORFLOW_CONTAINER_ID}

docker ps -a # check exist

 

ex) 중지된 컨테이너 ID를 가져와서 한번에 삭제

docker rm -v $(docker ps -a -q -f status=exited)

 

* CONTAINER  는 이름 또는 컨테이너 아이디 사용 가능

 

 

 

 

 

 도커가 다운로드한 이미지 목록 확인하기 (images)

 

docker images [OPTIONS] [REPOSITORY[:TAG]]

 

ex)

docker images

 

 

 

ㅇ 이미지 다운로드하기 (pull)

 

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

 

ex) ubuntu 18.04 다운로드

docker pull ubuntu:18.04

 

이미지가 업데이트 된 경우는 pull명령어를 통해 새로 다운받을 수 있습니다.

 

 

 

ㅇ 이미지 삭제하기 (rmi)

 

docker rmi [OPTIONS] IMAGE [IMAGE...]

 

images명령어를 통해 얻은 이미지 목록에서 이미지 ID를 입력하면 삭제

docker rmi ubuntu 같이 이름만 지정하면 ubuntu 이름을 가진 모든 이미지가 삭제됨

이미지에서 (종료상태를 포함한) 파생된 컨테이너가 하나라도 있다면 이미지는 삭제할 수 없음

 

 

ㅇ 이미지 검색하기

 

docker search ubuntu

: ubuntu 관련 이미지들이 검색됨

 

 

 

 

 

ㅇ 컨테이너 로그 보기 (logs)

 

docker logs [OPTIONS] CONTAINER

 

 

ex)    --tail옵션으로 WORDPRESS 로그 마지막 10줄만 출력

docker ps

docker logs  --tail 10  ${WORDPRESS_CONTAINER_ID}

 

ex)  실시간 로그 확인 ( 중지는 ctrl-c )

docker logs -f ${WORDPRESS_CONTAINER_ID}

 

 

 

 

ㅇ 컨테이너에 접속하기

 

docker attach  CONTAINER

 

bash shell 이 실행된 컨테이너라면 입력 가능, 그외에는 출력만 볼 수 있음

exit 또는 ctrl-D 를 입력하면 컨테어나가 정지되므로 Ctrl-P , Ctrl-Q 로  컨테이너를 정지시키지 않고 빠져나온다.

 

 

 

 

ㅇ 컨테이너 명령어 실행하기 (exec)

: 실행중인 컨테이너에 들어가보거나 컨테이너의 파일을 실행하고 싶을 때 exec

 

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

 

ex) 실행중인 mysql 에 접속

docker exec -it mysql /bin/bash

 

# MySQL test

$ mysql -uroot

 

mysql> show databases;

+--------------------+

| Database             |

+--------------------+

| information_schema |

| mysql                  |

| performance_schema |

| sys                     |

| wp                     |

+--------------------+

5 rows in set (0.00 sec)

 

mysql> quit

exit

 

ex) 쉘로 완전한 권한을 얻는 방법말고 바로 mysql명령어를 실행

docker exec -it mysql mysql -uroot

 

# MySQL test

$ mysql -uroot

 

mysql> show databases;

+--------------------+

| Database            |

+--------------------+

| information_schema |

| mysql                   |

| performance_schema |

| sys                       |

| wp                      |

+--------------------+

5 rows in set (0.00 sec)

 

mysql> quit

 

 

 

 

 

ㅇ 컨테이너 업데이트

도커에서 컨테이너를 업데이트 하려면 새 버전의 이미지를 다운(pull)받고 기존 컨테이너를 삭제(stop, rm) 한 후 새 이미지를 기반으로 새 컨테이너를 실행(run)하면 됩니다.

 

 

 

 

ㅇ 컨테이너 데이타 백업

 

컨테이너 삭제시 유지해야하는 데이터는 반드시 컨테이너 내부가 아닌 외부 스토리지에 저장해야 합니다. 

데이터 볼륨Data volumes을 컨테이너에 추가해서 사용해하면 해당 디렉토리는 컨테이너와 별도로 저장되고 컨테이너를 삭제해도 데이터가 지워지지 않습니다.

 

ex) MySQL이라면 /var/lib/mysql디렉토리에 모든 데이터베이스 정보가 담기므로 호스트의 특정 디렉토리를 연결해주면 됩니다.

# before

docker run -d -p 3306:3306 \

   -e MYSQL_ALLOW_EMPTY_PASSWORD=true \

   --name mysql \

   mysql:5.7

 

# after

docker run -d -p 3306:3306 \

   -e MYSQL_ALLOW_EMPTY_PASSWORD=true \

   --name mysql \

   -v /my/own/datadir:/var/lib/mysql \ # <- volume mount

   mysql:5.7

 

위 샘플은 호스트의 /my/own/datadir디렉토리를 컨테이너의 /var/lib/mysql디렉토리로 마운트 하였습니다. 이제 데이터베이스 파일은 호스트의 /my/own/datadir디렉토리에 저장되고 컨테이너를 삭제해도 데이터는 사라지지 않습니다. 최신버전의 MySQL 이미지를 다운받고 다시 컨테이너를 실행할 때 동일한 디렉토리를 마운트 한다면 그대로 데이터를 사용할 수 있습니다. 

 

 

 

 

 

[ Docker Compose ]

지금까지 도커를 커맨드라인에서 명령어로 작업했습니다. 지금은 간단한 작업만 했기 때문에 명령이 길지 않지만 컨테이너 조합이 많아지고 여러가지 설정이 추가되면 명령어가 금방 복잡해집니다.

 

도커는 복잡한 설정을 쉽게 관리하기 위해 YAML방식의 설정파일을 이용한 Docker Compose라는 툴을 제공합니다. 

 

 

ㅇ Docker compose 설치

curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

 

# test

docker-compose version

 

 

ㅇ wordpress 만들기

기존에 커맨드라인 명령어로 만들었던 wordpress를 compose를 이용해 만들어 보겠습니다.

 

먼저 빈 디렉토리를 하나 만들고 docker-compose.yml파일을 만들어 설정을 입력.

version: '2' 

services: 
   db: 
     image: mysql:5.7 
     volumes: 
       - db_data:/var/lib/mysql 
     restart: always 
     environment: 
       MYSQL_ROOT_PASSWORD: wordpress 
       MYSQL_DATABASE: wordpress 
       MYSQL_USER: wordpress 
       MYSQL_PASSWORD: wordpress 

   wordpress: 
     depends_on: 
       - db 
     image: wordpress:latest 
     volumes: 
       - wp_data:/var/www/html 
     ports: 
       - "8000:80" 
     restart: always 
     environment: 
       WORDPRESS_DB_HOST: db:3306 
       WORDPRESS_DB_PASSWORD: wordpress 
volumes: 
    db_data: 
    wp_data:

 

실행

docker-compose up 

 

 

 

'Linux > ubuntu' 카테고리의 다른 글

Flex 대신 jellyfin 을 운용해보자 (@docker)  (0) 2019.11.07
Flex Media Server 설치 (@docker)  (0) 2019.11.07
ubuntu 시스템 정보 확인  (0) 2019.11.07
  
 «이전 1  다음»