错误 /dev/tty: 在 docker 内安装 sqlcmd 时没有这样的设备或地址

0 centos sqlcmd tty docker dockerfile

我想在我的 docker 映像中安装 sql cmd。我的 dockerfile 有这些命令来安装 sqlcmd (centos 7 基本映像)

RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
RUN yum remove mssql-tools unixODBC-utf16-devel
RUN yum install -y unixODBC-devel mssql-tools
Run Code Online (Sandbox Code Playgroud)

以下是 docker 构建日志

Transaction test succeeded
Running transaction
  Updating   : libcom_err-1.42.9-17.el7.x86_64                             1/14
  Installing : unixODBC-2.3.7-1.rh.x86_64                                  2/14
  Updating   : libss-1.42.9-17.el7.x86_64                                  3/14
  Installing : e2fsprogs-libs-1.42.9-17.el7.x86_64                         4/14
  Installing : e2fsprogs-1.42.9-17.el7.x86_64                              5/14
  Updating   : 1:openssl-libs-1.0.2k-19.el7.x86_64                         6/14
  Installing : 1:make-3.82-24.el7.x86_64                                   7/14
  Installing : 1:openssl-1.0.2k-19.el7.x86_64                              8/14
/var/tmp/rpm-tmp.8S1dKq: line 17: /dev/tty: No such device or address
error: %pre(msodbcsql17-17.5.2.1-1.x86_64) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package msodbcsql17-17.5.2.1-1.x86_64
error: msodbcsql17-17.5.2.1-1.x86_64: install failed
/var/tmp/rpm-tmp.tObfQB: line 4: /dev/tty: No such device or address
error: %pre(mssql-tools-17.5.2.1-1.x86_64) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package mssql-tools-17.5.2.1-1.x86_64
  Installing : unixODBC-devel-2.3.7-1.rh.x86_64                           11/14
error: mssql-tools-17.5.2.1-1.x86_64: install failed
  Cleanup    : 1:openssl-libs-1.0.2k-8.el7.x86_64                         12/14
  Cleanup    : libss-1.42.9-10.el7.x86_64                                 13/14
  Cleanup    : libcom_err-1.42.9-10.el7.x86_64                            14/14
  Verifying  : libss-1.42.9-17.el7.x86_64                                  1/14
Run Code Online (Sandbox Code Playgroud)

当我使用 docker exec 在容器的终端内手动运行此安装命令时,它工作正常。如果我直接在 Linux 机器上运行这个命令,它工作得很好。仅当我使用 docker build 构建 docker 映像时,我才会收到错误 /dev/tty: No such device or address

小智 8

尝试: RUN ACCEPT_EULA=Y yum install -y unixODBC-devel mssql-tools