1CONTAINERS-TRANSPORTS(5)(Containers) Page CONTAINERS-TRANSPORTS(5)(Containers)
2
3
4
5Valentin Rothberg April 2019
6
8 containers-transports - description of supported transports for copying
9 and storing container images
10
11
13 Tools which use the containers/image library, including skopeo(1),
14 buildah(1), podman(1), all share a common syntax for referring to con‐
15 tainer images in various locations. The general form of the syntax is
16 transport:details, where details are dependent on the specified trans‐
17 port, which are documented below.
18
19
20 containers-storage: [storage-specifier]{image-id|docker-refer‐
21 ence[@image-id]}
22 An image located in a local containers storage. The format of
23 docker-reference is described in detail in the docker transport.
24
25
26 The storage-specifier allows for referencing storage locations on the
27 file system and has the format [[driver@]root[+run-root][:options]]
28 where the optional driver refers to the storage driver (e.g., overlay
29 or btrfs) and where root is an absolute path to the storage's root
30 directory. The optional run-root can be used to specify the run direc‐
31 tory of the storage where all temporary writable content is stored.
32 The optional options are a comma-separated list of driver-specific
33 options. Please refer to containers-storage.conf(5) for further infor‐
34 mation on the drivers and supported options.
35
36
37 dir:path
38 An existing local directory path storing the manifest, layer tarballs
39 and signatures as individual files. This is a non-standardized format,
40 primarily useful for debugging or noninvasive container inspection.
41
42
43 docker://docker-reference
44 An image in a registry implementing the "Docker Registry HTTP API V2".
45 By default, uses the authorization state in $XDG_RUNTIME_DIR/contain‐
46 ers/auth.json, which is set using podman-login(1). If the authoriza‐
47 tion state is not found there, $HOME/.docker/config.json is checked,
48 which is set using docker-login(1). The containers-registries.conf(5)
49 further allows for configuring various settings of a registry.
50
51
52 Note that a docker-reference has the following format:
53 name[:tag|@digest]. While the docker transport does not support both a
54 tag and a digest at the same time some formats like containers-storage
55 do. Digests can also be used in an image destination as long as the
56 manifest matches the provided digest. The digest of images can be
57 explored with skopeo-inspect(1). If name does not contain a slash, it
58 is treated as docker.io/library/name. Otherwise, the component before
59 the first slash is checked if it is recognized as a hostname[:port]
60 (i.e., it contains either a . or a :, or the component is exactly
61 localhost). If the first component of name is not recognized as a
62 hostname[:port], name is treated as docker.io/name.
63
64
65 docker-archive:path[:docker-reference]
66 An image is stored in the docker-save(1) formatted file. docker-refer‐
67 ence is only used when creating such a file, and it must not contain a
68 digest. It is further possible to copy data to stdin by specifying
69 docker-archive:/dev/stdin but note that the used file must be seekable.
70
71
72 docker-daemon:docker-reference|algo:digest
73 An image stored in the docker daemon's internal storage. The image
74 must be specified as a docker-reference or in an alternative
75 algo:digest format when being used as an image source. The algo:digest
76 refers to the image ID reported by docker-inspect(1).
77
78
79 oci:path[:tag]
80 An image compliant with the "Open Container Image Layout Specification"
81 at path. Using a tag is optional and allows for storing multiple
82 images at the same path.
83
84
85 oci-archive:path[:tag]
86 An image compliant with the "Open Container Image Layout Specification"
87 stored as a tar(1) archive at path.
88
89
90 ostree:docker-reference[@/absolute/repo/path]
91 An image in the local ostree(1) repository. /absolute/repo/path
92 defaults to /ostree/repo.
93
94
96 The following examples demonstrate how some of the containers trans‐
97 ports can be used. The examples use skopeo-copy(1) for copying con‐
98 tainer images.
99
100
101 Copying an image from one registry to another:
102
103
104 $ skopeo copy docker://docker.io/library/alpine:latest docker://localhost:5000/alpine:latest
105
106
107
108 Copying an image from a running Docker daemon to a directory in the OCI
109 layout:
110
111
112 $ mkdir alpine-oci
113 $ skopeo copy docker-daemon:alpine:latest oci:alpine-oci
114 $ tree alpine-oci
115 test-oci/
116 ├── blobs
117 │ └── sha256
118 │ ├── 83ef92b73cf4595aa7fe214ec6747228283d585f373d8f6bc08d66bebab531b7
119 │ ├── 9a6259e911dcd0a53535a25a9760ad8f2eded3528e0ad5604c4488624795cecc
120 │ └── ff8df268d29ccbe81cdf0a173076dcfbbea4bb2b6df1dd26766a73cb7b4ae6f7
121 ├── index.json
122 └── oci-layout
123
124 2 directories, 5 files
125
126
127
128 Copying an image from a registry to the local storage:
129
130
131 $ skopeo copy docker://docker.io/library/alpine:latest containers-storage:alpine:latest
132
133
134
136 docker-login(1), docker-save(1), ostree(1), podman-login(1),
137 skopeo-copy(1), skopeo-inspect(1), tar(1), container-reg‐
138 istries.conf(5), containers-storage.conf(5)
139
140
142 Miloslav Trmač mitr@redhat.com ⟨mailto:mitr@redhat.com⟩ Valentin Roth‐
143 berg rothberg@redhat.com ⟨mailto:rothberg@redhat.com⟩
144
145
146
147Man TransportCsONTAINERS-TRANSPORTS(5)(Containers)