为什么Selenium没有启动?

问题描述 投票:0回答:1

我正在尝试在 Ubuntu (20.04) 服务器上启动 Selenium (4.13.0) 作为 Docker 容器。硬盘已格式化为

xfs
并已启用配额。容器立即停止并出现错误。

相同的命令可以在没有配额的

ext4
格式化硬盘上正常运行。但是,其他容器(Spring Boot 和 Python)可以通过
xfs
和配额正常运行。

背景

我试图限制 Docker 容器的存储空间(可写层),所以我遵循了为每个容器设置存储驱动程序选项(--storage-opt)

命令

docker container run 
  --log-driver local 
  --detach 
  --shm-size=1g 
  --name selenium 
  --env SE_NODE_OVERRIDE_MAX_SESSIONS=true 
  --env SE_NODE_MAX_SESSIONS=10 
  --env SE_NODE_SESSION_TIMEOUT=180 
  selenium/standalone-chrome:4.13.0      

日志

2024-04-26 10:50:46.138 Traceback (most recent call last):
2024-04-26 10:50:46.138   File "/usr/bin/supervisord", line 11, in <module>
2024-04-26 10:50:46.138     load_entry_point('supervisor==4.1.0', 'console_scripts', 'supervisord')()
2024-04-26 10:50:46.138   File "/usr/lib/python3/dist-packages/supervisor/supervisord.py", line 350, in main
2024-04-26 10:50:46.138     options = ServerOptions()
2024-04-26 10:50:46.138   File "/usr/lib/python3/dist-packages/supervisor/options.py", line 439, in __init__
2024-04-26 10:50:46.138     existing_directory, default=tempfile.gettempdir())
2024-04-26 10:50:46.138   File "/usr/lib/python3.8/tempfile.py", line 425, in gettempdir
2024-04-26 10:50:46.138     tempdir = _get_default_tempdir()
2024-04-26 10:50:46.138   File "/usr/lib/python3.8/tempfile.py", line 357, in _get_default_tempdir
2024-04-26 10:50:46.138     raise FileNotFoundError(_errno.ENOENT,
2024-04-26 10:50:46.138 FileNotFoundError: [Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/']

主机上的配置

ubuntu@my-server:~$ cat /etc/docker/daemon.json
{
    "data-root": "/mnt/docker-data"
}
ubuntu@my-server:~$ cat /etc/fstab
LABEL=cloudimg-rootfs                           /                       ext4    defaults,discard                        0 0
UUID=f37b6675-93d5-405d-a68e-aeb459872297       /mnt/docker-data        xfs     defaults,quota,prjquota,pquota,gquota   0 0

Docker 安装

容器内没有安装座。

/tmp
目录位于容器中。

ubuntu@my-server:~$ docker container inspect selenium | grep "Mount"
        "MountLabel": "",
        "Mounts": [],

容器中的配置

容器中的

fstab
未配置:

seluser@2e59d8a6232f:/$ cat /etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM

研究

  • 我阅读了找不到可用的临时目录并检查了主机系统上的磁盘使用情况:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/root       9.7G  6.1G  3.6G  63% /
    /dev/xvdc        22G   14G  8.5G  62% /mnt/docker-data
    

    在 Docker 容器中:

    Filesystem      Size  Used Avail Use% Mounted on
    overlay          22G   14G  8.5G  62% /
    
  • 我已禁用配额,但收到相同的错误消息。

  • 我阅读了使用 OverlayFS 存储驱动程序并检查了

    xfs_info

    root@my-server:/home/ubuntu# xfs_info /dev/xvdc
    meta-data=/dev/xvdc              isize=512    agcount=4, agsize=1441792 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1
    data     =                       bsize=4096   blocks=5767168, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=2816, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
  • 我阅读了使用 OverlayFS 存储驱动程序并检查了

    docker info

    Storage Driver: overlay2
     Backing Filesystem: xfs
     Supports d_type: true
     Native Overlay Diff: true
     userxattr: false
    
  • 我阅读了找不到可用的临时目录并检查了主机上的索引节点:

    Filesystem       Inodes  IUsed    IFree IUse% Mounted on
    /dev/xvdc      11534336 202409 11331927    2% /mnt/docker-data
    

    在 Docker 容器中:

    Filesystem       Inodes  IUsed    IFree IUse% Mounted on
    overlay        11534336 202524 11331812    2% /
    
  • 我阅读了找不到可用的临时目录并检查了主机上的只读标志:

    /dev/xvdc on /mnt/docker-data type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,usrquota,prjquota,grpquota)
    
  • 我阅读了

    tempfile.py
    并检查了容器中
    /tmp
    的权限:

    drwxr-xr-t   1 root root  23 Apr 29 07:46 tmp
    

    所以有些东西改变了权限。在原始图像中,权限是

    drwxrwxrwt

由于错误,我无法使用默认入口点,因此我使用入口点

bash
启动容器来检查值。我不知道这是否会改变值。

问题

如何在启用配额的 xfs 磁盘上的 Docker 容器中启动 Selenium?

docker selenium-webdriver quota xfs
1个回答
0
投票

显然图像以某种方式损坏了(如果有人知道图像如何以这种方式损坏,请添加评论)。

为了解决这个问题,我必须删除该图像并提取一个干净的图像。我做了以下事情:

  1. 删除 Docker 容器

    docker container prune
    
  2. 删除 Docker 镜像

    docker image prune -a
    
  3. 启动 Docker 容器

    docker container run 
      --log-driver local 
      --detach 
      --shm-size=1g 
      --name selenium 
      --env SE_NODE_OVERRIDE_MAX_SESSIONS=true 
      --env SE_NODE_MAX_SESSIONS=10 
      --env SE_NODE_SESSION_TIMEOUT=180 
      selenium/standalone-chrome:4.13.0   
    

完成这些步骤后,该目录具有正确的权限:

drwxrwxrwt   1 root root  23 Oct  4  2023 tmp
© www.soinside.com 2019 - 2024. All rights reserved.