前言
之前有写过一个基于
Ubuntu20.04
的Docker容器的可视化Dockerfile
,当时默认火狐浏览器,今天要测试一个项目就run了一个可视化容器,但是我需要用到chrome浏览器,于是乎开始安装,按照正常安装方法安装好后发现无法运行,报错ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
(不支持以root身份运行,且不使用--no-sandbox),到这里可能到家就知道是什么问题了,那么接下来开始debug。
安装chrome浏览器全过程
1.下载chrome安装包
32位系统安装包:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb
64位系统安装包:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
2.开始安装
32位系统安装命令:
dpkg -i google-chrome-stable_current_i386.deb
64位系统安装命令:
dpkg -i google-chrome-stable_current_amd64.deb
3.不出意外的话直接安装可能会缺少依赖报错,解决办法:
执行以下命令即可直接安装:
apt-get update && apt-get install -f ./google-chrome-stable_current_amd64.deb
可能会有以下提示:
N: 由于文件'/root/google-chrome-stable_current_amd64.deb'无法被用户'_apt'访问,已脱离沙盒并提权为根用户来进行下载。- pkgAcquire::Run (13: 权限不够)
如出现以上提示直接忽略即可
4.更改/usr/bin/google-chrome-stable
文件配置
打开
google-chrome-stable
文件vim usr/bin/google-chrome-stable
找到
exec -a "$0" "$HERE/chrome" "$@"
这一行(不出意外应该在最后一行)exec -a "$0" "$HERE/chrome" "$@"
末尾追加--user-data-dir="$HOME/.config/chrome" --no-sandbox --disable-dev-shm-usage
参数即可
参数解读:
--user-data-dir
:chrome的配置信息目录,此参数可不增加--no-sandbox
:非沙箱模式运行--disable-dev-shm-usage
:关闭dev-shm
,此参数可解决“喔唷,崩溃啦!显示此网页时出了点问题。误代码: SIGTRAP
”报错
一键安装脚本
#!/bin/bash
apt-get update && apt-get install wget
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt-get install -y -f ./google-chrome-stable_current_amd64.deb
sed -e '/chrome/ s/^#*/#/' -i opt/google/chrome/google-chrome
echo 'exec -a "$0" "$HERE/chrome" "$@" --user-data-dir="$HOME/.config/chrome" --no-sandbox --disable-dev-shm-usage' >> /opt/google/chrome/google-chrome
结语
以上就是docker容器内安装chrome浏览器全过程,希望能帮到一些小伙伴。
如操作有问题欢迎去我的博客留言或者微信公众号留言哦。
参考:https://github.com/stephen-fox/chrome-docker/issues/8