我将以下简单的 shell 脚本传递给 LXC 容器上的 bash:
apt-get update
apt-get install postgresql -y
sudo -u postgres psql -c 'create database dvdrental;'
我用来运行它的实际命令是:
cat sample.sh | lxc-attach -n test-container -- /bin/bash
我这样做而不是将脚本上传到容器并以这种方式执行的原因是,这只是我们正在构建的一个更复杂的应用程序的概念证明,它必须通过标准输入接收命令并运行它们在容器中。
它似乎工作得很好,除了一件事。psql
它在 postgresql 仍在安装时移动到命令,即
[...]
Get:21 http://archive.ubuntu.com/ubuntu/ trusty/main ssl-cert all 1.0.33 [16.6 kB]
Get:22 http://archive.ubuntu.com/ubuntu/ trusty-updates/main postgresql-common all 154ubuntu1 [103 kB]
Get:23 http://archive.ubuntu.com/ubuntu/ trusty-updates/main postgresql-9.3 amd64 9.3.10-0ubuntu0.14.04 [2,669 kB]
Get:24 http://archive.ubuntu.com/ubuntu/ trusty-updates/main postgresql all 9.3+154ubuntu1 [5,038 B]
Fetched 5,834 kB in 28s (207 kB/s)
Preconfiguring packages ...
sudo -u postgres psql -c 'create database dvdrental;'
Selecting previously unselected package libroken18-heimdal:amd64.
(Reading database ... 14599 files and directories currently installed.)
Preparing to unpack .../libroken18-heimdal_1.6~git20131207+dfsg-1ubuntu1.1_amd64.deb ...
Unpacking libroken18-heimdal:amd64 (1.6~git20131207+dfsg-1ubuntu1.1) ...
Selecting previously unselected package libasn1-8-heimdal:amd64.
[...]
注意sudo -u postgres psql -c 'create database dvdrental;'
输出中间的行的存在。有趣的是,它总是在 apt-get 命令的下载部分完成后立即显示...
有谁知道这可能是什么原因造成的?