Openshift:使用nginx官方映像,而不是OC注册中心的映像

时间:2019-07-15 17:22:28

标签: angular docker nginx kubernetes openshift

我有一个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)“强制”使用?

3 个答案:

答案 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