apt 安装 dockerdocker log logging driver 从运行的容器中提取日志

编程入门 行业动态 更新时间:2024-10-11 11:17:20

apt 安装 dockerdocker log logging driver 从运行的<a href=https://www.elefans.com/category/jswz/34/1771431.html style=容器中提取日志"/>

apt 安装 dockerdocker log logging driver 从运行的容器中提取日志

apt 安装 docker&docker log& logging driver

  • apt 安装 docker&docker log& logging driver
    • A: 在线 apt 安装
      • 1. 在线安装 docker
      • 2. 配置开机启动
      • 3. 验证docker
      • 4. 配置ali镜像加速器
      • 5.配置日志驱动
      • 6.配置默认的日志记录驱动程序
      • 7.启动容器,测试日志文件
      • 8.Docker logs子命令
      • 9.Docker logging driver
      • 10 Docker支持的logging dirver种类
    • B: centos7 离线安装docker
    • C: 安装docker-compose
    • D: 如何关闭SELinux
      • 1. 永久关闭SELinux
      • 2. 临时关闭SELinux

apt 安装 docker&docker log& logging driver

A: 在线 apt 安装

1. 在线安装 docker

# docker 安装后配置,镜像加速
root@ekmp-server-prod:/home/ekmp# dockerCommand 'docker' not found, but can be installed with:snap install docker     # version 19.03.13, or
apt  install docker.io  # version 19.03.8-0ubuntu1.20.04.2See 'snap info docker' for additional versions.
root@ekmp-server-prod:/home/ekmp# apt install docker.io
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for dbus (1.12.16-2ubuntu2.1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...

2. 配置开机启动

systemctl start docker && systemctl enable docker

3. 验证docker

docker version

4. 配置ali镜像加速器

ali镜像加速器

#针对Docker客户端版本大于 1.10.0 的用户
#您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": [""]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

5.配置日志驱动

配置日志驱动
Docker包含多种日志记录机制,可帮助您 从正在运行的容器和服务中获取信息。这些机制称为日志记录驱动程序。

每个Docker守护程序都有一个默认的日志记录驱动程序,除非您将其配置为使用其他日志记录驱动程序,否则每个容器都会使用该日志记录驱动程序。

除了使用Docker随附的日志记录驱动程序之外,您还可以实现和使用日志记录驱动程序插件。

6.配置默认的日志记录驱动程序

要将Docker守护程序默认配置为特定的日志记录驱动程序,请将值设置log-driverdaemon.json 文件中日志记录驱动程序的名称,该文件位于/etc/docker/Linux主机或 C:\ProgramData\docker\config\Windows服务器主机上。请注意daemon.json ,如果文件不存在,则应创建文件。默认的日志记录驱动程序是json-file。以下示例将默认的日志记录驱动程序显式设置为syslog

{"log-driver": "syslog"
}

如果日志记录驱动程序具有可配置的选项,则可以daemon.json使用键在文件中将它们设置 为JSON对象log-opts。下面的示例在json-file日志记录驱动程序上设置两个可配置选项:

{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3","labels": "production_status","env": "os,customer"}
}

注意

log-opts配置daemon.json文件中的配置选项必须以字符串形式提供。因此,布尔值和数值(max-file例如上面示例中的值 )必须用引号(")括起来。

如果您未指定日志记录驱动程序,则默认值为json-file。因此,命令的默认输出docker inspect <CONTAINER>是JSON。

#查看docker的状态,找到/usr/lib/systemd/system/docker.service
systemctl status docker
#查看docker.service找到环境变量配置EnvironmentFile=-/etc/sysconfig/docker
cat /usr/lib/systemd/system/docker.service
#编辑/etc/sysconfig/docker配置信息将--log-driver=journald去除
vi /etc/sysconfig/docker
#OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
#OPTIONS='--selinux-enabled --signature-verification=false'
#配置daemon.json
vi /etc/docker/daemon.json
{"registry-mirrors": [""],"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3","labels": "production_status","env": "os,customer"}
}
sudo systemctl daemon-reload
sudo systemctl restart docker

7.启动容器,测试日志文件

#启动nginx容器
docker run nginx
#docker启动后日志会在以下位置/var/lib/docker/containers/容器ID/容器ID-json.log
ls /var/lib/docker/containers/9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39
9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39-json.log  checkpoints  config.v2.json  hostconfig.json  hostname  hosts  resolv.conf  resolv.conf.hash  secrets  shm

日志内容

 cat 9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39-json.log
{"log":"/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration\n","stream":"stdout","time":"2020-08-27T07:07:31.530206826Z"}
{"log":"/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/\n","stream":"stdout","time":"2020-08-27T07:07:31.530259323Z"}
{"log":"/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh\n","stream":"stdout","time":"2020-08-27T07:07:31.53274532Z"}
{"log":"10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf\n","stream":"stdout","time":"2020-08-27T07:07:31.538446501Z"}
{"log":"10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf\n","stream":"stdout","time":"2020-08-27T07:07:31.552051393Z"}
{"log":"/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh\n","stream":"stdout","time":"2020-08-27T07:07:31.552168337Z"}
{"log":"/docker-entrypoint.sh: Configuration complete; ready for start up\n","stream":"stdout","time":"2020-08-27T07:07:31.554854339Z"}

8.Docker logs子命令

Docker logs子命令
默认情况下,Docker的日志会发送到容器的标准输出设备(STDOUT)和标准错误设备(STDERR),其中STDOUT和STDERR实际上就是容器的控制台终端。

我们可以通过logs子命令来查看具体某个容器的日志输出:

#docker logs CONTAINER ID
docker logs 9475d4c1ecb0
#这时看到的日志是静态的,截止到目前为止的日志。如果想要持续看到新打印出的日志信息,那么可以加上 -f 参数,如:
docker logs -f 9475d4c1ecb0

9.Docker logging driver

Docker日志会发送到STDOUT和STDERR。但实际上,Docker还提供了其他的一些机制允许我们从运行的容器中提取日志,这些机制统称为 logging driver

对Docker而言,其默认的logging driver是json-file,如果在启动时没有特别指定,都会使用这个默认的logging driver。

docker info | grep 'logging driver'
Logging Driver: json-file
#json-file会将我们在控制台通过docker logs命名看到的日志都保存在一个json文件中,我们可以在服务器Host上的容器目录中找到这个json文件。
#容器日志路径:/var/lib/docker/containers/<container-id>/<container-id>-json.log

查看日志路径等信息

#主要看LogPath的路径
[root@localhost var]# docker inspect 9475d4c1ecb0 | grep 'Path'"Path": "/docker-entrypoint.sh","ResolvConfPath": "/var/lib/docker/containers/9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39/resolv.conf","HostnamePath": "/var/lib/docker/containers/9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39/hostname","HostsPath": "/var/lib/docker/containers/9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39/hosts","LogPath": "/var/lib/docker/containers/9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39/9475d4c1ecb0d962045d008fb8721e7a3392836aecdc562446c2d6a027e55a39-json.log",

10 Docker支持的logging dirver种类

Docker支持的logging dirver种类

The following logging drivers are supported. See the link to each driver’s documentation for its configurable options, if applicable. If you are using logging driver plugins, you may see more options.

DriverDescription中文解释
noneNo logs are available for the container and docker logs does not return any output.none 代表禁用容器日志,不会输出任何容器日志。
localLogs are stored in a custom format designed for minimal overhead.
json-fileThe logs are formatted as JSON. The default logging driver for Docker.
syslogWrites logging messages to the syslog facility. The syslog daemon must be running on the host machine.Linux上的日志管理服务
journaldWrites log messages to journald. The journald daemon must be running on the host machine.Linux上的日志管理服务
gelfWrites log messages to a Graylog Extended Log Format (GELF) endpoint such as Graylog or Logstash.是种开源的日志管理方案
fluentdWrites log messages to fluentd (forward input). The fluentd daemon must be running on the host machine.是种开源的日志管理方案
awslogsWrites log messages to Amazon CloudWatch Logs.第三方日志托管服务
splunkWrites log messages to splunk using the HTTP Event Collector.第三方日志托管服务
etwlogsWrites log messages as Event Tracing for Windows (ETW) events. Only available on Windows platforms.
gcplogsWrites log messages to Google Cloud Platform (GCP) Logging.第三方日志托管服务
logentriesWrites log messages to Rapid7 Logentries.

The following example starts an Alpine container with the none logging driver.

#我们可以在容器启动时通过加上 --log-driver 来指定使用哪个具体的 logging driver
docker run -it --log-driver none alpine ash
#本示例将启动一个alpine容器,该容器最多可以包含3个日志文件,每个文件不大于10 MB。
docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

B: centos7 离线安装docker

#此环境为未安装过docker服务的环境, 如果已经安装,则自行卸载。
#以下环境中上传的包及离线yum源默认为/home目录下,如无特殊说明,以此目录为准#下载docker离线安装包,下载地址
链接: 
提取码:4rod 
#将下载的包上传服务器,并解压到/home目录下,配置离线yum源
tar xvf docker-19.03.6.tar.gz -C /home/   #解压到home目录下
cp /home/docker/docker-19.03.6.repo /etc/yum.repos.d/     #配置离线YUM源
yum repolist   #查看是否配置成功
cd /home/docker
#安装docker19.03.6版本
yum -y install docker-ce-19.03.6-3.el7.x86_64.rpm
#启动docker服务
systemctl  start docker
#查看版本
docker -v
#添加开机自启动
systemctl enable docker

C: 安装docker-compose

github-docker-compose-releases

curl -L .28.4/run.sh > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

执行了docker-compose --version后输出如下所示表示安装成功

[root@shl dockerfiles]# docker-compose --version
docker-compose version 1.28.4, build cabd5cf

D: 如何关闭SELinux

Error starting daemon: SELinux is docnot supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in…enabled=false

1. 永久关闭SELinux

# 永久关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#关闭后需要重启系统
reboot
# 查看SELinux的状态
getenforce

编辑配置文件/etc/selinux/config,把 SELINUX= 更改为 SELINUX=disabled ,然后重启系统,SELinux 就被禁用了

2. 临时关闭SELinux

# 临时关闭SELinux就是enforcing 和 permissive 两种模式之间进行切换
setenforce 0 #切换成宽容模式
setenforce 1 #切换成强制模式
# check SELinux
getenforce

临时切换工作模式,重启系统生失效

更多推荐

apt 安装 dockerdocker log logging driver 从运行的容器中提取日志

本文发布于:2024-03-04 19:25:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1710196.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:容器   日志   dockerdocker   apt   log

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!