Docker介绍

Docker是什么,使用Docker的好处有哪些: 一文告诉你使用Docker的9大好处 - 知乎 (zhihu.com)

安装Docker可以参考 Docker版本升级 (tenglli.top)

当我们使用Docker安装某个软件时,需要两个步骤:

  1. 拉取软件指定版本镜像

  2. 根据镜像启动容器(容器可以启动多个,启动时可以将容器内的文件夹挂载到外部,这样我们从外部修改配置会同步到容器内)

注意:不同版本的镜像容器内文件结构可能不同,如果发现挂载失败,先随便启一个容器进去找到需要挂载的正确路径

Docker常用命令

  1. docker search imageName ## 根据名称从仓库查询镜像

  2. docker pull imageName (:version) ## 根据名称拉取镜像,可以指定version,不指定默认拉取last最新版本

  3. docker run ## 启动容器,如果镜像不存在会先尝试pull镜像。可以指定很多参数,指定端口、容器名、挂载目录等

  4. docker ps (-a) ## 查看正在运行的容器,加上 -a 则查看所有容器,包含未运行的

  5. docker logs containerName ## 查看某个容器的日志,如果启动失败可以看下出了什么问题

  6. docker start/stop/restart containerName ## 启动/停止/重启 容器

  7. docker rm containerName ## 删除容器 (需要先stop容器)

  8. docker rmi imageName ## 删除镜像 (需要先rm容器)

  9. docker exec -it containerName /bin/bash ## 进入容器内部

安装MySQL

docker run -p 3306:3306 --privileged=true --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.25

安装Redis

需要预先创建redis.conf,否则挂载时会把redis.conf当做目录

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
docker run -d -p 6379:6379 --privileged=true --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
redis redis-server /usr/local/etc/redis/redis.conf \
--requirepass "password" 

安装Nginx

先随便创建一个nginx容器,然后将配置复制出来

docker run -p 80:80 --name nginx -d nginx

docker cp nginx:/usr/share/nginx/html /mydata/nginx/html
docker cp nginx:/var/log /mydata/nginx/log
docker cp nginx:/etc/nginx /mydata/nginx/conf
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/log:/var/log \
-v /mydata/nginx/conf:/etc/nginx \
--privileged=true -d nginx:latest

安装ElasticSearch

先创建必要的文件夹和文件

echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml: 将 http.host: 0.0.0.0 添加到elasticsearch.yml的末尾(文件不存在则创建),设置ES监听所有IP

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/ 

-e "discovery.type=single-node" : 设置ES集群模式为“单节点”

-e ES_JAVA_OPTS="-Xms64m -Xmx512m" : 设置ES传给JVM的初始堆内存为64M,最大堆内存为512M

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--privileged=true -d elasticsearch:7.4.2

安装完成后访问9200端口验证(9200是对外提供服务的端口,9300是内部通信用的端口)

安装Kibana (ES可视化界面)

docker run -d --name  kibana -p 5601:5601 \
--privileged=true --link elasticsearch \
-e "ELASTICSEARCH_URL=http://127.0.0.1:9200" kibana:7.17.9

给ES设置密码

  1. 修改ES挂载的elasticsearch.yml,添加如下内容

xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

重启ES,然后进入ES容器内修改密码

docker exec -it elasticSearch /bin/bash
cd bin
elasticsearch-setup-passwords interactive

设置完成后,访问9200就要使用密码了, 账号是 ‘elastic

此时kibana会因为连不上9200而无法访问,我们需要给kibana配置ES的账号密码

## 进入kibana容器修改配置
docker exec -u 0 -it kibana /bin/bash
cd config
vi kibana.yml

## 如果报错E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission **),是因为容器内没有安装vi命令
## 执行以下命令安装vi,注意进入容器时需要 -u 0,才能使用root权限
apt-get update
apt-get install vim

vi kibana.yml

## 给kibana.yml添加如下配置
elasticsearch.username: "elastic"
elasticsearch.password: "xxxx"

退出容器,重启kibana即可成功访问

文章作者: 像柔风
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 像柔风的个人博客
默认分类 Docker
喜欢就支持一下吧