Docker 相关命令

这篇具有很好参考价值的文章主要介绍了Docker 相关命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、安装 Docker

1. CentOS 7 安装 docker

1.1 卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1.2 安装 docker

1.2.1 如果没有 yum,先安装 yum 工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

1.2.2 更新本地镜像源

设置docker镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

yum install -y docker-ce

** 1.3 启动 docker **

docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

# 关闭
systemctl stop firewalld


# 禁止开机启动防火墙
systemctl disable firewalld


#查看是否关闭防火墙
systemctl status firewalld

启动

#通过命令启动docker
systemctl start docker


#查看docker版本
docker -v

** 1.4 配置镜像加速 **

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

##创建文件夹
sudo mkdir -p /etc/docker


 ##在文件夹内新建一个daemon.json文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://m3e0b9zc.mirror.aliyuncs.com"]
}
EOF


##重新加载文件
sudo systemctl daemon-reload


##重启docker
sudo systemctl restart docker


##配置docker开机自启
systemctl enable docker

2. docker 相关命令

启动docker(systemctl 命令是系统服务管理器指令)
systemctl start docker

重启docker
systemctl restart docker

然后查看docker状态
systemctl status docker

查看容器id
docker ps -a

启动容器
docker start 容器id

移除容器
docker rm 容器id

强制删除容器
docker rm -f 容器id

查看镜像
docker images

删除 docker 仓库中的镜像
docker rmi 镜像id

删除 docker 仓库中的镜像
docker rmi 镜像名称

设置 redis 跟随 docker 启动命令
docker update redis --restart=always

重新加载服务配置文件
systemctl daemon-reload

查看本机 docker 安装路径
sudo docker info | grep "Docker Root Dir"

二、安装 Mysql

1. 安装命令

docker run  -itd  -p 3366:3306 --name mysql -e character-set-server=utf8mb4 --privileged=true  --restart unless-stopped  -v /data/mysql/conf.d:/etc/mysql/conf.d  -v /data/mysql/logs:/logs  -v /data/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime  -e MYSQL_ROOT_PASSWORD123456  -d mysql:8.0.32 --lower_case_table_names=1

2. 修改 mysql 密码

docker exec -it mysql /bin/bash
ALTER user 'root'@'%' IDENTIFIED BY '123456';

三、安装 Redis

1. 安装命令

执行命令,下载 redis 镜像(版本看自己选择)

docker pull redis:4.0.1

执行命令,创建并启动 redis 容器

docker run --rm -d --name redis6379 -p 6379:6379 redis:4.0.1 --requirepass "123456"

测试方式一:使用 RedisDesktopManager 进行连接测试,可以正常的进行连接。

测试方式二:进入容器测试,执行以下命令,我们可以发现 redis 可以正常执行

# 进入容器
docker exec -it redis6379 bash
 
# 打开 redis 的客户端
redis-cli
 
# 输入 redis 的密码
auth 123456
 
# 封装一个 key 值
set age 35
 
# 获取刚才封装的 key 值
get age

2. 修改 redis 密码

docker exec -it redis sh
redis-cli -h 127.0.0.1 -p 6379 -a your_password
config set requirepass 123456
redis-cli -h localhost -p 6379

四、安装 docker-compose

#1.切换目录
cd /usr/local/bin/


#2.下载
wget https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64


#3.修改文件名
mv docker-compose-Linux-x86_64 docker-compose


#4.添加权限
chmod 777 /usr/local/bin/docker-compose

五、安装 Nginx

1、安装命令

Nginx 挂载到服务器的目录:

/work/nginx/conf.d 用于存放配置文件
/work/nginx/html 用于存放网页文件
/work/nginx/logs 用于存放日志
/work/nginx/cert 用于存放 HTTPS 证书

① 创建 /work/nginx 目录,并在该目录下新建 nginx.conf 文件,避免稍后安装 Nginx 报错。内容如下:

user  nginx;
worker_processes  1;

events {
    worker_connections  1024;
}

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
#    access_log  /var/log/nginx/access.log  main;

    gzip on;
    gzip_min_length 1k;     # 设置允许压缩的页面最小字节数
    gzip_buffers 4 16k;     # 用来存储 gzip 的压缩结果
    gzip_http_version 1.1;  # 识别 HTTP 协议版本
    gzip_comp_level 2;      # 设置 gzip 的压缩比 1-91 压缩比最小但最快,而 9 相反
    gzip_types text/plain application/x-javascript text/css application/xml application/javascript; # 指定压缩类型
    gzip_proxied any;       # 无论后端服务器的 headers 头返回什么信息,都无条件启用压缩

    include /etc/nginx/conf.d/*.conf; ## 加载该目录下的其它 Nginx 配置文件
}

② 执行如下命令,使用 Docker 启动 Nginx 容器。

docker run -d \
--name nginx --restart always \
-p 80:80 -p 443:443 \
-e "TZ=Asia/Shanghai" \
-v /work/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /work/nginx/conf.d:/etc/nginx/conf.d \
-v /work/nginx/logs:/var/log/nginx \
-v /work/nginx/cert:/etc/nginx/cert \
-v /work/nginx/html:/usr/share/nginx/html \
nginx:alpine

③ 执行 docker ps 命令,查看到 Nginx 容器的状态是 UP 的。

④ 启动 docker 容器报错

问题描述:
Linux 系统在启动 docker 容器时,出现报错 docker: Error response from daemon: driver failed programming external connectivity on endpoint lucid_banach(端口映射或启动容器时报错): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name).
(exit status 1)).

原因分析:
启动 docker 后,再对防火墙firewalld进行操作,就会发生上述报错,当 firewalld 启动或者重启时,将会从 iptables 中移除 docker 的规则,影响 docker 的正常工作。

解决方案:
重启 docker 服务即可重新生成自定义链 docker。
root 用户输入指令 :systemctl restart docker

2、nginx 配置(结合芋道SpringBoo反向代理)

2.1 方式一:服务器 IP 访问

① 在 /work/nginx/conf.d 目录下,创建 ruoyi-vue-pro.conf,内容如下:

server {
    listen       80;
    server_name  139.9.196.247; ## 重要!!!修改成你的外网 IP/域名

    location / { ## 前端项目
        root   /usr/share/nginx/html/yudao-admin-ui;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }

    location /admin-api/ { ## 后端项目 - 管理后台
        proxy_pass http://192.168.0.213:48080/admin-api/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /app-api/ { ## 后端项目 - 用户 App
        proxy_pass http://192.168.0.213:48080/app-api/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

友情提示:

[root] 指令在本地文件时,要使用 Nginx Docker 容器内的路径,即 /usr/share/nginx/html/yudao-admin-ui,否则会报 404 的错误。

② 执行 docker exec nginx nginx -s reload 命令,重新加载 Nginx 配置。

友情提示:

如果你担心 Nginx 配置不正确,可以执行 docker exec nginx nginx -t 命令。

2.2 方式二:独立域名访问

暂无

六、Kafka 的安装与整合 SpringBoot 使用

1、部署 kafka

① 部署 kafka 需要用到 zookeeper,所以先下载 zookeeper 和 kafka

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

② 启动 zookeeper 和 kafka

# 启动 zookeeper
docker run -d --name zookeeper -p 2181:2181  wurstmeister/zookeeper

# 启动 kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=xxx.xxx.xxx.xxx(服务器IP):2181 --link zookeeper -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxx.xxx.xxx.xxx(服务器IP):9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

③ 进入到 kafka/bin 目录下启动

# 进入 kafka 
cd opt/kafka_2.13-2.8.1/bin

# 启动 topic
./kafka-console-producer.sh --broker-list localhost:9092 --topic vipsoft_kafka

④ 启动另一个 SSH,并进入 kafka 交互

# 进入 kafka 
cd opt/kafka_2.13-2.8.1/bin

# 启动 topic
 ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic vipsoft_kafka --from-beginning

# 测试发送消息–任意,在第一个窗口输入:
{“datas”:[{“channel”:"",“metric”:“temperature”,“producer”:“ijinus”,“sn”:IJA0101-00002245,“time”:1543207156000,“value”:80}],“ver”:1.0}

2、SpringBoot 整合 kafka

① pom.xml 中引入Kafka依赖

<!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka -->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>2.3.7.RELEASE</version>
</dependency>

② 配置 kafka 的 yaml 文件

kafka:
    bootstrap-servers: xxx.xxx.xxx.xxx:9092  # kafka 服务器地址 :端口
    producer:
      # 发生错误后,消息重发的次数。
      retries: 0
      #当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。
      batch-size: 16384
      # 设置生产者内存缓冲区的大小。
      buffer-memory: 33554432
      # 键的序列化方式
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      # 值的序列化方式
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      # acks=0 : 生产者在成功写入消息之前不会等待任何来自服务器的响应。
      # acks=1 : 只要集群的首领节点收到消息,生产者就会收到一个来自服务器成功响应。
      # acks=all :只有当所有参与复制的节点全部收到消息时,生产者才会收到一个来自服务器的成功响应。
      acks: 1
    consumer:
#      group-id:
      # 自动提交的时间间隔 在spring boot 2.X 版本中这里采用的是值的类型为Duration 需要符合特定的格式,如1S,1M,2H,5D
      auto-commit-interval: 1S
      # 该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下该作何处理:
      # latest(默认值)在偏移量无效的情况下,消费者将从最新的记录开始读取数据(在消费者启动之后生成的记录)
      # earliest :在偏移量无效的情况下,消费者将从起始位置读取分区的记录
      auto-offset-reset: earliest
      # 是否自动提交偏移量,默认值是true,为了避免出现重复数据和数据丢失,可以把它设置为false,然后手动提交偏移量
      enable-auto-commit: false
      # 键的反序列化方式
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      # 值的反序列化方式
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
    listener:
      # 在侦听器容器中运行的线程数。
      concurrency: 5
      #listner负责ack,每调用一次,就立即commit
      ack-mode: manual_immediate
      missing-topics-fatal: false

③ 测试使用

消费者

package com.xiaofan.kafka;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.support.Acknowledgment;
import org.springframework.kafka.support.KafkaHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;

import java.util.Optional;


@Component
public class KafkaConsumer {

    /**
     * 消费者订阅的主题为test 就是通过 @KafkaListener(topics = {"test"}) 注解实现的
     *
     * @param record 接收的消息被封装成 ConsumerRecord 对象
     */
    @KafkaListener(topics = "test", groupId = "3")
    public void topicTest(ConsumerRecord<?, ?> record, Acknowledgment ack, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic){
        Optional message = Optional.ofNullable(record.value());
        if(message.isPresent()){
            Object msg = message.get();
            System.err.println("topic_test 消费了: Topic: " + topic + ",Message:" + msg);
            ack.acknowledge();
        }
    }
}

生产者

package com.xiaofan.kafka;

import lombok.SneakyThrows;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.support.SendResult;
import org.springframework.stereotype.Component;
import org.springframework.util.concurrent.ListenableFuture;

import java.util.concurrent.TimeUnit;


@Component
public class KafkaProducer {

  @Autowired private KafkaTemplate<String, Object> kafkaTemplate;

  /**
   * 发送消息
   *
   * @param topic 消息主题
   * @param content 消息内容
   */
  @SneakyThrows
  public void sendMessage(String topic, String content) {
    ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send(topic, content);
    RecordMetadata recordMetadata = future.get().getRecordMetadata();
    if (recordMetadata == null) {
      System.out.println("消息发送失败!");
    }
    SendResult<String, Object> result = future.get(3, TimeUnit.SECONDS);
    System.out.println("发送的消息:" + result.getProducerRecord().value());
    System.out.println("发送成功!");
  }
}

Test测试

	@Test
    public void testKafka() {
        // 生产者发送消息
        kafkaProducer.sendMessage("test", "哈哈哈哈!");
        kafkaProducer.sendMessage("test", "hhhhhh?");

        // 在这里进行一下线程阻塞,模仿消费者消费消息的过程
        try {
            // 10s
            Thread.sleep(1000 * 3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

七、安装 ELFK

1、部署 elasticsearch

// 安装 es
docker pull elasticsearch:7.7.1

// 查看已安装的 docker 镜像
docker images

// 创建挂载目录
mkdir -p /data/elk/es/{config,data,logs}

// 授权,docker 中 elasticsearch 的用户 UID 是1000
chown -R 1000:1000 /data/elk/es

// 创建挂载配置文件
cd /data/elk/es/config
touch elasticsearch.yml
vi elasticsearch.yml

// 修改 elasticsearch.yml 配置文件
#[elasticsearch.yml]
cluster.name: "my-es"
network.host: 0.0.0.0
http.port: 9200

// 运行 elasticsearch,通过镜像,启动一个容器,并将 9200 和 9300 端口映射到本机(elasticsearch 的默认端口是 9200,我们把宿主环境 920 0端口映射到 docker 容器中的 9200 端口)
docker run -it  -d -p 9200:9200 -p 9300:9300 --name es -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -e "discovery.type=single-node" --restart=always -v /data/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /data/elk/es/data:/usr/share/elasticsearch/data -v /data/elk/es/logs:/usr/share/elasticsearch/logs elasticsearch:7.7.1

注意:记得保存 es 第一次启动信息,后面会用到
✅ Elasticsearch security features have been automatically configured!Authentication is enabled and cluster connections are encrypted.

ℹ️  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  6BRAzQEimwstg8RAnj5Q

ℹ️  HTTP CA certificate SHA-256 fingerprint:
  1b288912fc04c6edfeba6d79866db4d83f3ad05b03d882fd1a1fd5961c669aeb

ℹ️  Configure Kibana to use this cluster:Run Kibana and click the configuration link in the terminal when Kibana starts.Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiMWIyODg5MTJmYzA0YzZlZGZlYmE2ZDc5ODY2ZGI0ZDgzZjNhZDA1YjAzZDg4MmZkMWExZmQ1OTYxYzY2OWFlYiIsImtleSI6Im13a1FIb3dCVFRBN2VZX3J2WmF2Ol9CeEpmeGNmVEUyZTItc0thLXh2ZHcifQ==

ℹ️ Configure other nodes to join this cluster:Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxNzIuMTguMC4yOjkyMDAiXSwiZmdyIjoiMWIyODg5MTJmYzA0YzZlZGZlYmE2ZDc5ODY2ZGI0ZDgzZjNhZDA1YjAzZDg4MmZkMWExZmQ1OTYxYzY2OWFlYiIsImtleSI6Im1Ra1FIb3dCVFRBN2VZX3J2WmF1Oi1YcjExVDNXUTdhRmh4T2dfODBISUEifQ==

  If you're running in Docker, copy the enrollment token and run:
  `docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.4.3`
  
// 验证安装是否成功
curl http://localhost:9200

访问http://localhost:9200
用户名:elastic
输入es 第一次启动生成的密码:6BRAzQEimwstg8RAnj5Q

如果密码忘记,重置密码。

2、部署 kibana

// 安装 kibana
docker pull kibana:7.7.1

// 查看是否完成
docker images

// 获取 elasticsearch 容器 esip,esip 为es容器的通讯ip地址
docker inspect --format '{{ .NetworkSettings.IPAddress }}' es
// 查看IP
docker inspect elasticsearch  |grep IPAddress
// 查看 es 状态和详细 esip
docker inspect es

// 修改配置文件,创建文件夹、生成yml文件并且赋予读写权限
sudo mkdir -p /data/elk/kibana
sudo touch /data/elk/kibana/kibana.yml
sudo chmod +w /data/elk/kibana/kibana.yml

// 编辑配置文件
vi /data/elk/kibana/kibana.yml

// 修改 kibana.yml 配置文件,elasticsearch.hosts 即为 http://esip:9200
#[kibana.yml]
#Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://esip:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true

// 运行 kibana
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kibana -p 5601:5601 -v /data/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.7.1

// 查看状态
docker ps | grep kibana
docker ps

// 查看 kibana 日志
docker logs kibana

// 访问界面
浏览器上输入:http://ip:5601

注意:每次重启服务器,所分配的 esip 可能都不一样(后面会讲固定容器ip)

// 中文设置
// Kibana 的配置文件 kibana.yml 文件应该在 /data/elk/kibana/kibana.yml 路径下
// 要将 i18n.locale 配置为 zh-CN,打开 /data/elk/kibana/kibana.yml 文件,找到末尾并添加以下行
i18n.locale: "zh-CN"

// 重启 kibana 容器以使更改生效
docker restart kibana

3、部署 logstash

// 安装 logstash
docker pull logstash:7.7.1

// 编辑 logstash.yml 配置文件,所使用目录需对应新增
mkdir /data/elk/logstash/
touch /data/elk/logstash/logstash.yml
vi /data/elk/logstash/logstash.yml

// 修改 logstash.yml 配置文件
#[logstash.yml]
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://esip:9200" ]
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: changeme
path.config: /data/docker/logstash/conf.d/*.conf
path.logs: /var/log/logstash

// 编辑 logstash.conf 文件,此处先配置 logstash 直接采集本地数据发送至 es
mkdir /data/elk/logstash/conf.d/
touch /data/elk/logstash/conf.d/syslog.conf
vi /data/elk/logstash/conf.d/syslog.conf
cat /data/elk/logstash/conf.d/syslog.conf

// 修改 syslog.conf 配置文件
#[syslog.conf]
input {
  syslog {
    type => "system-syslog"
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["ip:9200"] 
    index => "system-syslog-%{+YYYY.MM}" 
  }
}
 
// 编辑本地 rsyslog 配置增加
vi /etc/rsyslog.conf 
*.* @@xxx.xxx.xxx.xxx(服务器ip):5044

// 配置修改后重启服务
systemctl restart rsyslog

// 运行 logstash
docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -p 5044:5044 --name logstash -v /data/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /data/elk/logstash/conf.d/:/data/docker/logstash/conf.d/ logstash:7.7.1

// 测试 es 接收 logstash 数据
curl http://localhost:9200/_cat/indices?v

4、部署 filebeat

// 在需要监测的机器 yum 安装 filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.7.1-x86_64.rpm
yum install filebeat-7.7.1-x86_64.rpm

// filebeat 配置,此处先配置 filebeat 直接发送数据到 es
vim /etc/filebeat/filebeat.yml

#[filebeat.yml]
output.logstash:
  # The Logstash hosts
  hosts: ["ip:5044"]

// 启动服务
systemctl restart filebeat.service

// es接收数据查询
curl http://localhost:9200/_cat/indices?v

5、filebeat 采集数据,logstash 过滤,在 kibana 中显示

// 删除之前的 logstash 生成的测试数据
curl -XDELETE http://localhost:9200/system-syslog-2023.12

// 修改 filebeat.yml,后重启服务
vim /etc/filebeat/filebeat.yml
cat /etc/filebeat/filebeat.yml

#[filebeat.yml]
output.logstash:
  # The Logstash hosts
  hosts: ["ip:5044"]

// 重启服务
systemctl restart filebeat.service

// 修改 lostash.conf 配置
touch /data/elk/logstash/conf.d/logstash.conf
vi /data/elk/logstash/conf.d/logstash.conf
cat /data/elk/logstash/conf.d/logstash.conf

#[lostash.conf]
input {
  beats {
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["172.17.0.2:9200"]
    index => "filebeat_g-%{+YYYY.MM.dd}"
  }
}

// 查看 es 是否获取数据
curl http://localhost:9200/_cat/indices?v

6、kibana 增加索引

Docker 相关命令,命令,docker,容器,运维
Docker 相关命令,命令,docker,容器,运维
Docker 相关命令,命令,docker,容器,运维
Docker 相关命令,命令,docker,容器,运维
Docker 相关命令,命令,docker,容器,运维

7、固定容器的 ip

1. 启动顺序

启动顺序 es、kibana、logstash、filebeat
cd /var/lib/docker
docker restart es
docker restart kibana
docker restart logstash
systemctl restart filebeat.service

2. 固定容器的 ip文章来源地址https://www.toymoban.com/news/detail-782731.html

// 查看网络列表
docker network ls

// 查看 es 状态和详细 esip
docker inspect es

// 查看网络连接情况
docker network inspect bridge

// 查看es容器的ip:
docker inspect es  |grep IPAddress
172.16.0.2
docker inspect kibana  |grep IPAddress
172.16.0.3
docker inspect logstash  |grep IPAddress
172.16.0.4

// 创建新的bridge网络供容器使用
docker network create --driver bridge --subnet 172.16.0.0/16  --gateway 172.16.0.1 elfk

注意:网段尽量不要跟主机重复。
166.166.0.0/16 其中末尾的16表示最多支持65535个ip地址,范围是166.166.0.2166.166.255.255。可以改为24,最多支持254个ip,范围是166.166.0.2166.166.0.255。
elfk 是创建的网络名称,可以自己改变。

//解除容器原先的网络:
docker network disconnect  bridge es
docker network disconnect  bridge kibana
docker network disconnect  bridge logstash

//重新绑定网络和指定ip:
docker network connect es --ip 172.16.0.2 es
docker network connect es --ip 172.16.0.2 kibana
docker network connect es --ip 172.16.0.2 logstash

// 再新建容器,记得绑定网络、ip,--network es --ip 172.16.0.2
// es
docker run -it  -d -p 9200:9200 -p 9300:9300 --name es  \
--network es --ip 172.16.0.2 \
-e ES_JAVA_OPTS="-Xms1g -Xmx1g"  \
-e "discovery.type=single-node"  \
--restart=always  \
-v /data/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  \
-v /data/elk/es/data:/usr/share/elasticsearch/data  \
-v /data/elk/es/logs:/usr/share/elasticsearch/logs elasticsearch:7.7.1

// kibana
docker run -d --restart=always \
--log-driver json-file --log-opt max-size=100m --log-opt max-file=2 \
--name kibana -p 5601:5601 \
--network es --ip 172.16.0.3 \
-v /data/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.7.1

// logstash
docker run -d --restart=always \
--log-driver json-file --log-opt max-size=100m --log-opt max-file=2 \
-p 5044:5044 --name logstash \
--network es --ip 172.16.0.4 \
-v /data/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /data/elk/logstash/conf.d/:/data/docker/logstash/conf.d/ logstash:7.7.1

到了这里,关于Docker 相关命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 『 云原生·Docker』Docker容器相关操作(二)

    本系列主要分为以下六大部分,正在更新中,尽请期待! 『 云原生·生之门』 『 云原生·前置知识』 『 云原生·Docker』 『 云原生·Kubernetes』 『 云原生·KubeSphere』 『 云原生·DevOps』 🚩点击关注本专栏 提示:已经更新的或正在更新的文章前面打勾了哈! 容器是 Docker的另一个

    2024年02月06日
    浏览(46)
  • 3.docker创建容器 (docker容器命令)

    2.1. 命令解读 docker run : 创建并运行一个容器 –name : 给容器起一个名字, 比如叫做 myNginx -p : 将宿主机端口与容器端口映射, 冒号左侧是宿主机端口, 右侧是docker容器端口 -d : 后台运行容器 nginx : 镜像名称 , 例如nginx 2.2. 通过查询得知nginx容器已经创建并运行成功 2.3. 验证是否启

    2024年02月04日
    浏览(46)
  • K8S自动化运维容器化(Docker)集群程序

    1.什么是K8S K8S全程为Kubernetes,由于K到S直接有8个字母简称为K8S。 版本:目前一般是1.18~1.2.0,后续可能会到1.24-1.26,1.24版本后丢弃了docker(如需要使用需要第三方插件配合),目前最新版本是1.27 官网:https://kubernetes.io GitHub:GitHub - kubernetes/kubernetes: Production-Grade Container Schedul

    2024年02月10日
    浏览(69)
  • Docker之镜像与容器的相关操作

    目录  一、Docker镜像 搜索镜像 下载镜像  查看宿主机上的镜像 删除镜像  二、Docker容器 创建容器  查看容器 启停容器 删除容器 进入容器 创建/启动/进入容器 退出容器 查看容器内部信息 Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认

    2024年04月09日
    浏览(35)
  • docker命令(查看容器状态stats、容器的导入导出、docker容器的详细信息inspect、docker cp命令的使用)

    目录 查看docker容器状态: docker镜像的导入导出  第一种导入导出(是docker本地的静态) 第二种导出导入 (这种导出是正在运行的容器里的文件系统变成一个归档文件(可以包含已经下载好的软件)) docker容器的详细信息: 命令: 设置docker容器资源限制,再通过inspect查看 d

    2024年02月10日
    浏览(53)
  • 【docker05】docker容器命令

    有镜像才能创建容器,这是根本前提(下载一个Centos或者ubuntu镜像演示) 命令: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTION说明(常用):有些是一个减号,有些是两个减号 –name=“容器新名字” 为容器指定一个名称 -d:后台运行容器并返回容器ID,也即启动守护式容器(后台运行)

    2024年02月04日
    浏览(36)
  • 【Docker】Docker相关基础命令

    目录 一、Docker服务相关命令 1、启动docker服务 2、停止docker服务 3、重启docker服务 4、查看docker服务状态 5、开机自启动docker服务 二、Images镜像相关命令 1、查看镜像 2、拉取镜像 3、搜索镜像 4、删除镜像 三、Container容器相关命令 1、创建容器 2、查看容器 3、启动容器 4、删除

    2024年02月15日
    浏览(39)
  • docker save 命令 docker load 命令 快速复制容器

    docker save 命令用于在系统上把正在使用的某个容器镜像 导出成容器镜像文件保存下载,以便在其他系统上导入这个容器镜像文件 以便快速在其他服务器上启动相同的容器。 查看redis容器和镜像 导出redis镜像文件 注意命令中 -o 跟的是导出的镜像文件的文件名 可以任意命名 本

    2024年03月15日
    浏览(54)
  • Docker容器------镜像,容器基础命令

    目录  一,docker镜像  1,查看docker版本  2,获取镜像 2.1查看下载到本地的所有镜像   2.2 获取镜像信息 2.3 添加镜像标签(上传镜像到仓库)   2.4 镜像导出  2.5 镜像导入  2.6 ,删除镜像  2.7 上传镜像 ​编辑 二,docker 容器操作 1,查看容器 2,容器创建----docker create  

    2024年02月05日
    浏览(53)
  • K8S:K8S自动化运维容器Docker集群

    (1)K8S全程为Kubernetes,由于K到S直接有8个字母简称为K8S。 (2)版本:目前一般是1.18~1.2.0,后续可能会到1.24-1.26,1.24版本后丢弃了docker(如需要使用需要第三方插件配合),目前最新版本是1.27 (3)官网:https://kubernetes.io GitHub:GitHub - kubernetes/kubernetes: Production-Grade Container S

    2024年02月10日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包