笔记笔记
  • Home
  • AI&ML
  • Example
  • Zoo
  • 关于
⌘ K
docker 笔记
常用容器
Sonatype Nexus
GitLab CE
BitTorrent Tracker
搜索引擎
Debian
最后更新时间:
Copyright © 2023-2024 | Powered by dumi | GuoDapeng | 冀ICP备20004032号-1 | 冀公网安备 冀公网安备 13024002000293号

TABLE OF CONTENTS

‌
‌
‌
‌

常用容器

查看容器状态

docker stats -a

Nginx

docker run -d \
--name nginx \
-v $PWD:/usr/share/nginx/html \
-p 8008:80 \
nginx:latest
docker exec -it nginx bash
docker cp nginx:/etc/nginx/nginx.conf nginx.conf
docker cp nginx.conf nginx:/etc/nginx/nginx.conf
docker cp nginx:/etc/nginx/conf.d/default.conf nginx-default.conf
docker cp nginx-default.conf nginx:/etc/nginx/conf.d/default.conf

Apache

docker run -d \
--name httpd-React-study \
-p 8008:80 \
-v $PWD/:/usr/local/apache2/htdocs/ \
-v $PWD/httpd.conf:/usr/local/apache2/conf/httpd.conf \
httpd:latest
docker cp httpd.conf httpd:/usr/local/apache2/conf/httpd.conf

Redis

docker run -d --name redis -p 6379:6379 --requirepass 123456 --restart always redis:6.2.1
docker run -d --name redis -p 6379:6379 --restart always redis:6.2.1 --requirepass 123
docker exec -it redis /bin/bash

PHP

docker pull php:8.0.30-apache
docker run -d \
--name php_apache_server \
-v $PWD/:/var/www/html \
-p 8002:80 \
php:8.0.30-apache
docker start php_apache_server
docker exec -it php_apache_server /bin/bash
apt-get update
apt-get install git zip unzip -y
# /etc/apache2/sites-available/000-default.conf
a2enmod rewrite # a2dismod rewrite 禁用
service apache2 restart
curl -sS https://getcomposer.org/installer | php
php composer.phar create-project topthink/think tp
# 安装
docker-php-ext-install pdo pdo_mysql
# 安装 mongodb 扩展,ini 配置文件添加 extension=mongodb.so
apt-get install libssl-dev -y
pecl install mongodb
docker-php-ext-enable mongodb
# dg 扩展
apt-get install libpng-dev
docker-php-ext-install gd
# zip 扩展
apt-get install libzip-dev
docker-php-ext-install zip
# 存储镜像留在以后用
docker commit b1ed64ee2b75 php_dev:7.4-apache

MongoDB

docker pull mongo
docker run -d \
--name mongo \
-p 27017:27017 \
-v $PWD/datadir:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
-e MONGO_INITDB_ROOT_PASSWORD=secret \
mongo
# 进入容器
docker exec -it mongo /bin/bash
# 设置用户权限
mongosh --host 127.0.0.1 -u mongoadmin -p secret --authenticationDatabase admin some_db
# 其他内容
mongo testdb --host gdp.com --username testdb --port 27017 --password
mongoexport -h gdp.com:27017 -u "testdb" -d testdb -c test -o test.dat
mongoimport -h gdp.com:27017 -u "testdb" -d testdb -c test --file test.dat
mongodump -h gdp.com:27017 -u "testdb" -d testdb --excludeCollection=jskj_watch

MinIO

docker pull minio/minio
docker run -d \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v $PWD:/data \
-e "MINIO_ROOT_USER=ROOTNAME" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
minio/minio server /data --console-address ":9001"
MinIO 笔记

Registry

docker run --entrypoint htpasswd httpd:2 -Bbn testuser testpassword >auth/htpasswd
docker run -d \
--restart=always \
--name registry \
-p 5001:5000 \
-v "$(pwd)"/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry:2

宝塔面板

# https://hub.docker.com/r/btpanel/baota
docker pull btpanel/baota:lib
# 这里因为我是物理机部署,就不开 -p 443:443 这个端口了
# 在挂载 vhost 目录的时候,会有奇怪的权限问题,所以就都不挂载了,还方便部署到其他机器
docker run -d \
--name baota \
-p 8888:8888 \
-p 888:888 \
-p 22:22 \
-p 80:80 \
-p 3306:3306 \
btpanel/baota:lib
# http://您的ip地址:8888/btpanel
# 默认用户:btpanel
# 默认密码:btpaneldocker
# 容器默认SSH密码:btpaneldocker

Nginx rtmp

docker pull tiangolo/nginx-rtmp
docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp
docker cp nginx-rtmp:/etc/nginx/nginx.conf nginx.conf
docker cp nginx.conf nginx-rtmp:/etc/nginx/nginx.conf

Nginx rtmp hls

这个功能多一些

docker pull ngucandy/rtmp-hls
docker run -d -p 1935:1935 -p 8080:8080 alqutami/rtmp-hls

rtsp

docker pull aler9/rtsp-simple-server
docker run --rm -it \
-e RTSP_PROTOCOLS=tcp \
-p 8554:8554 \
-p 1935:1935 \
aler9/rtsp-simple-server
# 推流 rtsp://192.168.2.200/mystream
# 拉流 rtsp://192.168.2.200:8554/mystream/123
docker pull bluenviron/mediamtx
docker run --rm -it \
-e MTX_PROTOCOLS=tcp \
-e MTX_WEBRTCADDITIONALHOSTS=192.168.x.x \
-p 8554:8554 \
-p 1935:1935 \
-p 8888:8888 \
-p 8889:8889 \
-p 8890:8890/udp \
-p 8189:8189/udp \
bluenviron/mediamtx
# 推流 rtsp://192.168.1.12/stream
# 拉流 rtsp://192.168.1.12:8554/stream?name=v1

ffmpeg 推流

IPsec VPN Server

# https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/README.md
# https://hub.docker.com/r/hwdsl2/ipsec-vpn-server
docker pull hwdsl2/ipsec-vpn-server
OVPN_DATA="ovpn-data"
OVPN_MODULES="ovpn-modules"
docker volume create --name $OVPN_DATA
docker volume create --name $OVPN_MODULES
docker run -d \
--name ipsec-vpn-server \
--privileged \
--env-file ./vpn.env \
-v $OVPN_DATA:/etc/ipsec.d \
-v $OVPN_MODULES:/lib/modules:ro \
-p 500:500/udp \
-p 4500:4500/udp \
hwdsl2/ipsec-vpn-server

创建vpn.env文件

# 一般 IPv6 地址可以在公网访问,5块钱购买一个域名,解析到 IPv6 即可
VPN_DNS_NAME=<你的域名>
VPN_IPSEC_PSK=<预共享密钥>
VPN_USER=<用户名>
VPN_PASSWORD=<密码>

macOS 用户

在ovpn-data卷里有一个vpnclient.mobileconfig名字的文件,下载到本地机器, 打开系统设置->隐私与安全性->描述文件,双击vpnclient.mobileconfig文件即可看见描述文件里面出现了IKEv2。 双击安装即可看见系统设置出现了VPN选项。

frp

frp 官网

准备一个服务端配置文件 frps.toml

bindPort = 7000
auth.token = "abc"
# 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。
webServer.addr = "0.0.0.0"
webServer.port = 7500
# dashboard 用户名密码,可选,默认为空
webServer.user = "admin"
webServer.password = "admin"

准备一个客户端配置文件 frpc.toml

serverAddr = "x.x.x.x"
serverPort = 7000
auth.token = "abc"
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
[[proxies]]
name = "WebServer"
type = "tcp"
localIP = "192.168.30.204"
localPort = 6145
remotePort = 6145
# https://hub.docker.com/r/snowdreamtech/frps
# --platform=linux/amd64 指定需要运行的架构
docker pull --platform=linux/amd64 snowdreamtech/frps
docker run -d \
--restart=always \
--name frps \
-v $PWD/frps.toml:/etc/frp/frps.toml \
-p 7000:7000 \
-p 7500:7500 \
snowdreamtech/frps
# https://hub.docker.com/r/snowdreamtech/frpc
# --platform=linux/amd64 指定需要运行的架构
docker pull --platform=linux/amd64 snowdreamtech/frpc
docker run -d \
--restart=always \
--name frpc \
-v $PWD/frpc.toml:/etc/frp/frpc.toml \
-p 7400:7400 \
snowdreamtech/frpc

不使用 --network host 参数,是因为我的需求里面不需要太多端口。

linuxserver/qbittorrent

docker pull linuxserver/qbittorrent:5.0.4 --platform=linux/amd64
docker stop qbittorrent && docker rm qbittorrent
docker run -d \
--name=qbittorrent \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e WEBUI_PORT=8180 \
-p 8180:8180 \
-p 8181:9000 \
-p 16881:6881 \
-p 16881:6881/udp \
-v $PWD/config:/config:rw \
-v $PWD/downloads:/downloads:rw \
--restart unless-stopped \
linuxserver/qbittorrent:5.0.4

docker logs -f qbittorrent 查看日志,里面有密码

启用嵌入式跟踪:工具 -> 选项... -> 高级 -> 启用内置 Tracker
跟踪链接:http://your_public_ip:8181/announce

BitTorrent Tracker https://trackerslist.com

PostgreSQL

POSTGRES_USER 默认 postgres。

docker run -d \
--name postgres_test \
-p 5432:5432 \
-e POSTGRES_PASSWORD=mysecretpassword \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v $PWD/data:/var/lib/postgresql/data \
postgres

Navidrome Music Server

# https://hub.docker.com/r/deluan/navidrome
docker run -d \
--name navidrome \
-p 4533:4533 \
-v $PWD/data:/data \
-v $PWD/music:/music:ro \
deluan/navidrome

Music Tag Web

docker pull xhongc/music_tag_web:latest
docker run -d \
--restart=always \
-p 4534:8001 \
-v $PWD:/app/media \
-v $PWD:/app/data \
xhongc/music_tag_web:latest

认账号密码 admin/admin