docker启动常用软件
docker启动redis
下载redis.conf
文件
curl
下载文件curl -O url
curl -O http://download.redis.io/redis-stable/redis.conf
配置redis.conf
文件
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
dir ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选)`
启动redis
docker run -d -p 6379:6379 --name redis --restart=always \
-v redis/conf/redis.conf:/etc/redis/redis.conf \
-v redis/data:/data \
redis redis-server /etc/redis/redis.conf --appendonly yes
docker启动RabbitMQ
docker run -d \
--hostname rabbit \
--name rabbit \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
rabbitmq
docker启动tomcat
docker run -d --name=tomcat -p 8080:8080 \
-v /usr/local/webapps:/usr/local/tomcat/webapps \
tomcat:9-jdk8
docker启动nginx
docker run -d --name nginx --restart always \
--network=proxy-net -p 80:80 -p 443:443 \
-v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /usr/local/nginx/cert:/etc/nginx/cert:ro \
nginx
docker启动zipkin
docker run -d -p 9411:9411 openzipkin/zipkin
docker启动nacos-server
docker-compose启动
docker-compose.yaml
单机模式启动
version: "2"
services:
nacos:
image: nacos/nacos-server:latest
container_name: nacos
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=host.docker.internal
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=root
- NACOS_AUTH_ENABLE=true
- NACOS_AUTH_IDENTITY_KEY=nacos_auth_identity_key
- NACOS_AUTH_IDENTITY_VALUE=QXBtejlBT2NTQ2k4aWtVNnl6bm5CMzZSdU10QzhXQWhRdDF1ZmdlVUtCN2dwa09QUklKOFMyeTFFTlZoZnN4Vg==
- NACOS_AUTH_TOKEN=OXVMRnozbFFNNjdVTW1adXlvYThrdVR6dVVCTDhVT3I0UmhNaUdPbVluNmpPZ2paNWxYc21CSjg1UjlzMmd5TA==
volumes:
- ./logs/:/home/nacos/logs
restart: always
ports:
- "8848:8848"
docker方式启动
启动单机模式的 Nacos 连接宿主机的 MySQL
,并启用 Auth 认证。
docker run -d \
--name nacos \
-p 8848:8848 -p 9848:9848 \
--restart=always \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_IDENTITY_KEY=nacos_auth_identity_key \
-e NACOS_AUTH_IDENTITY_VALUE=$(LC_ALL=C tr -dc "[:alnum:]" < /dev/urandom | head -c 64 | base64) \
-e NACOS_AUTH_TOKEN=$(LC_ALL=C tr -dc "[:alnum:]" < /dev/urandom | head -c 64 | base64) \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=host.docker.internal \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-v $HOME/nacos/logs/:/home/nacos/logs \
nacos/nacos-server:v2.4.2.1-slim
docker启动gitlab
sudo docker run -d \
--hostname local.gitlab.com \
--name gitlab \
--restart always \
-p 30000:22 -p 80:80 \
-v $HOME/gitlab/data:/var/opt/gitlab \
-v $HOME/gitlab/logs:/var/log/gitlab \
-v $HOME/gitlab/config:/etc/gitlab \
gitlab/gitlab-ce
启动后需要在hosts
文件中配上映射127.0.0.1 local.gitlab.com
然后http
访问这个域名即可。ssh
的22端口已被占用,所有要换个端口。其实ssh的访问方式我并没有搞成功,看其他的文章说22,443端口还需要证书等,而我这个本地的服务也是临时使用也就没有继续研究下去。如果又知道的可以评论里说下,在此感谢!
后续:之后闲下来又找了些文章看了看,ssh的是可以通过nginx代理去实现的,同样的https也是一样。
docker启动webdav服务
Github: BytemarkHosting
建议不使用自签名ssl,使用自己的证书在nginx中做代理,也就是请求nginx用https,代理到服务时使用http即可。
docker run -d --name webdav --restart always \
--network proxy-net \
-v /srv/dav:/var/lib/dav \
-e AUTH_TYPE=Basic \
-e USERNAME=alice \
-e PASSWORD=secret1234 \
bytemark/webdav
这个服务我未指定暴露的端口,并将其与nginx放在同一个网络下,如此nginx代理时就可以使用http://{service-name}:{service-port}
这样的方式代理(只针对nginx也是容器启动,若正常编译安装的nginx则还是需要暴露端口再代理。)
离线docker使用镜像
在公网环境下载镜像
- 保存镜像为压缩包(保存到当前目录)
docker save -o nginx.tar.gz nginx:latest
- 上传压缩包到内网环境中
- 载入压缩包中的镜像
docker load -i nginx.tar.gz
使用Dockerfile编译镜像
根据Dockerfile
的语法编译镜像,目前本人还只能在原有镜像基础上修改,还不能从零编译一个镜像。
docker启动oracle数据库
使用的镜像:https://hub.docker.com/r/gvenzl/oracle-xe
创建挂载卷保存数据:
docker volume create oracle-volume
使用11g精简版启动镜像 (下载后约554MB)
docker run --name oracle11g \
-d -p 1521:1521 \
-e ORACLE_PASSWORD=oracle \
-v oracle-volume:/u01/app/oracle/oradata \
gvenzl/oracle-xe:11-slim
镜像的默认参数如下,如要更改可参考镜像仓库的描述自行更改。
hostname: localhost
port: 1521
sid: xe
username: system
password: oracle
如果想改用户名(18c之前的镜像无法更改用户名),可以使用同作者的另外一个镜像 https://hub.docker.com/r/gvenzl/oracle-free
使用 slim 精简版启动镜像 (下载后约1.83GB)
docker run -d --name oracle-free \
-p 1521:1521 \
-e ORACLE_PASSWORD=oracle \
-e APP_USER=bennett \
-e APP_USER_PASSWORD=oracle \
-v oracle-volume:/opt/oracle/oradata \
gvenzl/oracle-free:slim
如此启动后的连接参数如下:
hostname: localhost
port: 1521
service name: FREEPDB1
username: bennett
password: oracle
docker启动redis集群
此方法有问题,集群可以搭建好但节点无法访问(密码的问题),暂时尚未解决。
这里我使用了docker compose启动。
- docker-compose.yml
version: "3"
services:
redis-6371:
image: redis:latest
container_name: redis-6371
ports:
- "6371:6379"
volumes:
- ./6371/conf/redis.conf:/etc/redis/redis.conf
- ./6371/data:/data
networks:
- redis-cluster
command: redis-server /etc/redis/redis.conf
redis-6372:
image: redis:latest
container_name: redis-6372
ports:
- "6372:6379"
volumes:
- ./6372/conf/redis.conf:/etc/redis/redis.conf
- ./6372/data:/data
networks:
- redis-cluster
command: redis-server /etc/redis/redis.conf
redis-6373:
image: redis:latest
container_name: redis-6373
ports:
- "6373:6379"
volumes:
- ./6373/conf/redis.conf:/etc/redis/redis.conf
- ./6373/data:/data
networks:
- redis-cluster
command: redis-server /etc/redis/redis.conf
redis-6374:
image: redis:latest
container_name: redis-6374
ports:
- "6374:6379"
volumes:
- ./6374/conf/redis.conf:/etc/redis/redis.conf
- ./6374/data:/data
networks:
- redis-cluster
command: redis-server /etc/redis/redis.conf
redis-6375:
image: redis:latest
container_name: redis-6375
ports:
- "6375:6379"
volumes:
- ./6375/conf/redis.conf:/etc/redis/redis.conf
- ./6375/data:/data
networks:
- redis-cluster
command: redis-server /etc/redis/redis.conf
redis-6376:
image: redis:latest
container_name: redis-6376
ports:
- "6376:6379"
volumes:
- ./6376/conf/redis.conf:/etc/redis/redis.conf
- ./6376/data:/data
- ./run-add-cluser.sh:/bin/run-add-cluster.sh
networks:
- redis-cluster
depends_on:
- redis-6371
- redis-6372
- redis-6373
- redis-6374
- redis-6375
command: run-add-cluster.sh
networks:
redis-cluster:
external: true
name: redis-cluster
6个节点文件夹中放入对应的配置文件redis.conf
,示例如下:
port 6379
requirepass <password>
masterauth <password>
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
#cluster-announce-ip用的是容器的名称,6个配置文件只需要改这个即可
cluster-announce-ip redis-6376
cluster-announce-port 6379
cluster-announce-bus-port 16379
首先使用docker network create redis-cluster
创建一个集群网络,然后使用docker network inspect redis-cluster
查看Gateway
确定这个网络的IP段。
所有容器启动后将节点加入到集群中的脚本run-add-cluster.sh
:
#!/bin/bash
redis-server /etc/redis/redis.conf
redis-cli -a <password> --cluster create 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 172.18.0.5:6379 172.18.0.6:6379 172.18.0.7:6379 --cluster-replicas 1
将脚本中的集群节点IP改为自己的网段IP,IP的最后一位一般不需要修改,大多数情况下都是分配2~6的IP(由于加节点时不能使用hostname:port方式,所以只能采取预测IP的方式。)
准备工作做完了,就可以使用docker-compose up -d
或者docker compose up -d
启动集群服务了。前者需要使用pip
安装pip install docker-compose
,后者需要查看自己的docker是否支持Compose(docker info
)
Client:
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
compose: Docker Compose (Docker Inc., 2.0.0-beta.4)
scan: Docker Scan (Docker Inc., v0.8.0)