728x90

원문출처 : https://scbyun.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-squiddocker-container-%EC%98%AC%EB%A6%AC%EA%B8%B0

 

Squid를 Docker 컨테이너로 실행하는 방법

Squid를 Docker 컨테이너로 실행하는 방법 1. Docker 설치 Docker를 설치해야 합니다. 2. Squid Docker 이미지 다운로드 Docker Hub에서 Squid의 공식 이미지를 다운로드하실 수 있습니다. docker hub https://hub.docker.c

scbyun.com

 

Squid를 Docker 컨테이너로 실행하는 방법

1. Docker 설치

Docker를 설치해야 합니다.

 

2. Squid Docker 이미지 다운로드

Docker Hub에서 Squid의 공식 이미지를 다운로드하실 수 있습니다.

 

3. docker compose 파일 생성

vim docker-compose.yaml
version: '3.9'
services:
  squid-container:
    image: ubuntu/squid:5.2-22.04_beta
    restart: always
    container_name: squid-container
    volumes:
      - ./squid.conf:/etc/squid/squid.conf
    ports:
      - 8080:3128

4. Squid 환경 설정 파일

Squid 컨테이너를 실행하기 위해서는 몇 가지 환경 변수와 포트 매핑을 설정해야 합니다.

cat squid.conf
acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl localnet src fc00::/7               # RFC 4193 local private network range
acl localnet src fe80::/10              # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access deny manager

include /etc/squid/conf.d/*.conf

http_access allow localhost

http_access deny all

http_port 3128

coredump_dir /var/spool/squid

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims

refresh_pattern .               0       20%     4320

/etc/squid/conf.d/*.conf

더보기

$ cat conf.d/debian.conf
#
# Squid configuration settings for Debian
#

# Logs are managed by logrotate on Debian
logfile_rotate 0

# For extra security Debian packages only allow
# localhost to use the proxy on new installs
#
http_access allow localnet
$ cat conf.d/rock.conf
# Set max_filedescriptors to avoid using system's RLIMIT_NOFILE. See LP: #1978272
max_filedescriptors 1024

---

squid 운영을 위한 설정

docker compose 파일 편집

vim docker-compose.yaml
version: '3.9'
services:
  squid-container:
    image: ubuntu/squid:5.2-22.04_beta
    restart: always
    container_name: squid-container
    volumes:
      - ./squid.conf:/etc/squid/squid.conf
      - ./domains.list:/etc/squid/domains.txt
      - ./ips.list:/etc/squid/ips.txt
      - ./log:/var/log/squid
    ports:
      - 8080:3128

Squid 환경 설정 파일 편집

vim squid.conf
# Access Control Lists (ACLs)
acl aws_vpc_cidr src 172.16.0.0/16
acl idc_cidr src 192.168.50.0/24
acl idc_cidr src 192.168.20.0/24

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# 특정 IP 주소 또는 도메인 허용
acl allow_ip dst "/etc/squid/ips.txt"
acl allow_domain dstdomain "/etc/squid/domains.txt"

http_access allow aws_vpc_cidr allow_ip
http_access allow aws_vpc_cidr allow_domain
http_access allow idc_cidr allow_ip
http_access allow idc_cidr allow_domain

# Deny all other connections
http_access deny all

# Port Configuration
http_port 3128

# Log Configuration
access_log daemon:/var/log/squid/access.log

# Cache Configuration
cache_mem 512 MB
maximum_object_size 128 MB
cache_dir ufs /var/spool/squid 10000 16 256

# Refresh Patterns
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern . 0 20% 4320

# via version off
via off

# Server version off
httpd_suppress_version_string on
reply_header_access Server deny all

# Cache version off
reply_header_access X-Cache deny all
reply_header_access X-Cache-Lookup deny all

도메인 리스트 파일 생성

vim domains.list
.ubuntu.com #허용할 Domains / URL
.naver.com

아이피 주소 리스트 파일 생성

vim ips.list
200.200.200.200 #허용할 IP

Squid log 디렉토리 생성

mkdir log

Squid log의 소유권 설정

chown 13.13 log

docker compose 유효성 검사

docker-compose config

docker compose 실행

docker-compose up -d

docker compose 컨테이너 목록 확인

docker-compose ps
$ docker-compose ps
     Name                    Command               State           Ports         
---------------------------------------------------------------------------------
squid-container   entrypoint.sh -f /etc/squi ...   Up      0.0.0.0:8080->3128/tcp
docker-compose exec squid-container bash
728x90

참고사이트 : https://svrforum.com/recent/919069?page=2 

 

서버포럼 - Docker 컨테이너의 로그를 실시간으로 확인하기 Dozzle (강추⭐)

안녕하세요. 달소입니다. 이번에 소개해드릴 오픈소스 프로젝트는 Docker의 log를 실시간으로 확인할 수 있게 도와주는 Dozzle 입니다. 기본적으로 Portianer를 많이들 쓰시지만 Dozzle의 경우 로그 특화

svrforum.com

version: "3"
services:
  dozzle:
    container_name: dozzle
    image: amir20/dozzle:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 8080:8080
    restart: always
728x90

참고 사이트 : https://github.com/CorentinTh/it-tools

 

GitHub - CorentinTh/it-tools: Collection of handy online tools for developers, with great UX.

Collection of handy online tools for developers, with great UX. - GitHub - CorentinTh/it-tools: Collection of handy online tools for developers, with great UX.

github.com

version: '3.9'
services:
    corentinth:
        image: 'ghcr.io/corentinth/it-tools:latest'
        ports:
            - '8080:80'
        restart: always
        container_name: it-tools

728x90

https://codebeautify.org/yaml-validator

 

YAML Validator Online to validate YAML data

Best and Free YAML Validator is a web based validator and re-formatter for YAML. Also know as YAML Lint.

codebeautify.org

 

docker-compose.yml 파일 생성시 문법 검사 사이트 소개합니다.

728x90

원문출처 : https://github.com/Frooodle/Stirling-PDF

 

GitHub - Frooodle/Stirling-PDF: locally hosted web application that allows you to perform various operations on PDF files

locally hosted web application that allows you to perform various operations on PDF files - GitHub - Frooodle/Stirling-PDF: locally hosted web application that allows you to perform various operati...

github.com

version: '3.3'
services:
  stirling-pdf:
    image: frooodle/s-pdf
    ports:
      - '8080:8080'
    volumes:
      - ./trainingData:/usr/share/tesseract-ocr/4.00/tessdata #Required for extra OCR languages
      - ./extraConfigs:/configs
#    environment:
#      APP_LOCALE: en_GB
#      APP_HOME_NAME: Stirling PDF
#      APP_HOME_DESCRIPTION: Your locally hosted one-stop-shop for all your PDF needs.
#      APP_NAVBAR_NAME: Stirling PDF
#      APP_ROOT_PATH: /
#      ALLOW_GOOGLE_VISIBILITY: true
728x90
version: '3.4'
services:
  web:
    image: 'jay94ks/docker-gb5:latest-auto-eb4'
    container_name: 'web'
    environment:
      - G5_GIT_TAG=v5.5.8.2.7     #그누보드 최신버전에 맞추세요
      - G5_MYSQL_HOST=web-db
      - G5_MYSQL_USER=myeb4
      - G5_MYSQL_PASSWORD=myeb4!
      - G5_MYSQL_DB=myeb4
      - G5_ADMIN_ID=<사용할 ADMIN ID>
      - G5_ADMIN_PASSWORD=<사용할 ADMIN 패스워드>
      - G5_ADMIN_NAME=<사용할 ADMIN 명>
      - G5_ADMIN_EMAIL=<사용할 ADMIN 이메일 주소 ex) 123@123.com>
      - G5_RM_IMORT_UTILS=yes
      - G5_RM_YC_OLD_UTIL=yes
    volumes:
      - "./g5:/var/www"
    ports:
        - 80:80
#    networks:
#      - 'web-net'
    restart: always

  web-db:
    image: 'mysql:latest'
    container_name: 'web-db'
    restart: always
    environment:
      MYSQL_DATABASE: 'myeb4'
      MYSQL_USER: 'myeb4'
      MYSQL_PASSWORD: 'myeb4!'
      MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
    volumes:
      - './db:/var/lib/mysql'
#    ports: # DB에 직접 접근해서 볼 수 있어야 하는게 아니라면 지정하지 마세요.
#      - '3309:3306'
    command:
      - '--character-set-client-handshake=FALSE'
      - '--character-set-server=utf8mb4'
      - '--collation-server=utf8mb4_unicode_ci'
#    networks:
#      - 'web-net'

#networks:
#  web-net:
#    driver: overlay

 

https://github.com/jay94ks/docker-gb5/tree/auto-eb4

 

GitHub - jay94ks/docker-gb5: Docker image for gnuboard5 or youngcart of SIR (sir.kr).

Docker image for gnuboard5 or youngcart of SIR (sir.kr). - GitHub - jay94ks/docker-gb5: Docker image for gnuboard5 or youngcart of SIR (sir.kr).

github.com

 

https://eyoom.net/share/4

 

[시즌4] CKEditor (ckeditor4_eyoom) - 웹에디터 > 공유자료실 - 이윰

안녕하세요.현재 이윰넷에서 사용중인 CKEditor 이윰빌더 버전인 ckeditor4_eyoom - 웹에디터 를 설치하실수 있게 공유자료실에 해당 파일을 업로드 합니다.다크모드를 지원하는 테마(유료테마)에서

eyoom.net

plugin.zip
0.76MB

 

728x90

1. 도커 컨테이너 안에 있는 파일을 로컬에 복사

쉬운 사용을 위해 가정을 하겠습니다.

컨테이너의 이름을 con, 복사 하는 파일 이름을 /root/data.txt라고 가정하고 복사하는 곳을 /home/dst/ 라고 가정하겠습니다.

# : 로 컨테이너와 파일의 위치를 구분한 뒤, 뒤에 복사할 곳의 경로를 적는다.
docker cp con:/root/data.txt /home/dst/

 

원래 사용하던 cp 명령어와 유사한데 단지 맨 앞에 docker가 붙고 복사할 경로에 컨테이너 이름만 넣은 것 뿐입니다.

간단하죠? 컨테이너 이름을 지정하지 않았다면 컨테이너 ID를 넣으셔도 됩니다.

 

2. 로컬의 파일을 도커 컨테이너 안으로 복사

감 잡으셨죠? 반대로만 하면 됩니다.

복사하는 파일을 /home/data.txt 라고 가정하고 컨테이너의 이름을 con, 복사 하는 곳을 /root/dst라고 가정하겠습니다.

# : 로 컨테이너와 파일의 위치를 구분한 뒤, 뒤에 복사할 곳의 경로를 적는다.
docker cp /home/data.txt con:/root/dst/

 

728x90

원문출처 : https://www.daleseo.com/docker-networks/

 

Docker 네트워크 사용법

Engineering Blog by Dale Seo

www.daleseo.com

 

Docker 컨테이너(container)는 격리된 환경에서 돌아가기 때문에 기본적으로 다른 컨테이너와의 통신이 불가능합니다. 하지만 여러 개의 컨테이너를 하나의 Docker 네트워크(network)에 연결시키면 서로 통신이 가능해집니다. 이번 포스팅에서는 컨테이너 간 네트워킹이 가능하도록 도와주는 Docker 네트워크에 대해서 알아보도록 하겠습니다.

네트워크 조회

Docker 네트워크의 기본은 내 컴퓨터에서 어떤 네트워크가 생성되어 있는지를 아는 것일 겁니다. docker network ls 커맨드를 사용하면 현재 생성되어 있는 Docker 네트워크 목록을 조회할 수 있습니다.

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
143496b94e57        bridge              bridge              local
311d6534f79f        host                host                local
aa89f58200a6        none                null                local

bridge, host, none은 Docker 데몬(daemon)이 실행되면서 디폴트로 생성되는 네트워크입니다. 대부분의 경우에는 이러한 디폴트 네트워크를 이용하는 것 보다는 사용자가 직접 네트워크를 생성해서 사용하는 것이 권장됩니다.

네트워크 종류

Docker 네트워크는 bridge, host, overlay 등 목적에 따라 다양한 종류의 네트워크 드라이버(driver)를 지원하는데요.

  • bridge 네트워크는 하나의 호스트 컴퓨터 내에서 여러 컨테이너들이 서로 소통할 수 있도록 해줍니다.
  • host 네트워크는 컨터이너를 호스트 컴퓨터와 동일한 네트워크에서 컨테이너를 돌리기 위해서 사용됩니다.
  • overlay 네트워크는 여러 호스트에 분산되어 돌아가는 컨테이너들 간에 네트워킹을 위해서 사용됩니다.

본 포스팅에서는 기본값이고 가장 많이 사용되는 bridge 네트워크에 대해서만 다루도록 하겠습니다.

네트워크 생성

먼저 docker network create 커맨드를 사용해서 새로운 Docker 네트워크를 생성해보도록 하겠습니다.

$ docker network create our-net
e6dfe4a9a5ec85abcb484662c30a3a0fc76df217dde76d52fac39fae8412ca68
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
143496b94e57        bridge              bridge              local
311d6534f79f        host                host                local
aa89f58200a6        none                null                local
e6dfe4a9a5ec        our-net             bridge              local

추가된 네트워크는 docker network ls 커맨드로 확인할 수 있습니다. -d 옵션을 사용하지 않았기 때문에 기본값인 bridge 네트워크로 생성된 것을 볼 수 있습니다.

네트워크 상세 정보

방금 추가한 네트워크의 상세 정보를 docker network inspect 커맨드로 확인해보도록 하겠습니다.

$ docker network inspect our-net
[
    {
        "Name": "our-net",
        "Id": "e6dfe4a9a5ec85abcb484662c30a3a0fc76df217dde76d52fac39fae8412ca68",
        "Created": "2020-04-26T19:23:04.563643516Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

Containers 항목을 보면 이 네트워크에 아무 컨테이너도 아직 연결되지 않은 것을 알 수 있습니다.

네트워크에 컨테이너 연결

먼저 컨테이너 하나를 one라는 이름으로 실행해보도록 하겠습니다.

$ docker run -itd --name one busybox
660bafdce2996378cde070dfd894731bb90745e46d2ab10d6504c0cc9f4bdea9

컨테이너를 실행할 때 --network 옵션을 명시해주지 않으면, 기본적으로 bride라는 이름의 디폴트 네트워크에 붙게 됩니다.

$ docker network inspect bridge
(... 생략 ...)
        "Containers": {
            "660bafdce2996378cde070dfd894731bb90745e46d2ab10d6504c0cc9f4bdea9": {
                "Name": "one",
                "EndpointID": "40b4bbd8385debf86eef2fc2136315e1a82fa1ef72877bfae25477d6e8e46726",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            },
        },
(... 생략 ...)

 one 컨테이너를 위에서 생성한 our-net 네트워크에 연결해보도록 하겠습니다. Docker 네트워크에 컨테이너를 연결할 때는 docker network connect 커맨드를 사용합니다.

$ docker network connect our-net one

our-net 네트워크의 상세 정보를 다시 확인해보면 Containers 항목에 one 컨테이너가 추가된 것을 볼 수 있습니다. one 컨테이너에 IP 172.19.0.2가 할당된 것도 확인할 수 있습니다.

$ docker network inspect our-net
[
    {
        "Name": "our-net",
        "Id": "e6dfe4a9a5ec85abcb484662c30a3a0fc76df217dde76d52fac39fae8412ca68",
        "Created": "2020-04-26T19:23:04.563643516Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "660bafdce2996378cde070dfd894731bb90745e46d2ab10d6504c0cc9f4bdea9": {
                "Name": "one",
                "EndpointID": "cc490148a533d40b3aff33a421cc9a01c731c75a8deb70ab729a5358f2fd381c",
                "MacAddress": "02:42:ac:13:00:02",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

네트워크로부터 컨테이너 연결 해제

하나의 컨테이너는 여러 개의 네트워크에 동시에 연결할 수 있습니다. 최초에 one 컨테이너를 생성할 때 bridge 네트워크 붙었기 때문에, 현재 one 컨테이너는 our-net 네트워크와 bridge 네트워크에 동시에 붙어있게 됩니다.

one 컨테이너를 bridge 네트워크로부터 때어 내도록 하겠습니다. Docker 네트워크로부터 컨테이너의 연결을 끊을 때는 docker network disconnect 커맨드를 사용합니다.

$ docker network disconnect bridge one

두번째 컨테이너 연결

네트워크에 홀로 있는 컨테이너는 큰 의미가 없을 것입니다. 하나의 컨테이너를 더 our-net 네트워크에 연결해보도록 하겠습니다.

이번에는 --network 옵션을 사용해서 컨테이너를 실행하면서 바로 연결할 네트워크를 지정해주도록 하겠습니다.

$ docker run -itd --name two --network our-net busybox
0e7fe8a59f9d3f8bd545d3e557ffd34100a09b8ebe92ae5a375f37a5d072873d

our-net 네트워크의 상세 정보를 확인해보면 two 컨테이너에 IP 172.19.0.3가 할당되어 연결되어 있는 것을 확인할 수 있습니다.

$ docker network inspect our-net
[
    {
        "Name": "our-net",
        "Id": "e6dfe4a9a5ec85abcb484662c30a3a0fc76df217dde76d52fac39fae8412ca68",
        "Created": "2020-04-26T19:23:04.563643516Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0e7fe8a59f9d3f8bd545d3e557ffd34100a09b8ebe92ae5a375f37a5d072873d": {
                "Name": "two",
                "EndpointID": "a0e3625e48f0b833cd551d6dfb3b1a2a7614f1343adbc5e6aefa860d917ddea9",
                "MacAddress": "02:42:ac:13:00:03",
                "IPv4Address": "172.19.0.3/16",
                "IPv6Address": ""
            },
            "660bafdce2996378cde070dfd894731bb90745e46d2ab10d6504c0cc9f4bdea9": {
                "Name": "one",
                "EndpointID": "cc490148a533d40b3aff33a421cc9a01c731c75a8deb70ab729a5358f2fd381c",
                "MacAddress": "02:42:ac:13:00:02",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

컨테이너 간 네트워킹

이제 두 개의 컨테이너가 네트워크를 통해 서로 소통이 가능한지 테스트를 해보도록 하겠습니다.

먼저 one 컨테이너에서 two 컨테이너를 상대로 ping 명령어를 날려보겠습니다. 컨테이너 이름을 호스트네임(hostname)처럼 사용할 수 있습니다.

$ docker exec one ping two
PING two (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.119 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.105 ms
64 bytes from 172.19.0.3: seq=2 ttl=64 time=0.116 ms
64 bytes from 172.19.0.3: seq=3 ttl=64 time=0.883 ms
64 bytes from 172.19.0.3: seq=4 ttl=64 time=0.127 ms

반대로 two 컨테이너에서 one 컨테이너를 상대로 ping 명령어를 날려보겠습니다. 이번에는 컨테이너 이름 대신에 IP를 사용하겠습니다.

$ docker exec two ping 172.19.0.2
PING 172.19.0.2 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.927 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.079 ms
64 bytes from 172.19.0.2: seq=2 ttl=64 time=0.080 ms
64 bytes from 172.19.0.2: seq=3 ttl=64 time=0.079 ms
64 bytes from 172.19.0.2: seq=4 ttl=64 time=0.107 ms

네트워크 제거

마지막으로 docker network rm 커맨드를 사용해서 our-net 네트워크를 제거해보겠습니다.

$ docker network rm our-net
Error response from daemon: error while removing network: network our-net id e6dfe4a9a5ec85abcb484662c30a3a0fc76df217dde76d52fac39fae8412ca68 has active endpoints

위와 같이 제거하려는 네트워크 상에서 실행 중인 컨테이너가 있을 때는 제거가 되지가 않습니다.

그럴 때는 해당 네트워크에 연결되어 실행 중인 모든 컨테이너를 먼저 중지 시키고, 네트워크를 삭제해야 합니다.

$ docker stop one two
one
two
$ docker network rm our-net
our-net

네트워크 청소

하나의 호스트 컴퓨터에서 다수의 컨테이너를 돌리다 보면 아무 컨테이너도 연결되어 있지 않은 네트워크가 생기가 마련입니다. 이럴 때는 docker network prune 커맨드를 이용해서 불필요한 네트워크를 한번에 모두 제거할 수 있습니다.

$ docker network prune
WARNING! This will remove all networks not used by at least one container.
Are you sure you want to continue? [y/N] y

마치면서

이상으로 Docker 네트워크의 전반적인 라이프사이클에 대해서 살펴보았습니다. 본 포스팅에서 사용했던 각 커맨드에 대한 좀 더 자세한 내용은 아래 Docekr CLI 레퍼런스를 참고바라겠습니다.

728x90

참고 사이트 - https://hub.docker.com/r/filerun/filerun/

 

Docker

 

hub.docker.com

version: '2'

services:
  db:
    image: mariadb:10.1
    ports:
     - 43306:3306
    environment:
      MYSQL_ROOT_PASSWORD: filerun
      MYSQL_USER: filerun
      MYSQL_PASSWORD: filerun
      MYSQL_DATABASE: filerun
    volumes:
      - ./db:/var/lib/mysql
    restart: always

  web:
    image: filerun/filerun
    environment:
      FR_DB_HOST: db
      FR_DB_PORT: 43306
      FR_DB_NAME: filerun
      FR_DB_USER: filerun
      FR_DB_PASS: filerun
      APACHE_RUN_USER: mirdate
      APACHE_RUN_USER_ID: 1000
      APACHE_RUN_GROUP: users
      APACHE_RUN_GROUP_ID: 984
    depends_on:
      - db
    links:
      - db:db
    ports:
      - "54480:80"
    volumes:
      - ./html:/var/www/html
      - ./user-files:/user-files
    restart: always

주의사항 - localhost:54480 으로 접속 후에 초기 셋업설정화면에서 DB 부분에 내부IP 입력할 것!

728x90

참고 사이트 - https://hub.docker.com/r/adguard/adguardhome

 

Docker Hub

 

hub.docker.com

version: '3.3'
services:
    adguardhome:
        image: adguard/adguardhome
        container_name: adguardhome
        volumes:
            - './work:/opt/adguardhome/work'
            - './conf:/opt/adguardhome/conf'
        ports:
            - '53:53/tcp'
            - '53:53/udp'
            # - '67:67/udp'    #DHCP Port(사용시 주석제거)
            # - '68:68/udp'    #DHCP Port(사용시 주석제거)
            - '80:80/tcp'      #설정UI Port(HTTP)
            - '443:443/tcp'    #설정UI Port(HTTPS)
            - '443:443/udp'    #설정UI Port(HTTPS)
            - '3000:3000/tcp'  #설치시 초기셋업 Port
            - '853:853/tcp'
            - '784:784/udp'
            - '853:853/udp'
            - '8853:8853/udp'
            - '5443:5443/tcp'
            - '5443:5443/udp'
        restart: always
728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/snapdrop

 

Docker Hub

 

hub.docker.com

Send-Anywhere 와 같은 기능을 하는 서버

 

---
version: "2.1"
services:
  snapdrop:
    image: lscr.io/linuxserver/snapdrop:latest
    container_name: snapdrop
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
    volumes:
      - ./config:/config
    ports:
      - 80:80
      - 443:443
    restart: always
728x90

원문출처 : https://myhappyman.tistory.com/226

 

Docker - 방화벽 이슈(서비스를 올리면 외부망 허용 현상)

도커를 통해 서비스를 구성해서 테스트를 하는 도중 테스트서버가 털려버렸다. 0.015 BTC를 내놓으면 어쩌구 저쩌구.. 다행이 다른건 털린건 없지만... (털릴 정보도 없는 빈 서버였다.) 기존에 설

myhappyman.tistory.com

도커를 통해 서비스를 구성해서 테스트를 하는 도중 테스트서버가 털려버렸다.

0.015 BTC를 내놓으면 어쩌구 저쩌구.. 다행이 다른건 털린건 없지만... (털릴 정보도 없는 빈 서버였다.)

 

기존에 설정해둔 방화벽 서비스 ufw가 일단 내려가 있었고, 도커로 엘라스틱 몽고 서비스를 구동해보니 서버에 항상 해당 포트들을 외부에서 접근 할 수 있도록 허용해주고 있었다.

 

찾아보니 도커가 기본적으로 서비스를 구동하면 기존에 UFW가 동작하고 있어도 기본 옵션이 열어주도록 되어 있었다.

 

Docker 방화벽 옵션 끄기

로컬 서비스에서만 도커에서 올린 서비스를 사용하고 싶은 경우가 있다.

이런 경우 옵션을 주면 방화벽에 영향을 주지않고 서비스만 올라오는데 일반적으로 설정하는 방식은 아래와 같다.

 

/etc/docker/damon.json

{
	"iptables": false
}

 

이후 서비스 재기동을 한다.

systemctl restart docker

 

 

하지만, 내가 설치한 서버의 /etc/docker/쪽에는 해당하는 파일도 없었을 뿐더러 파일을 생성하고 재기동하여도 여전히 외부에서 접근이 가능하였다.

다른 글들을 더 찾아보니 도커가 실행되는 서비스 옵션을 변경하라는 글을 찾아서 아래와 같이 적용 후 재기동하니 정상적으로 외부에서 접근이 안되는 모습을 확인하였다.

 

/etc/systemd/system/multi-user.target.wants/docker.service

ExceStart 옵션 제일 마지막에 --iptables=false를 추가한 후 저장합니다.

 

재기동 하기전 아래 명령어를 입력합니다.

systemctl daemon-reload

이후 재기동을 해서 해당 포트가 외부에서 접근이 안되는지 확인합니다.

728x90

원문출처 : https://sonhc.tistory.com/958

 

[docker] code server 설치 (docker-compose 방식)

웹에서 VS code를 사용할 수 있는 code server 서비스를 도커 컴포즈로 설치하는 가이드입니다. 1. docker-compose 방법 1-1) 기본 디렉토리 생성 sudo mkdir -p <컨테이너_실행_경로> e.g. /volume..

sonhc.tistory.com

웹에서 VS code를 사용할 수 있는 code server 서비스를 도커 컴포즈로 설치하는 가이드입니다.

 

 

1. docker-compose 방법

1-1) 기본 디렉토리 생성

  • sudo mkdir -p <컨테이너_실행_경로>
    e.g. /volume1/docker/code_server
  • sudo mkdir -p <데이터_볼륨_경로>
    e.g. /volume1/docker/code_server/volume/config

 

1-2) docker-compose.yml 작성

  • sudo vim <도커_컴포즈_파일_경로>   
    e.g. /volume1/docker/code_server/docker-compose.yml
docker-compose.yml
version: "3.1"
services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    restart: always
    ports:
      - "50011:8443"
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - PASSWORD=12345678
      - SUDO_PASSWORD=12345678
      - DEFAULT_WORKSPACE=/config/workspace
    volumes:
      - ./volume/config:/config
      - ./volume/source:/config/workspace
설명
    container_name: <컨테이너_이름>
    restart: <재시작_옵션>
      - "<접속_포트>:8443"
      - PUID=<UID>
      - PGID=<GID>
      - TZ=<지역/도시>
      - PASSWORD=<암호>
      - SUDO_PASSWORD=<암호>
      - <컨테이너_볼륨_config_경로>:/config
      - <컨테이너_볼륨_source_경로>:/config/workspace

 

1-3) docker-compose 설치

  • sudo docker-compose up -d

 

1-4) 접속 확인

  • http://<HOST_IP>:<접속_포트>
    e.g. http://192.168.10.10:50011

 

 

참조 : https://hub.docker.com/r/linuxserver/code-server

 

Docker Hub

 

hub.docker.com

---
version: "2.1"
services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - PASSWORD=password #optional
      - HASHED_PASSWORD= #optional
      - SUDO_PASSWORD=password #optional
      - SUDO_PASSWORD_HASH= #optional
      - PROXY_DOMAIN=code-server.my.domain #optional
      - DEFAULT_WORKSPACE=/config/workspace #optional
    volumes:
      - /path/to/appdata/config:/config
    ports:
      - 8443:8443
    restart: always
 
728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/mstream

 

Docker Hub

 

hub.docker.com

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

 

---
version: "2.1"
services:
  mstream:
    image: lscr.io/linuxserver/mstream:latest
    container_name: mstream
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
    volumes:
      - ./config:/config
      - ./music:/music
    ports:
      - 3000:3000
    restart: always
728x90

참고 사이트 - https://www.seafile.com/en/home/

 

Seafile - Open Source File Sync and Share Software

 

www.seafile.com

version: '2.0'
services:
  db:
    image: mariadb:10.5
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=db_dev  # Requested, set the root's password of MySQL service.
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.6
    container_name: seafile-memcached
    entrypoint: memcached -m 1024
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc:latest
    container_name: seafile
    ports:
      - "80:80"
#     - "443:443"  # If https is enabled, cancel the comment.
    volumes:
      - ./seafile-data:/shared   # Requested, specifies the path to Seafile data persistent store.
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_dev  # Requested, the value shuold be root's password of MySQL service.
      - TIME_ZONE=Asia/Seoul  # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.
      - SEAFILE_ADMIN_PASSWORD=asecret     # Specifies Seafile admin password, default is 'asecret'.
      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether to use https or not.
      - SEAFILE_SERVER_HOSTNAME=docs.seafile.com # Specifies your host name if https is enabled.
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:

 

Seafile 파일 업로드 실패 - 네트워크 오류

이것으로 문제가 해결되었습니다: Seafile 웹 UI에 로그인하고 아바타를 클릭한 후 "System Admin" > Settings > FILE_SERVER_ROOT > 그리고 여기에 다음과 같이 Seafile URL 또는 IP 주소를 입력해야 합니다.
"hxxp://{YOUR_SERVER_URL}/seafhttp"
예를 들어, 내 서버 URL은 "seafile.local"이기 때문에 다음과 같이 입력합니다.
hxxp://seafile.local/seafhttp

docker-syslog.yml 파일의 'SEAFILE_SERVER_HOSTNAME='에 저장할 수도 있습니다.
URL이 (seafile.local)과 같은 도메인 이름인 경우 DNS 서버에 해당 URL에 대한 기록이 있어야 합니다.
저는 Pi-Hole을 제 로컬 DNS 서버로 사용하고 있고 제 서버의 IP를 가리키는 seafile.local에 대한 레코드를 추가한 다음 이 도메인을 시스템 관리자 URL 설정에 넣었고 즉시 파일을 업로드할 수 있었습니다.

 

프로 버전 설치 참고 - https://manual.seafile.com/docker/pro-edition/deploy_seafile_pro_with_docker/

 

Seafile Professional Installation - Seafile Admin Manual

Deploy Seafile-pro with Docker Getting started Install docker Seafile v7.x.x (or newer versions) image uses docker. You should first install docker. Install Docker Engine on CentOS Install Docker Engine on Ubuntu Install docker-compose Seafile v7.x.x image

manual.seafile.com

 

728x90

출처 : https://vlog.tion.co.kr/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4-%EB%AF%B8%EB%94%94%EC%96%B4-%EC%97%85%EB%A1%9C%EB%93%9C-%EC%9A%A9%EB%9F%89-%EC%A0%9C%ED%95%9C-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0/

 

워드프레스 미디어 업로드 용량 제한 오류 해결

워드프레스 미디어 업로드 용량 제한 오류 해결 wordpress file, wordpress file filesize, wordpress file max size, wordpress file size limit, wordpress upload, wordpress upload file, wordpress upload file filesize, wordpress upload file max

vlog.tion.co.kr

 

728x90

참고사이트 : https://hub.docker.com/r/weejewel/wg-easy

                           https://github.com/WeeJeWel/wg-easy

 

GitHub - WeeJeWel/wg-easy: The easiest way to run WireGuard VPN + Web-based Admin UI.

The easiest way to run WireGuard VPN + Web-based Admin UI. - GitHub - WeeJeWel/wg-easy: The easiest way to run WireGuard VPN + Web-based Admin UI.

github.com

 

Docker Hub

 

hub.docker.com

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

version: '3.9'
services:
    wg-easy:
        image: weejewel/wg-easy
        restart: always
        sysctls:
            - net.ipv4.ip_forward=1
            - net.ipv4.conf.all.src_valid_mark=1
        cap_add:
            - SYS_MODULE
            - NET_ADMIN
        ports:
            - '51821:51821/tcp'
            - '51820:51820/udp'
        volumes:
            - '~/wg-easy:/etc/wireguard'
        environment:
            - WG_HOST=🚨YOUR_SERVER_IP or DNS hostname
            - PASSWORD=🚨YOUR_ADMIN_PASSWORD
        container_name: wg-easy

Installation

1. Install Docker

If you haven't installed Docker yet, install it by running:

$ curl -sSL https://get.docker.com | sh
$ sudo usermod -aG docker $(whoami)
$ exit

And log in again.

2. Run WireGuard Easy

To automatically install & run wg-easy, simply run:

$ docker run -d \
  --name=wg-easy \
  -e WG_HOST=🚨YOUR_SERVER_IP or DNS hostname \
  -e PASSWORD=🚨YOUR_ADMIN_PASSWORD \
  -v ~/wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart always \
  weejewel/wg-easy

💡 Replace YOUR_SERVER_IP with your WAN IP, or a Dynamic DNS hostname.

💡 Replace YOUR_ADMIN_PASSWORD with a password to log in on the Web UI.

The Web UI will now be available on http://0.0.0.0:51821.

💡 Your configuration files will be saved in ~/.wg-easy

Options

These options can be configured by setting environment variables using -e KEY="VALUE" in the docker run command.

EnvDefaultExampleDescription

PASSWORD - foobar123 When set, requires a password when logging in to the Web UI.
WG_HOST - vpn.myserver.com The public hostname of your VPN server.
WG_PORT 51820 12345 The public UDP port of your VPN server. WireGuard will always listen on 51820 inside the Docker container.
WG_MTU null 1420 The MTU the clients will use. Server uses default WG MTU.
WG_PERSISTENT_KEEPALIVE 0 25 Value in seconds to keep the "connection" open.
WG_DEFAULT_ADDRESS 10.8.0.x 10.6.0.x Clients IP address range.
WG_DEFAULT_DNS 1.1.1.1 8.8.8.8, 8.8.4.4 DNS server clients will use.
WG_ALLOWED_IPS 0.0.0.0/0, ::/0 192.168.15.0/24, 10.0.1.0/24 Allowed IPs clients will use.
WG_POST_UP ... iptables ... See config.js for the default value.
WG_POST_DOWN ... iptables ... See config.js for the default value.

If you change WG_PORT, make sure to also change the exposed port.

Updating

To update to the latest version, simply run:

docker stop wg-easy
docker rm wg-easy
docker pull weejewel/wg-easy

And then run the docker run -d \ ... command above again.

 

------------------------------------------------------------------------------------------------------------------------------------

아래코드로 실행하세요 - Update 2024.04.24

version: '3.9'
services:
    wg-easy:
        image: ghcr.io/wg-easy/wg-easy
        restart: always
        sysctls:
            - net.ipv4.ip_forward=1
            - net.ipv4.conf.all.src_valid_mark=1
        cap_add:
            - SYS_MODULE
            - NET_ADMIN
        ports:
            - '51821:51821/tcp'
            - '51820:51820/udp'
        volumes:
            - '~/wg-easy:/etc/wireguard'
        environment:
            - WG_PORT=51820
            - PORT=51821
            - PASSWORD=<🚨YOUR_ADMIN_PASSWORD>
            - WG_HOST=<🚨YOUR_SERVER_IP>
            - LANG=ko
        container_name: wg-easy
728x90

참고 사이트 - https://hub.docker.com/r/traccar/traccar

 

Docker Hub

 

hub.docker.com

1. Create work directories:
   mkdir -p /var/docker/traccar/logs


2. Get default traccar.xml:
   docker run \

   --rm \

   --entrypoint cat \

   traccar/traccar:latest \ /opt/traccar/conf/traccar.xml > /var/docker/traccar/traccar.xml


3. Edit traccar.xml: https://www.traccar.org/configuration-file/

4. Create container:

version: '3.3'
services:
    traccar:
        restart: always
        container_name: traccar
        ports:
            - '80:8082'
            - '5000-5150:5000-5150'
            - '5000-5150:5000-5150/udp'
        volumes:
            - '/var/docker/traccar/logs:/opt/traccar/logs:rw'
            - '/var/docker/traccar/traccar.xml:/opt/traccar/conf/traccar.xml:ro'
        image: 'traccar/traccar:latest'

 

스마트폰 앱 설치해서 연동

관리자용 앱 : https://play.google.com/store/apps/details?id=org.traccar.manager&hl=ko&gl=US 

 

Traccar Manager - Google Play 앱

Traccar 서버 콘솔

play.google.com

클라이언트용 앱 : https://play.google.com/store/apps/details?id=org.traccar.client&hl=ko&gl=US 

 

Traccar Client - Google Play 앱

소프트웨어의 GPS 추적기

play.google.com

- 앱 설치 후 도커로 설치한 웹주소 입력, 임의의 이름 입력, 장치식별자의 숫자를 관리자용 앱 혹은 웹에서 등록 (중요!)

- 위치 정확도, 위치수집 주기 등의 세부사항 설정 가능

** 핸드폰 외 적용가능한 디바이스 목록은 아래 주소 참고해주세요~

https://www.traccar.org/devices/

 

Supported Devices - Traccar

Supported Devices List of GPS tracking devices and applications supported by Traccar server. Note that even if your model is missing from the list, there is a very good chance that it's still supported in Traccar. If you own a device made in China, please

www.traccar.org

--------------------------------------------------------- 아래는 개인적으로 정리한 설치방법입니다.

 

<docker-compose.yml 파일>

 

version: '3.3'
services:
    traccar:
        restart: always
        container_name: traccar
        ports:
            - '8082:8082'
            - '5000-5150:5000-5150'
            - '5000-5150:5000-5150/udp'
        volumes:
            - './logs:/opt/traccar/logs:rw'
            - './traccar.xml:/opt/traccar/conf/traccar.xml:ro'
        image: 'traccar/traccar:latest'

 

<첨부된 traccar.xml 파일 업로드 및 적용>

traccar.xml
0.00MB

728x90

참고 사이트 - https://hub.docker.com/r/joplin/server

 

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

 

version: '3'

services:
    db:
        image: postgres:13.4
        volumes:
            - ./data/postgres:/var/lib/postgresql/data
        ports:
            - "5432:5432"
        restart: always
        environment:
            - POSTGRES_PASSWORD=joplin
            - POSTGRES_USER=joplin
            - POSTGRES_DB=joplin
            - TZ=Asia/Seoul
    app:
        image: joplin/server:latest
        depends_on:
            - db
        ports:
            - "22300:22300"
        restart: always
        environment:
            - APP_PORT=22300
            - APP_BASE_URL=http://192.168.0.X:22300
            - DB_CLIENT=pg
            - POSTGRES_PASSWORD=joplin
            - POSTGRES_DATABASE=joplin
            - POSTGRES_USER=joplin
            - POSTGRES_PORT=5432
            - POSTGRES_HOST=db
            - TZ=Asia/Seoul

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/pwndrop

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

---
version: "2.1"
services:
  pwndrop:
    image: lscr.io/linuxserver/pwndrop
    container_name: pwndrop
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - SECRET_PATH=/pwndrop #optional
    volumes:
      - ./config:/config
    ports:
      - 8080:8080
    restart: always

728x90

도커설치를 하시다 보면 손쉽게 커맨드쉘에서 docker run ~~ 입력하시는 경우가 있는데 나중에 reference로 해당 docker를 어떻게 설치했는지 살펴볼 때 (1) 기록이 남지 않는다는 점과 (2) 수정이 필요할 때 꽤 불편하다는 단점이 있습니다. 

 

Portainer를 쓰시면 Stack에서 docker-compose의 내용을 적용하시면 레코드를 남길 수 있기 때문에 이 방법을 추천드리며 간혹 참고하는 사이트에서 docker-compose의 내용은 없고 cli로 정리된 경우가 있습니다. 이럴때는 웹상에서 cli명령어를 docker-compose명령어로 바꿔주는 아래 사이트를 이용해보세요. 

 

https://www.composerize.com/

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/airsonic-advanced

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.


---
version: "2.1"
services:
  airsonic-advanced:
    image: lscr.io/linuxserver/airsonic-advanced
    container_name: airsonic-advanced
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      #- CONTEXT_PATH=<URL_BASE> #optional
      #- JAVA_OPTS=<options> #optional
    volumes:
      - ./config:/config
      - ./music:/music
      - ./playlists:/playlists
      - ./podcasts:/podcasts
      #- </path/to/other media>:/media #optional
    ports:
      - 4040:4040
    devices:
      - /dev/snd:/dev/snd #optional
    restart: always

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/librespeed

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

 

---
version: "2.1"
services:
  librespeed:
    image: lscr.io/linuxserver/librespeed
    container_name: librespeed
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - PASSWORD=PASSWORD
    volumes:
      - ./config:/config
    ports:
      - 80:80
    restart: always

728x90

참고 사이트 - https://www.navidrome.org/

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

--

 

version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    ports:
      - "4533:4533"
    environment:
      # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_BASEURL: ""
    volumes:
      - "./data:/data"
      - "./music:/music:ro"

    restart: always

728x90

참고 사이트 - https://hub.docker.com/_/ghost

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

--
version: '3.1'

services:

  ghost:
    image: ghost:4-alpine
    restart: always
    ports:
      - 8080:2368
    environment:
      # see https://ghost.org/docs/config/#configuration-options
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: example
      database__connection__database: ghost
      # this url value is just an example, and is likely wrong for your environment!
      url: http://localhost:8080
      # contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
      #NODE_ENV: development
    volumes:
      - ./ghost/data:/var/lib/ghost/content
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/wikijs

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

---
version: "2.1"
services:
  wikijs:
    image: lscr.io/linuxserver/wikijs
    container_name: wikijs
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
    volumes:
      - <path to config>:/config
      - <path to data>:/data
    ports:
      - 3000:3000
    restart: always

728x90

도커(Docker) 이미지 추천1 : 자산 관리 앱 Snipe-IT 리뷰 및 설치 방법 ( https://blog.naver.com/destinyrev/222546662984 )

 

도커 이미지 추천2 : 온라인 사진 관리 및 갤러리 앱 Piwigo 리뷰 및 설치 방법 ( https://blog.naver.com/destinyrev/222547687020 )

 

도커 이미지 추천3 : 온라인 음악 스트리밍 서버 앱 Airsonic Airsonic advanced 리뷰 및 설치 방법 ( https://blog.naver.com/destinyrev/222548858906 )

 

도커 이미지 추천4 : 온라인 사진 갤러리 앱 Lychee 리뷰 및 설치 방법 ( https://blog.naver.com/destinyrev/222549989607 )

 

도커 이미지 추천5 : 음악 스트리밍 서버 앱, mStream Music 리뷰 및 설치 방법 ( https://blog.naver.com/destinyrev/222556044628 )

 

도커 이미지 추천6 : 비밀번호 관리 앱 Bitwarden, 내부망에서만 사용하기 ( https://blog.naver.com/destinyrev/222556077093 )

 

도커 이미지 추천7 : GUI 도커 관리 앱 Portainer 소개 및 설치 방법 ( https://blog.naver.com/destinyrev/222561756969 )

 

도커 이미지 추천8 : 멀티미디어 앱플렉스(Plex) 설치 방법https://blog.naver.com/destinyrev/222568397649 )

 

도커 이미지 추천9 : 홈페이지 앱워드프레스(wordpress) 설치 방법 ( https://blog.naver.com/destinyrev/222568400893 )

 

도커 이미지 추천10 : 클라우드 앱넥스트 클라우드(nextcloud) 설치 방법 ( https://blog.naver.com/destinyrev/222568406427 )

 

도커 이미지 추천11 : 백업 앱, duplicati 설치 방법 ( https://blog.naver.com/destinyrev/222570614912 )

 

도커 이미지 추천12 : 이북 앱, calibre-web 설치 방법 ( https://blog.naver.com/destinyrev/222570615798 )

 

도커 이미지 추천13 : 토렌트 앱, transmission 설치 방법 ( https://blog.naver.com/destinyrev/222570617029 )

 

도커 이미지 추천14 : 시스템 모니터링 앱, netdata 설치 방법 ( https://blog.naver.com/destinyrev/222572600613 )

 

도커 이미지 추천15 : 이미지 저장 및 뷰어, Pinry 설치 방법 ( https://blog.naver.com/destinyrev/222572602747 )

 

도커 이미지 추천16 : Nginx Proxy Manager 설치 방법 ( https://blog.naver.com/destinyrev/222572603774 )

 

도커 이미지 추천17 : 자동 도커 업데이트 앱, watchtower 설치 방법 ( https://blog.naver.com/destinyrev/222572604439 )

 

도커 이미지 추천18 : 파일 저장소 앱, filebrowser 설치 방법 ( https://blog.naver.com/destinyrev/222572605288 )

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/piwigo

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

PS : MariaDB 를 Docker 로 설치하여 연동하세요. (ghcr.io/linuxserver/mariadb 이미지 사용)

 

---

version: "2.1"

services:

  piwigo:

    image: ghcr.io/linuxserver/piwigo

    container_name: piwigo

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Asia/Seoul

    volumes:

      - ./:/config

    ports:

      - 80:80

    restart: always

728x90

참고 사이트 - https://hub.docker.com/r/linuxserver/syncthing

 

아래 코드로 docker-compose.yml 파일 생성 후 'docker-compose up -d'로 실행하세요.

PS : 아래 코드에서 optional 이라고 되어 있는 부분은 여기(클릭)로 이동해서 내용 참고하세요.

 

---

version: "2.1"

services:

  syncthing:

    image: ghcr.io/linuxserver/syncthing

    container_name: syncthing

    hostname: syncthing #optional

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Asia/Seoul

    volumes:

      - ./config:/config

      - ./data1:/data1

      - ./data2:/data2

    ports:

      - 8384:8384

      - 22000:22000/tcp

      - 22000:22000/udp

      - 21027:21027/udp

    sysctls:

      - net.core.rmem_max=2097152

    restart: always

728x90

https://nginxproxymanager.com/ 에 있는 내용대로 설치했을때 bad gateway 오류가 납니다.

아래 방법으로 설치하면 오류없이 구동가능합니다.

docker-compose.yml 파일을 아래 코드를 이용해 생성 후 'docker-compose up -d'로 실행하세요.

 

version: "2"

services:

  app:

    image: 'jc21/nginx-proxy-manager:latest'

    restart: always

    ports:

      # Public HTTP Port:

      - '80:80'

      # Public HTTPS Port:

      - '443:443'

      # Admin Web Port:

      - '81:81'

    environment:

      # These are the settings to access your db

      DB_MYSQL_HOST: "db"

      DB_MYSQL_PORT: 3306

      DB_MYSQL_USER: "npm"

      DB_MYSQL_PASSWORD: "npm"

      DB_MYSQL_NAME: "npm"

      DISABLE_IPV6: 'true'

    volumes:

      - ./data:/data

      - ./letsencrypt:/etc/letsencrypt

    depends_on:

      - db

  db:

    image: yobasystems/alpine-mariadb:latest

    restart: always

    environment:

      MYSQL_ROOT_PASSWORD: 'npm'

      MYSQL_DATABASE: 'npm'

      MYSQL_USER: 'npm'

      MYSQL_PASSWORD: 'npm'

    volumes:

      - ./data/mysql:/var/lib/mysql

 

PS : jc21/nginx-proxy-manager 은 MariaDB를 따로 설치해야 하지만 jlesage/nginx-proxy-manager 은 NPM과 DB가 같이 있는 올인원 이미지이므로 이걸 활용해서 설치하는게 좀 더 간편한 방법입니다.

아래는 jlesage/nginx-proxy-manager 이미지를 활용한 설치방법입니다.

 

version: '3'

services:

  nginx-proxy-manager:

    image: jlesage/nginx-proxy-manager

    ports:

      - 8181:8181

      - 8080:8080

      - 4443:4443

    volumes:

      - ./:/config:rw

    restart: always

+ Recent posts