Docker
Dokcer的安装
🌈Docker 部署常见应用
Nginx
使用docker拉取nginx镜像
1
docker pull nginx
修改nginx 配置
vim /usr/local/nginx/nginx.conf
1 | events { |
启动nginx 镜像
- 已将nginx 配置文件映射到宿主机
/opt/module/nginx/nginx.conf
- 将部署网站的静态目录 映射至/usr/local/vue
1
2
3docker run --name nginx --restart=always -p 80:80 -p 443:443 -p 9090:9090 -d -v /opt/module/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/module/vue:/usr/local/vue nginx
docker run --name nginx --restart=always -p 80:80 -p 443:443 -d -v /opt/module/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/module/blog:/opt/module/blog nginx- 已将nginx 配置文件映射到宿主机
查看nginx容器和日志
1
2
3
4
5查看启动容器
docker ps
查看日志
docker logs nginx若重写了nginx 配置后, 需要重新加载nginx
1
2重启nginx
docker restart nginx测试
MySQL
mysql 5.7 安装
拉取MySQL 5.7 镜像
1
docker pull mysql:5.7
运行MySQL镜像
说明: 将MySQL的data/conf/log 全部映射到宿主机的/opt/module/mysql 目录下
1
2
3
4
5
6
7
8
9
10docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart=always \
-v /opt/module/mysql/log:/var/log/mysql \
-v /opt/module/mysql/data:/var/lib/mysql \
-v /opt/module/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456.. \
mysql:5.7查看MySQL容器和日志
1
2
3
4
5查看启动容器
docker ps
查看日志
docker logs mysql进入mysql容器, 并测试环境
1
docker exec -it mysql /bin/bash
mysql 8.0 安装
拉取MySQL 8.0 镜像
1
docker pull mysql:8.0
运行MySQL镜像
1
2
3
4
5
6
7
8
9
10docker run \
--name mysql8 \
-d \
-p 3307:3306 \
--restart=always \
-v /opt/module/mysql-8.0/log:/var/log/mysql \
-v /opt/module/mysql-8.0/data:/var/lib/mysql \
-v /opt/module/mysql-8.0/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456.. \
mysql:8.0查看MySQL容器和日志
1
2
3
4
5查看启动容器
docker ps
查看日志
docker logs mysql8进入mysql容器, 测试环境
1
docker exec -it mysql8 /bin/bash
Redis
使用docker拉取redis镜像
1
docker pull redis
``
启动Redis容器
1
2
3
4
5
6docker run \
--name redis \
--restart=always \
-p 6379:6379 \
-d redis \
--requirepass "123456.." # 启动Redis连接测试
RabbitMQ
拉取镜像
1
2拉取镜像
docker pull rabbitmq:3.13-management启动
1
2
3
4
5
6
7
8
9docker run -d \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v rabbitmq-plugin:/plugins \
-e RABBITMQ_DEFAULT_USER=guest \
-e RABBITMQ_DEFAULT_PASS=123456 \
--restart=always \
rabbitmq:3.13-management
Nacos
拉取镜像
1
2拉取镜像
docker pull nacos/nacos-server:v2.1.1启动
1
2
3
4
5
6
7
8docker run -id \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
--restart=always \
nacos/nacos-server:v2.1.1
Sentinel
拉取镜像
1
2拉取镜像
docker pull bladex/sentinel-dashboard启动
1
2docker run -p 8858:8858 -d --name=sentinel \
--restart=always bladex/sentinel-dashboard:latest
Elasticserach
直接使用docker compose搭建ES和kibana的环境,
本次使用Window Docker
来安装, 若为Linux 系统, 则可以直接从第三步开始
拉取镜像
1
docker pull elasticsearch:8.5.0
启动ES容器
1
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.5.0
复制文件到挂载目录后, 停止并删除ES容器
1
2
3
4
5
6复制配置
docker cp elasticsearch:/usr/share/elasticsearch/config/ D:\\Environment\\DockerData\\Elasticsearch\\es_config
停止并删除容器
docker stop es
docker rm es查看docker compose 环境
1
docker-compose --version
创建docker-compose.yaml 文件, 内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39services:
elasticsearch:
container_name: elasticsearch
image: elasticsearch:8.5.0
restart: always
networks:
- glsx_net
ports:
- "9200:9200"
- "9300:9300"
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- "bootstrap.memory_lock=true"
volumes:
- "/d/Environment/DockerData/Elasticsearch/es_config:/usr/share/elasticsearch/config"
- "/d/Environment/DockerData/Elasticsearch/es_data:/usr/share/elasticsearch/data"
- "/d/Environment/DockerData/Elasticsearch/es_plugins:/usr/share/elasticsearch/plugins"
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
kibana:
container_name: kibana
image: kibana:8.5.0
restart: always
networks:
- glsx_net
ports:
- "5601:5601"
environment:
- "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"
networks:
glsx_net:
ipam:
driver: default
config:
- subnet: 172.20.0.0/16在创建es的文目录下, 启动容器
1
docker compose -f docker-compose.yml up -d
修改ES 配置, 关闭es的安全模块:
vim /var/lib/docker/volumes/es_es_config/_data/elasticsearch.yml
修改值为false, 如下所示:
集成
ik
分词器(若已经有安装包, 则可以直接将解压后的文件复制到挂载的目录下
/d/Environment/DockerData/Elasticsearch/es_plugins
)1
2
3
4
5进入已经启动成功的elasticsearch容器。
docker exec -it elasticsearch /bin/bash
下载ik分词器
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.5.0/elasticsearch-analysis-ik-8.5.0.zipps:
安装的ik分词器的版本一定要与elasticsearch的版本保持一致
下载完成后, 退出容器, 并重启elasticsearch
访问ES 和kibana
⭐Docker常用操作
基础操作
docker常用操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29搜索镜像 可以指定版本 docker search mysql:5.7
docker search 镜像名
查看已经下载的镜像
docker images
拉取镜像 可以指定版本 如 docker pull mysql:5.7
docker pull 镜像名
删除镜像
docker rmi id/名称
查看正在运行的容器
docker ps -a
停止容器
docker stop id/名称
删除容器
docker rm id/名称
查看容器日志
docker logs id/名称
查看容器内部ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名 | 容器id
查看目录映射关系
docker inspect -f "{{.Mounts}}" 【container-ID】更改挂载目录
方式一: 更改文件
关闭docker 服务
1
2
3
4
5
6
7
8关闭docker
systemctl stop docker.service
查看容器id
docker ps -a
查看容器的配置文件
cat /var/lib/docker/containers/【container-ID】/config.v2.json使用工具(idea 或 在线工具) 格式化json 文件
修改挂载的目录, 具体位置如下:
启动docker
1
2
3
4启动
systemctl start docker
查看docker状态
systemctl status docker启动容器
1
docker restart 【container-ID】
docker 镜像的导出和导入
导出
1 | docker save -o myimage_latest.tar myimage:latest |
导入
1 | docker load -i myimage_latest.tar |
docker 日志
docker 的容器日志通常存放在宿主机的 /var/lib/docker/containers/【container-ID】
日志过多时, 可以进行删除
加速Docker镜像拉取
配置Docker 镜像加速
将镜像加速网站写入
/etc/docker/daemon.json
中1
2
3
4
5sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://docker.211678.top"]
}
EOF重启Docker 进程
1
2sudo systemctl daemon-reload
sudo systemctl restart docker若遇见Docker 启动故障, 以下操作可能解决
1
2
3
4
5mv /etc/docker/daemon.json /etc/docker/daemon.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
镜像加速网站
“https://docker.m.daocloud.io“,
“https://dockerproxy.com“,
“https://docker.mirrors.ustc.edu.cn“,
“https://docker.nju.edu.cn
3.
Docker Compose
1 | services: |