OpenShift Image and ImageStream Operations: Difference between revisions
(64 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
* [[OpenShift_Operations#Subjects|OpenShift Operations]] | * [[OpenShift_Operations#Subjects|OpenShift Operations]] | ||
* [[OpenShift_Concepts#Image_Stream|OpenShift Concepts - Image Streams]] | |||
=Overview= | =Overview= | ||
* [[OpenShift Concepts#Image|Image]] | |||
* [[OpenShift Concepts#Image_Stream|Image Streams]] | |||
=Image Operations= | |||
An example of image stream definition file is available at https://raw.githubusercontent.com/jboss-openshift/application-templates/master/jboss-image-streams.json. A version is also available here: [[OpenShift JBoss ImageStream Definition Example]]. | ==<span id='List Images available to the Project'></span>List Images available to the Cluster== | ||
[[Oc_get#images.2C_image|oc get images]] | |||
The command lists all images averrable in the cluster. The images are not project-scoped, but cluster-scoped, so any user from any project that has sufficient cluster-level privileges can get information about any image available to any project. One role that permits inspecting image information is [[OpenShift_Security_Concepts#.2Fcluster-reader|/cluster-reader]]. On the other hand, a user that only has project-level privileges cannot inspect images. | |||
==Image Information== | |||
oc get image <''image-name''> | |||
oc get image/<''image-name''> | |||
oc get image sha256:41976593d219eb2008a533e7f6fbb17e1fc3391065e2d592cc0b05defe5d5562 | |||
Returns [[OpenShift Concepts#Image|image]] information. | |||
==Image Tagging== | |||
Tag an image from a project with a new tag in a different project (the service account of the process that does the tagging must have an "edit" role in the target project): | |||
oc tag <''source-project''>/<''image-name''>:latest <''target-project''>/<''different-image-name''>:<''version-tag''> | |||
More details: https://github.com/NovaOrdis/novaordis-session-servlet/blob/master/openshift/Jenkinsfile-Full.groovy | |||
=Image Stream Operations= | |||
==Get Image Streams Available to a Project== | |||
oc project <''project-name''> | |||
oc get imagestreams | |||
oc get is | |||
oc get is -n openshift | |||
==Get Information about an Image Stream== | |||
oc describe is jboss-eap64-openshift | |||
==Create an Image Stream== | |||
===Create an Individual Image Stream with import-image=== | |||
This command fetches the latest version of an image from a remote repository and updates the image stream tag if it does not match the previous value. It is idempotent, running the command multiple times will not create duplicate entries. | |||
The command can be used repeatedly to pull from the remote repository the latest images corresponding to this stream. | |||
Also see: {{Internal|OpenShift_DeploymentConfig_Definition#imagePullPolicy|Deployment Configuration imagePullPolicy}} | |||
When importing an image, only the image metadata is copied, not the image contents. | |||
If the image stream does not exist, a new image stream named "" is created if --confirm is provided. | |||
[[oc import-image]] <''imagestream-name''>[:''tag''] \ | |||
--from <''registry''/''image''> [--confirm] | |||
[[oc import-image]] local-redhat-openjdk-18/openjdk18-openshift \ | |||
--from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm | |||
===<span id='Create_an_Individual_Image_Stream_from_YAML.7CJSON'></span>Create an Individual Image Stream from YAML/JSON=== | |||
====Image Available in an OpenShift Registry==== | |||
Inspect the [[OpenShift_Concepts#Integrated_Registry_Console|integrated registry console]] for a suitable image and create a YAML file similar to the one specified below. | |||
The Docker image name is found under the "Pull repository" section and represents the <''repository-name''>[:''tag''] of the image. | |||
apiVersion: v1 | |||
kind: ImageStream | |||
metadata: | |||
name: my-own-eap7-is | |||
spec: | |||
tags: | |||
- name: latest | |||
from: | |||
kind: DockerImage | |||
name: registry.access.redhat.com/jboss-eap-7/eap70-openshift:latest | |||
then: | |||
[[oc create]] -f ./my-own-eap7-is.yaml | |||
====Image Available in an Docker Hub==== | |||
postgresql-95-debug.yaml: | |||
apiVersion: v1 | |||
kind: ImageStream | |||
metadata: | |||
name: postgresql-95-debug | |||
spec: | |||
tags: | |||
- name: "1" | |||
from: | |||
kind: DockerImage | |||
name: ovidiufeodorov/postgresql-95-debug:1 | |||
ovidiufeodorov/postgresql-95-debug:1 will be resolved to [[Docker Concepts#Docker_Hub|Docker Hub]] automatically. | |||
then: | |||
oc create -f ./postgresql-95-debug.yaml | |||
===Import Image Streams in Bulk=== | |||
The following procedure will create a set of image streams in the "openshift" project. An example of image stream definition file is available at https://raw.githubusercontent.com/jboss-openshift/application-templates/master/jboss-image-streams.json. A version is also available here: [[OpenShift JBoss ImageStream Definition Example]]. | |||
oc login -u system:admin | oc login -u system:admin | ||
oc create -f ./jboss-image-streams.json -n openshift | oc create -f ./jboss-image-streams.json -n openshift | ||
The output is similar to: | |||
imagestream "jboss-webserver31-tomcat7-openshift" created | |||
imagestream "jboss-webserver31-tomcat8-openshift" created | |||
imagestream "jboss-eap71-openshift" created | |||
imagestream "jboss-decisionserver64-openshift" created | |||
imagestream "jboss-processserver64-openshift" created | |||
imagestream "jboss-datagrid71-openshift" created | |||
imagestream "jboss-datagrid65-client-openshift" created | |||
imagestream "jboss-datagrid71-client-openshift" created | |||
imagestream "jboss-datavirt63-driver-openshift" created | |||
imagestream "jboss-amq-63" created | |||
imagestream "redhat-sso71-openshift" created | |||
Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat7-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat8-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-eap64-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-eap70-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-decisionserver62-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-decisionserver63-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-processserver63-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-datagrid65-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-datavirt63-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "jboss-amq-62" already exists | |||
Error from server (AlreadyExists): imagestreams "redhat-sso70-openshift" already exists | |||
Error from server (AlreadyExists): imagestreams "redhat-openjdk18-openshift" already exists |
Latest revision as of 23:25, 25 January 2018
Internal
Overview
Image Operations
List Images available to the Cluster
oc get images
The command lists all images averrable in the cluster. The images are not project-scoped, but cluster-scoped, so any user from any project that has sufficient cluster-level privileges can get information about any image available to any project. One role that permits inspecting image information is /cluster-reader. On the other hand, a user that only has project-level privileges cannot inspect images.
Image Information
oc get image <image-name>
oc get image/<image-name>
oc get image sha256:41976593d219eb2008a533e7f6fbb17e1fc3391065e2d592cc0b05defe5d5562
Returns image information.
Image Tagging
Tag an image from a project with a new tag in a different project (the service account of the process that does the tagging must have an "edit" role in the target project):
oc tag <source-project>/<image-name>:latest <target-project>/<different-image-name>:<version-tag>
More details: https://github.com/NovaOrdis/novaordis-session-servlet/blob/master/openshift/Jenkinsfile-Full.groovy
Image Stream Operations
Get Image Streams Available to a Project
oc project <project-name>
oc get imagestreams oc get is oc get is -n openshift
Get Information about an Image Stream
oc describe is jboss-eap64-openshift
Create an Image Stream
Create an Individual Image Stream with import-image
This command fetches the latest version of an image from a remote repository and updates the image stream tag if it does not match the previous value. It is idempotent, running the command multiple times will not create duplicate entries.
The command can be used repeatedly to pull from the remote repository the latest images corresponding to this stream.
Also see:
When importing an image, only the image metadata is copied, not the image contents.
If the image stream does not exist, a new image stream named "" is created if --confirm is provided.
oc import-image <imagestream-name>[:tag] \ --from <registry/image> [--confirm]
oc import-image local-redhat-openjdk-18/openjdk18-openshift \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm
Create an Individual Image Stream from YAML/JSON
Image Available in an OpenShift Registry
Inspect the integrated registry console for a suitable image and create a YAML file similar to the one specified below.
The Docker image name is found under the "Pull repository" section and represents the <repository-name>[:tag] of the image.
apiVersion: v1 kind: ImageStream metadata: name: my-own-eap7-is spec: tags: - name: latest from: kind: DockerImage name: registry.access.redhat.com/jboss-eap-7/eap70-openshift:latest
then:
oc create -f ./my-own-eap7-is.yaml
Image Available in an Docker Hub
postgresql-95-debug.yaml:
apiVersion: v1 kind: ImageStream metadata: name: postgresql-95-debug spec: tags: - name: "1" from: kind: DockerImage name: ovidiufeodorov/postgresql-95-debug:1
ovidiufeodorov/postgresql-95-debug:1 will be resolved to Docker Hub automatically.
then:
oc create -f ./postgresql-95-debug.yaml
Import Image Streams in Bulk
The following procedure will create a set of image streams in the "openshift" project. An example of image stream definition file is available at https://raw.githubusercontent.com/jboss-openshift/application-templates/master/jboss-image-streams.json. A version is also available here: OpenShift JBoss ImageStream Definition Example.
oc login -u system:admin oc create -f ./jboss-image-streams.json -n openshift
The output is similar to:
imagestream "jboss-webserver31-tomcat7-openshift" created imagestream "jboss-webserver31-tomcat8-openshift" created imagestream "jboss-eap71-openshift" created imagestream "jboss-decisionserver64-openshift" created imagestream "jboss-processserver64-openshift" created imagestream "jboss-datagrid71-openshift" created imagestream "jboss-datagrid65-client-openshift" created imagestream "jboss-datagrid71-client-openshift" created imagestream "jboss-datavirt63-driver-openshift" created imagestream "jboss-amq-63" created imagestream "redhat-sso71-openshift" created Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat7-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-webserver30-tomcat8-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-eap64-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-eap70-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-decisionserver62-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-decisionserver63-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-processserver63-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-datagrid65-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-datavirt63-openshift" already exists Error from server (AlreadyExists): imagestreams "jboss-amq-62" already exists Error from server (AlreadyExists): imagestreams "redhat-sso70-openshift" already exists Error from server (AlreadyExists): imagestreams "redhat-openjdk18-openshift" already exists