docker案例
约 1870 字大约 6 分钟
2025-02-28
Docker安装Nginx
- 普通安装方式
- 拉取Nginx镜像
docker pull nginx
或者:加载本地镜像
docker load -i nginx.tar
如果不指定版本号,默认拉取最新版本的Nginx镜像。nginx:latest
- 运行Nginx容器
docker run -d -p 80:80 --name nginx-test nginx
-d:后台运行 -p:将容器的80端口映射到主机的80端口 --name:指定容器名称为nginx-test
注意
- 后面要接镜像名称
- 可以使用docker logs nginx-test查看容器日志,查看是否报错。
- 要在宿主机的防火墙开放80端口,否则无法访问容器。
- 访问Nginx 浏览器访问http://localhost,如果看到Nginx的欢迎页面,则表示安装成功。
- 挂载配置文件和html文件
方式一:使用Volume挂载
- 创建数据卷 nginx-html-volume ,挂载到容器的/usr/share/nginx/html目录下
docker volume create nginx-html-volume
```shell
查看数据卷详情
docker volume inspect nginx-html-volume
2. 创建数据卷 nginx-conf-volume ,挂载到容器的/etc/nginx目录下
```shell
docker volume create nginx-conf-volume
- 运行Nginx容器
docker run -d -p 80:80 --name nginx-test \
-v nginx-html-volume:/usr/share/nginx/html \
-v nginx-conf-volume:/etc/nginx \
nginx
-v:挂载数据卷,格式为:主机目录:容器目录
- 修改html或配置文件,重启容器,查看效果。
- 方式二:使用自定义目录挂载
- 创建文件夹/opt/mount/nginx/html,挂载到容器的/usr/share/nginx/html目录下
mkdir -p /opt/mount/nginx/html
- 创建文件夹/opt/mount/nginx/conf.d,挂载到容器的/etc/nginx/conf.d目录下
mkdir -p /opt/mount/nginx/conf.d
- 简单运行Nginx容器
docker run -d -p 80:80 --name nginx-test
- 复制容器内的html文件和配置文件到挂载目录
docker cp nginx-test:/usr/share/nginx/html /opt/mount/nginx/html
docker cp nginx-test:/etc/nginx/conf.d /opt/mount/nginx/conf.d
- 删除原先容器,并创建新的容器,挂载挂载目录
docker rm nginx-test
docker run -d -p 80:80 --name nginx-test \
-v /opt/mount/nginx/html:/usr/share/nginx/html \
-v /opt/mount/nginx/conf.d:/etc/nginx/conf.d \
nginx
- 修改html或配置文件,重启容器,查看效果。
Docker安装MySQL
- 拉取MySQL镜像
docker pull mysql
或者:加载本地镜像
docker load -i mysql.tar
- 运行MySQL容器并挂载 方式一:使用Volume挂载 创建数据卷 mysql-data-volume 和 mysql-conf-volume
docker volume create mysql-data-volume
docker volume create mysql-conf-volume
运行MySQL容器
docker run -d -p 3306:3306 --name mysql-test \
-v mysql-data-volume:/var/lib/mysql \
-v mysql-conf-volume:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:latest
-v:挂载数据卷,格式为:主机目录:容器目录 -e:设置环境变量,MYSQL_ROOT_PASSWORD为root用户的密码
方式二:使用自定义目录挂载 创建文件夹/opt/mount/mysql/data和/opt/mount/mysql/conf.d文件夹
mkdir -p /opt/mount/mysql/data
mkdir -p /opt/mount/mysql/conf.d
运行MySQL容器
docker run -d -p 3306:3306 --name mysql-test \
-v /opt/mount/mysql/data:/var/lib/mysql \
-v /opt/mount/mysql/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:latest
- 远程连接MySQL
注意
- 要在宿主机的防火墙开放3306端口,否则无法访问容器。
Docker安装Nacos
- 拉取镜像或加载本地镜像
`docker pull nacos/nacos-server`
docker pull nacos/nacos-server:v2.3.0 指定版本号
或者:
docker load -i nacos-v2.3.0.tar
- 创建数据卷或挂载目录 方式一:使用Volume挂载 创建数据卷 nacos-data-volume, nacos-logs-volume, nacos-conf-volume
docker volume create nacos-data-volume
docker volume create nacos-logs-volume
docker volume create nacos-conf-volume
运行Nacos容器
docker run -d \
--name nacos \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-v nacos-logs-volume:/usr/nacos/logs \
-v nacos-conf-volume:/home/nacos/conf \
-v nacos-data-volume:/home/nacos/data \
--restart=always nacos/nacos-server:v2.3.0
方式二:创建挂载目录 创建目录/opt/mount/nacos/logs, /opt/mount/nacos/conf, /opt/mount/nacos/data
mkdir -p /opt/mount/nacos/logs
mkdir -p /opt/mount/nacos/conf
mkdir -p /opt/mount/nacos/data
- 运行Nacos容器
docker run -d \
--name nacos \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-v /opt/mount/nacos/logs:/usr/nacos/logs \
-v /opt/mount/nacos/conf:/home/nacos/conf \
-v /opt/mount/nacos/data:/home/nacos/data \
--restart=always nacos/nacos-server:v2.3.0
4 配置Mysql数据源 mysql中新建一个库,名字可自定义,这里就用nacos,从github中找到创建表的文件,在nacos-config库中执行,创建所需的表https://myblogoss2.oss-cn-beijing.aliyuncs.com/dump-nacos-202403131030.sql
启动Nacos
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.229.161 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=1234 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
-v nacos-logs:/usr/nacos/logs \
-v nacos-conf:/home/nacos/conf \
-v nacos-data:/home/nacos/data \
--name nacos --restart=always nacos/nacos-server:v2.3.0
Docker安装Redis
- 拉取镜像或加载本地镜像
docker pull redis
或者:
docker load -i redis.tar
- 准备相应版本的redis.conf文件 下载地址 或者自定义一个配置文件: redis.conf
bind 0.0.0.0
port 6379
protected-mode no
daemonize no
- 创建数据卷或挂载目录 方式一:使用Volume挂载 创建数据卷 redis-conf, redis-data
docker volume create redis-conf
docker volume create redis-data
将redis.conf文件复制到redis-conf/_data目录下
方式二:创建挂载目录 创建目录/opt/mount/redis/conf, /opt/mount/redis/data
mkdir -p /opt/mount/redis/conf
mkdir -p /opt/mount/redis/data
将redis.conf文件复制到/opt/mount/redis/conf目录下 4. 运行Redis容器
docker run -d \
--name redis \
-p 6379:6379 \
-v redis-conf:/usr/local/etc/redis \
-v redis-data:/data \
redis redis-server /usr/local/etc/redis/redis.conf
或
docker run -d \
--name redis \
-p 6379:6379 \
-v /opt/mount/redis/conf:/usr/local/etc/redis \
-v /opt/mount/redis/data:/data \
redis redis-server /usr/local/etc/redis/redis.conf
Docker安装ElasticSearch
- 拉取镜像或加载本地镜像 以8.6.0版本为例:
docker pull elasticsearch:8.6.0
或者:
docker load -i elasticsearch:8.6.0.tar
- 创建网络 因为需要部署kibana容器,因此需要让es和kibana容器互联。
docker network create es-net
- 创建数据卷或挂载目录
方式一:使用Volume挂载 创建数据卷 es-data, es-logs, es-config
docker volume create es-data
docker volume create es-logs
docker volume create es-config
方式二:创建挂载目录 创建目录/opt/mount/es/data, /opt/mount/es/plugins, /opt/mount/es/config
mkdir -p /opt/mount/es/data
mkdir -p /opt/mount/es/plugins
mkdir -p /opt/mount/es/config
有需要可以改变权限
chmod 777 /opt/mount/es/data
chmod 777 /opt/mount/es/plugins
chmod 777 /opt/mount/es/config
- 运行ElasticSearch容器
docker run -d \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v es-data:/usr/share/elasticsearch/data \
-v es-config://usr/share/elasticsearch/config \
-v es-plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.6.0
或
docker run -d \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /opt/mount/es/data:/usr/share/elasticsearch/data \
-v /opt/mount/es/config:/usr/share/elasticsearch/config \
-v /opt/mount/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.6.0
相关信息
- --network=es-net 指定网络
- -p 9200:9200 指定端口映射
- -p 9300:9300 指定端口映射
- -v es-data:/usr/share/elasticsearch/data 指定数据目录
- -v es-config://usr/share/elasticsearch/config 指定配置文件目录
- -v es-plugins:/usr/share/elasticsearch/plugins 指定插件目录
- -e "discovery.type=single-node" 指定单节点模式
- -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" 指定JVM内存
- --privileged 开启容器的特权模式
- 关闭密码验证 找到配置文件的挂载目录,修改配置文件elasticsearch.yml,添加以下内容:
xpack.security.enabled: false
- 重启ElasticSearch容器
docker restart es
- 测试 在浏览器中访问http://服务器ip地址:9200,如果看到如下信息,则表示安装成功:
Docker安装Kibana
- 拉取镜像或加载本地镜像
docker pull kibana:8.6.0
或者:
docker load -i kibana:8.6.0.tar
- 创建容器
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:8.6.0
注意
- -e ELASTICSEARCH_HOSTS=http://es:9200 指定es的地址
- --network=es-net 指定网络
- -p 5601:5601 指定端口映射
- 测试 在浏览器中访问http://服务器ip地址:5601,如果看到相关页面,则表示安装成功。
Docker安装Sentinel
- 拉取镜像或加载本地镜像
docker pull bladex/sentinel-dashboard
或者:
docker load -i sentinel-dashboard.tar
- 创建容器
docker run --name sentinel -p 8858:8858 -td bladex/sentinel-dashboard
注意
- -p 8858:8858 指定端口映射
- --name sentinel 指定容器名称
- -td 后台运行
- 测试 在浏览器中访问http://服务器ip地址:8858,如果看到相关页面,则表示安装成功。