我有一个Dockerfile,该文件使用官方的nginx映像(通过Angular应用程序)为静态网站提供服务
FROM nginx:1.17
COPY ./dist/thepath/ /usr/share/nginx/html
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
CMD ["nginx", "-g", "daemon off;"]
通过docker在本地运行时,它可以完美工作。但是我正在尝试将其与Red Hat的Openshift(我工作的公司所拥有)一起使用。 当我开始构建
oc start-build somelabel --from-dir。 --follow -n someprojectname
Openshift使用RedHat注册表中的映像代替官方映像
步骤1/7:从 Registry.access.redhat.com/rhscl/nginx-112-rhel7@sha256:ba3352b9f577e80cc5bd6805f86d0cee5965b3b6caf26c10e84f54b6b33178e5
是否可以从Docker Hub(https://hub.docker.com/_/nginx)“强制”使用?
答案 0 :(得分:1)
OpenShift不支持以root用户身份运行容器。确保您要运行的容器以非root用户身份运行。
答案 1 :(得分:0)
.dockercfg 文件(对于较新的Docker客户端,为 $ HOME / .docker / config.json )是一个Docker凭据文件,用于存储您的信息(如果您以前拥有过的话)登录到安全或不安全的注册表中。
要提取不是来自OKD内部注册表的受保护的容器映像,您必须使用Docker凭据创建一个提取秘密并将其添加到您的服务帐户中。
如果您已经有用于安全注册表的 .dockercfg 文件,则可以通过运行以下命令从该文件中创建一个机密:
$ oc create secret generic <pull_secret_name> \
--from-file=.dockercfg=<path/to/.dockercfg> \
--type=kubernetes.io/dockercfg
或者如果您有 $ HOME / .docker / config.json 文件:
$ oc create secret generic <pull_secret_name> \
--from-file=.dockerconfigjson=<path/to/.docker/config.json> \
--type=kubernetes.io/dockerconfigjson
如果您还没有用于安全注册表的Docker凭证文件,则可以通过运行以下命令来创建密钥:
$ oc create secret docker-registry <pull_secret_name> \
--docker-server=<registry_server> \
--docker-username=<user_name> \
--docker-password=<password> \
--docker-email=<email>
要使用机密为吊舱提取图像,必须将机密添加到服务帐户。在此示例中,服务帐户的名称应与pod使用的服务帐户的名称匹配;默认是默认服务帐户:
$ oc secrets link default <pull_secret_name> --for=pull
要使用秘密来推送和拉动构建映像,秘密必须可安装在吊舱内。您可以通过运行以下命令来做到这一点:
$ oc secrets link builder <pull_secret_name>
您可以在这里找到更多信息:managing-images。
之后,将 anyuid SCC附加到您的SA。 然后,您通常可以构建Dockerfile。
答案 2 :(得分:0)
您可以使用官方的rhscl Dockerfile作为Dockerfile的基础。 https://github.com/sclorg/nginx-container/blob/master/1.14/Dockerfile
另一种方法是使用nginx中的Dockerfile,并用Object
更改Object
行,并在openshift上构建自己的nginx