bash - 如何在一个 shell 脚本中安装和使用 docker?
问题描述
我需要在一个脚本中安装 docker 并登录到我的存储库。我使用的是 ubuntu 16.04,但也可以使用 18.04。
docker_setup.sh:
sudo apt-get install -y docker.io
sudo service docker start
sudo usermod -a -G docker ubuntu
exec sudo su -l ubuntu
docker login -u $DOCKER_USER -p $DOCKER_PW
这在 shell 脚本中不起作用,因为该sudo su
命令会打开一个子 shell。newgrp docker
出于同样的原因,我不能这样做。另外,我不能做类似的事情
newgrp docker << DOCKERSUBHSELL
docker login -u $DOCKER_USER -p $DOCKER_PW
DOCKERSUBSHELL
因为我正在使用ray 库,并且该库的后面部分(在引擎盖下工作)也希望能够使用 docker 命令。有解决方案吗?
解决方案
这很容易。你可以像这样制作一个 shell 脚本,但你必须使用 cat 和 EOF。让我解释。
pi@raspberry$ sudo ./script.sh
该脚本将包含以下输出
cat << EOF | sudo apt-get install -y docker.io
sudo service docker start
sudo usermod -a -G docker ubuntu
exec sudo su -l ubuntu
exit
docker login -u $DOCKER_USER -p $DOCKER_PW
EOF
如果此命令“docker login -u $DOCKER_USER -p $DOCKER_PW”设置为在 ubuntu 用户中执行,然后从我的 bash 脚本中删除“exit”,你就完成了。
让我知道它是否有效或结果,以便我可以进一步修改它并为您提供帮助。谢谢 :)
推荐阅读
- javascript - 多行`console.table({a: "aaa\naaa", b: "bbb\nbbb"})` 用于节点
- docker - docker compose by ssh 不复制文件
- html - 文本被隐藏在页脚后面(边距底部不起作用)
- php - 如何在 wp_head() 中删除没有类或 id 的内联 css
- android - APK 未安装在三星 Galaxy S8 上
- android - 运行后台任务并更新不同片段中的值
- javascript - 如何在js中编辑日期类型的日期?
- sockets - 如何发送大于 MTU 的原始数据包?
- java - Java / 解压字符串 /
- java - GridBagLayout :组件之间的意外空间