aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cirrus.yml3
-rw-r--r--.copr/Makefile2
-rw-r--r--.copr/prepare.sh4
-rw-r--r--Dockerfile8
-rw-r--r--Dockerfile.centos9
-rw-r--r--Dockerfile.fedora9
-rw-r--r--OWNERS2
-rw-r--r--README.md4
-rw-r--r--cmd/podman/info.go10
-rw-r--r--cmd/podman/runlabel.go2
-rw-r--r--contrib/cirrus/lib.sh12
-rw-r--r--contrib/cirrus/required_host_ports.txt4
-rw-r--r--contrib/spec/podman.spec.in16
-rw-r--r--docs/libpod.conf.5.md2
-rw-r--r--install.md9
-rw-r--r--libpod/container_commit.go2
-rw-r--r--pkg/adapter/client.go50
-rw-r--r--pkg/adapter/client_config.go32
-rw-r--r--pkg/adapter/runtime.go5
-rw-r--r--pkg/hooks/0.1.0/hook.go2
-rw-r--r--pkg/spec/spec.go4
-rw-r--r--test/e2e/commit_test.go20
-rw-r--r--transfer.md2
23 files changed, 149 insertions, 64 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index d26c1ec11..fe09ea988 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -123,6 +123,9 @@ gating_task:
timeout_in: 20m
+ networking_script: # Don't bother going further if something is down
+ - 'while read host port; do nc -zv -w 13 $host $port || exit 1; done < ${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/required_host_ports.txt'
+
gate_script:
# N/B: entrypoint.sh resets $GOSRC (same as make clean)
- '/usr/local/bin/entrypoint.sh install.tools |& ${TIMESTAMP}'
diff --git a/.copr/Makefile b/.copr/Makefile
index 05d9eb592..71142920b 100644
--- a/.copr/Makefile
+++ b/.copr/Makefile
@@ -16,4 +16,4 @@ build_binary:
clean:
rm -fr rpms
- rm -fr cri-o
+ rm -fr conmon
diff --git a/.copr/prepare.sh b/.copr/prepare.sh
index 1ad29da36..a40e2aadb 100644
--- a/.copr/prepare.sh
+++ b/.copr/prepare.sh
@@ -28,5 +28,5 @@ fi
mkdir build/
git archive --prefix "libpod-${COMMIT_SHORT}/" --format "tar.gz" HEAD -o "build/libpod-${COMMIT_SHORT}.tar.gz"
-git clone https://github.com/kubernetes-incubator/cri-o
-cd cri-o && git checkout 4cd5a7c60349be0678d9f1b0657683324c1a2726 && git archive --prefix "crio/" --format "tar.gz" HEAD -o "../build/crio.tar.gz"
+git clone https://github.com/containers/conmon
+cd conmon && git checkout f02c053eb37010fc76d1e2966de7f2cb9f969ef2 && git archive --prefix "conmon/" --format "tar.gz" HEAD -o "../build/conmon.tar.gz"
diff --git a/Dockerfile b/Dockerfile
index 767e64570..f3afd5e25 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -56,13 +56,13 @@ RUN set -x \
&& rm -rf "$GOPATH"
# Install conmon
-ENV CRIO_COMMIT 7a283c391abb7bd25086a8ff91dbb36ebdd24466
+ENV CONMON_COMMIT f02c053eb37010fc76d1e2966de7f2cb9f969ef2
RUN set -x \
&& export GOPATH="$(mktemp -d)" \
- && git clone https://github.com/kubernetes-sigs/cri-o.git "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \
- && cd "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \
+ && git clone https://github.com/containers/conmon.git "$GOPATH/src/github.com/containers/conmon.git" \
+ && cd "$GOPATH/src/github.com/containers/conmon.git" \
&& git fetch origin --tags \
- && git checkout -q "$CRIO_COMMIT" \
+ && git checkout -q "$CONMON_COMMIT" \
&& make \
&& install -D -m 755 bin/conmon /usr/libexec/podman/conmon \
&& rm -rf "$GOPATH"
diff --git a/Dockerfile.centos b/Dockerfile.centos
index 605dc9df4..47f7182b6 100644
--- a/Dockerfile.centos
+++ b/Dockerfile.centos
@@ -64,15 +64,14 @@ RUN set -x \
&& install -D -m 755 "$GOPATH"/bin/easyjson /usr/bin/
# Install conmon
-ENV CRIO_COMMIT 7a283c391abb7bd25086a8ff91dbb36ebdd24466
+ENV CONMON_COMMIT f02c053eb37010fc76d1e2966de7f2cb9f969ef2
RUN set -x \
&& export GOPATH="$(mktemp -d)" \
- && git clone https://github.com/kubernetes-sigs/cri-o.git "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \
- && cd "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \
+ && git clone https://github.com/containers/conmon.git "$GOPATH/src/github.com/containers/conmon.git" \
+ && cd "$GOPATH/src/github.com/containers/conmon.git" \
&& git fetch origin --tags \
- && git checkout -q "$CRIO_COMMIT" \
+ && git checkout -q "$CONMON_COMMIT" \
&& make \
- && make bin/conmon \
&& install -D -m 755 bin/conmon /usr/libexec/podman/conmon \
&& rm -rf "$GOPATH"
diff --git a/Dockerfile.fedora b/Dockerfile.fedora
index d4bcc11ea..290fe3f82 100644
--- a/Dockerfile.fedora
+++ b/Dockerfile.fedora
@@ -68,15 +68,14 @@ RUN set -x \
&& install -D -m 755 "$GOPATH"/bin/easyjson /usr/bin/
# Install conmon
-ENV CRIO_COMMIT 7a283c391abb7bd25086a8ff91dbb36ebdd24466
+ENV CONMON_COMMIT f02c053eb37010fc76d1e2966de7f2cb9f969ef2
RUN set -x \
&& export GOPATH="$(mktemp -d)" \
- && git clone https://github.com/kubernetes-sigs/cri-o.git "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \
- && cd "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \
+ && git clone https://github.com/containers/conmon.git "$GOPATH/src/github.com/containers/conmon.git" \
+ && cd "$GOPATH/src/github.com/containers/conmon.git" \
&& git fetch origin --tags \
- && git checkout -q "$CRIO_COMMIT" \
+ && git checkout -q "$CONMON_COMMIT" \
&& make \
- && make bin/conmon \
&& install -D -m 755 bin/conmon /usr/libexec/podman/conmon \
&& rm -rf "$GOPATH"
diff --git a/OWNERS b/OWNERS
index a03622b2e..227c97d6a 100644
--- a/OWNERS
+++ b/OWNERS
@@ -7,6 +7,7 @@ approvers:
- umohnani8
- giuseppe
- vrothberg
+ - jwhonce
reviewers:
- mheon
- baude
@@ -16,3 +17,4 @@ reviewers:
- umohnani8
- giuseppe
- vrothberg
+ - jwhonce
diff --git a/README.md b/README.md
index aba6f355d..820ce7dc8 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@ Any recent Podman release should be able to run rootless without any additional
* Specializing in signing and pushing images to various storage backends.
See [Skopeo](https://github.com/containers/skopeo/) for those tasks.
* Container runtimes daemons for working with the Kubernetes CRI interface.
- [CRI-O](https://github.com/kubernetes-sigs/cri-o) specializes in that.
+ [CRI-O](https://github.com/cri-o/cri-o) specializes in that.
* Supporting `docker-compose`. We believe that Kubernetes is the defacto
standard for composing Pods and for orchestrating containers, making
Kubernetes YAML a defacto standard file format. Hence, Podman allows the
@@ -67,7 +67,7 @@ The plan is to use OCI projects and best of breed libraries for different aspect
- Storage: Container and image storage is managed by [containers/storage](https://github.com/containers/storage)
- Networking: Networking support through use of [CNI](https://github.com/containernetworking/cni)
- Builds: Builds are supported via [Buildah](https://github.com/containers/buildah).
-- Conmon: [Conmon](https://github.com/kubernetes-sigs/cri-o) is a tool for monitoring OCI runtimes. It is part of the CRI-O package
+- Conmon: [Conmon](https://github.com/containers/conmon) is a tool for monitoring OCI runtimes.
## Podman Information for Developers
diff --git a/cmd/podman/info.go b/cmd/podman/info.go
index a6fce7fcb..823303354 100644
--- a/cmd/podman/info.go
+++ b/cmd/podman/info.go
@@ -10,6 +10,7 @@ import (
"github.com/containers/libpod/pkg/adapter"
"github.com/containers/libpod/version"
"github.com/pkg/errors"
+ "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
@@ -60,7 +61,16 @@ func infoCmd(c *cliconfig.InfoValues) error {
if err != nil {
return errors.Wrapf(err, "error getting info")
}
+
if runtime.Remote {
+ endpoint, err := runtime.RemoteEndpoint()
+ if err != nil {
+ logrus.Errorf("Failed to obtain server connection: %s", err.Error())
+ } else {
+ remoteClientInfo["Connection"] = endpoint.Connection
+ remoteClientInfo["Connection Type"] = endpoint.Type.String()
+ }
+
remoteClientInfo["RemoteAPI Version"] = version.RemoteAPIVersion
remoteClientInfo["Podman Version"] = version.Version
remoteClientInfo["OS Arch"] = fmt.Sprintf("%s/%s", rt.GOOS, rt.GOARCH)
diff --git a/cmd/podman/runlabel.go b/cmd/podman/runlabel.go
index c426817de..e87b88992 100644
--- a/cmd/podman/runlabel.go
+++ b/cmd/podman/runlabel.go
@@ -152,7 +152,7 @@ func runlabelCmd(c *cliconfig.RunlabelValues) error {
return err
}
if !c.Quiet {
- fmt.Printf("command: %s\n", strings.Join(cmd, " "))
+ fmt.Printf("command: %s\n", strings.Join(append([]string{os.Args[0]}, cmd[1:]...), " "))
if c.Display {
return nil
}
diff --git a/contrib/cirrus/lib.sh b/contrib/cirrus/lib.sh
index f422fe935..a285b133b 100644
--- a/contrib/cirrus/lib.sh
+++ b/contrib/cirrus/lib.sh
@@ -283,16 +283,16 @@ install_buildah() {
ooe.sh sudo make install
}
-# Requires $GOPATH and $CRIO_COMMIT to be set
+# Requires $GOPATH and $CONMON_COMMIT to be set
install_conmon(){
- echo "Installing conmon from commit $CRIO_COMMIT"
- req_env_var GOPATH CRIO_COMMIT
- DEST="$GOPATH/src/github.com/kubernetes-sigs/cri-o.git"
+ echo "Installing conmon from commit $CONMON_COMMIT"
+ req_env_var GOPATH CONMON_COMMIT
+ DEST="$GOPATH/src/github.com/containers/conmon.git"
rm -rf "$DEST"
- ooe.sh git clone https://github.com/kubernetes-sigs/cri-o.git "$DEST"
+ ooe.sh git clone https://github.com/containers/conmon.git "$DEST"
cd "$DEST"
ooe.sh git fetch origin --tags
- ooe.sh git checkout -q "$CRIO_COMMIT"
+ ooe.sh git checkout -q "$CONMON_COMMIT"
ooe.sh make
sudo install -D -m 755 bin/conmon /usr/libexec/podman/conmon
}
diff --git a/contrib/cirrus/required_host_ports.txt b/contrib/cirrus/required_host_ports.txt
new file mode 100644
index 000000000..9248e497a
--- /dev/null
+++ b/contrib/cirrus/required_host_ports.txt
@@ -0,0 +1,4 @@
+github.com 22
+docker.io 443
+quay.io 443
+registry.fedoraproject.org 443
diff --git a/contrib/spec/podman.spec.in b/contrib/spec/podman.spec.in
index feca59e94..985dbbc74 100644
--- a/contrib/spec/podman.spec.in
+++ b/contrib/spec/podman.spec.in
@@ -33,9 +33,9 @@
%global shortcommit0 %(c=%{commit0}; echo ${c:0:8})
# People want conmon packaged with the copr rpm
-%global import_path_conmon github.com/kubernetes-sigs/cri-o
+%global import_path_conmon github.com/containers/conmon
%global git_conmon https://%{import_path_conmon}
-%global commit_conmon 4cd5a7c60349be0678d9f1b0657683324c1a2726
+%global commit_conmon f02c053eb37010fc76d1e2966de7f2cb9f969ef2
%global shortcommit_conmon %(c=%{commit_conmon}; echo ${c:0:7})
Name: podman
@@ -45,7 +45,7 @@ Summary: Manage Pods, Containers and Container Images
License: ASL 2.0
URL: %{git_podman}
Source0: %{git0}/archive/%{commit0}/%{repo}-%{shortcommit0}.tar.gz
-Source1: crio.tar.gz
+Source1: conmon.tar.gz
# e.g. el6 has ppc64 arch without gcc-go, so EA tag is required
#ExclusiveArch: %%{?go_arches:%%{go_arches}}%%{!?go_arches:%%{ix86} x86_64 aarch64 %%{arm}}
ExclusiveArch: aarch64 %{arm} ppc64le s390x x86_64
@@ -371,18 +371,16 @@ GOPATH=$GOPATH go generate ./cmd/podman/varlink/...
BUILDTAGS=$BUILDTAGS make binaries docs
# build conmon
-pushd crio
+pushd conmon
mkdir _output
pushd _output
-mkdir -p src/%{provider}.%{provider_tld}/{kubernetes-sigs,opencontainers}
+mkdir -p src/%{provider}.%{provider_tld}/{containers,opencontainers}
ln -s $(dirs +1 -l) src/%{import_path_conmon}
popd
-ln -s vendor src
-export GOPATH=$(pwd)/_output:$(pwd):%{gopath}
export BUILDTAGS="selinux seccomp $(hack/btrfs_installed_tag.sh) $(hack/btrfs_tag.sh) containers_image_ostree_stub"
-BUILDTAGS=$BUILDTAGS make -C conmon
+BUILDTAGS=$BUILDTAGS make
popd
%install
@@ -403,7 +401,7 @@ install -p -m 644 %{repo}.conf %{buildroot}%{_datadir}/containers
# install conmon
install -dp %{buildroot}%{_libexecdir}/%{name}
-install -p -m 755 crio/bin/conmon %{buildroot}%{_libexecdir}/%{name}
+install -p -m 755 conmon/bin/conmon %{buildroot}%{_libexecdir}/%{name}
# source codes for building projects
%if 0%{?with_devel}
diff --git a/docs/libpod.conf.5.md b/docs/libpod.conf.5.md
index 2f0b3f303..cb08f0eb0 100644
--- a/docs/libpod.conf.5.md
+++ b/docs/libpod.conf.5.md
@@ -34,7 +34,7 @@ libpod to manage containers.
Each `*.json` file in the path configures a hook for Podman containers. For more details on the syntax of the JSON files and the semantics of hook injection, see `oci-hooks(5)`. Podman and libpod currently support both the 1.0.0 and 0.1.0 hook schemas, although the 0.1.0 schema is deprecated.
- Paths listed later in the array higher precedence (`oci-hooks(5)` discusses directory precedence).
+ Paths listed later in the array have higher precedence (`oci-hooks(5)` discusses directory precedence).
For the annotation conditions, libpod uses any annotations set in the generated OCI configuration.
diff --git a/install.md b/install.md
index 82dd4c36a..a278cb4ba 100644
--- a/install.md
+++ b/install.md
@@ -188,13 +188,12 @@ export PATH=$GOPATH/bin:$PATH
#### conmon
The latest version of `conmon` is expected to be installed on the system. Conmon is used to monitor OCI Runtimes.
-To build from source, use the following (if not already executed above, run `export GOPATH=~/go && mkdir -p $GOPATH`):
+To build from source, use the following:
```bash
-git clone https://github.com/cri-o/cri-o $GOPATH/src/github.com/cri-o/cri-o
-cd $GOPATH/src/github.com/cri-o/cri-o
-mkdir bin
-make bin/conmon
+git clone https://github.com/containers/conmon
+cd conmon
+make
sudo install -D -m 755 bin/conmon /usr/libexec/podman/conmon
```
diff --git a/libpod/container_commit.go b/libpod/container_commit.go
index ae04f67bb..739fcd80e 100644
--- a/libpod/container_commit.go
+++ b/libpod/container_commit.go
@@ -99,7 +99,7 @@ func (c *Container) Commit(ctx context.Context, destImage string, options Contai
// Should we store the ENV we actually want in the spec separately?
if c.config.Spec.Process != nil {
for _, e := range c.config.Spec.Process.Env {
- splitEnv := strings.Split(e, "=")
+ splitEnv := strings.SplitN(e, "=", 2)
importBuilder.SetEnv(splitEnv[0], splitEnv[1])
}
}
diff --git a/pkg/adapter/client.go b/pkg/adapter/client.go
index f672a92a6..01914834f 100644
--- a/pkg/adapter/client.go
+++ b/pkg/adapter/client.go
@@ -10,44 +10,56 @@ import (
"github.com/varlink/go/varlink"
)
-type VarlinkConnectionInfo struct {
- RemoteUserName string
- RemoteHost string
- VarlinkAddress string
-}
-
-// Connect provides a varlink connection
-func (r RemoteRuntime) Connect() (*varlink.Connection, error) {
- var (
- err error
- connection *varlink.Connection
- )
+var remoteEndpoint *Endpoint
- logLevel := r.cmd.LogLevel
+func (r RemoteRuntime) RemoteEndpoint() (remoteEndpoint *Endpoint, err error) {
+ if remoteEndpoint == nil {
+ remoteEndpoint = &Endpoint{Unknown, ""}
+ } else {
+ return remoteEndpoint, nil
+ }
// I'm leaving this here for now as a document of the birdge format. It can be removed later once the bridge
// function is more flushed out.
- //bridge := `ssh -T root@192.168.122.1 "/usr/bin/varlink -A '/usr/bin/podman varlink \$VARLINK_ADDRESS' bridge"`
+ // bridge := `ssh -T root@192.168.122.1 "/usr/bin/varlink -A '/usr/bin/podman varlink \$VARLINK_ADDRESS' bridge"`
if len(r.cmd.RemoteHost) > 0 {
// The user has provided a remote host endpoint
if len(r.cmd.RemoteUserName) < 1 {
return nil, errors.New("you must provide a username when providing a remote host name")
}
- bridge := fmt.Sprintf(`ssh -T %s@%s /usr/bin/varlink -A \'/usr/bin/podman --log-level=%s varlink \\\$VARLINK_ADDRESS\' bridge`, r.cmd.RemoteUserName, r.cmd.RemoteHost, logLevel)
- connection, err = varlink.NewBridge(bridge)
+ remoteEndpoint.Type = BridgeConnection
+ remoteEndpoint.Connection = fmt.Sprintf(
+ `ssh -T %s@%s /usr/bin/varlink -A \'/usr/bin/podman --log-level=%s varlink \\\$VARLINK_ADDRESS\' bridge`,
+ r.cmd.RemoteUserName, r.cmd.RemoteHost, r.cmd.LogLevel)
+
} else if bridge := os.Getenv("PODMAN_VARLINK_BRIDGE"); bridge != "" {
- connection, err = varlink.NewBridge(bridge)
+ remoteEndpoint.Type = BridgeConnection
+ remoteEndpoint.Connection = bridge
} else {
address := os.Getenv("PODMAN_VARLINK_ADDRESS")
if address == "" {
address = DefaultAddress
}
- connection, err = varlink.NewConnection(address)
+ remoteEndpoint.Type = DirectConnection
+ remoteEndpoint.Connection = address
}
+ return
+}
+
+// Connect provides a varlink connection
+func (r RemoteRuntime) Connect() (*varlink.Connection, error) {
+ ep, err := r.RemoteEndpoint()
if err != nil {
return nil, err
}
- return connection, nil
+
+ switch ep.Type {
+ case DirectConnection:
+ return varlink.NewConnection(ep.Connection)
+ case BridgeConnection:
+ return varlink.NewBridge(ep.Connection)
+ }
+ return nil, errors.New(fmt.Sprintf("Unable to determine type of varlink connection: %s", ep.Connection))
}
// RefreshConnection is used to replace the current r.Conn after things like
diff --git a/pkg/adapter/client_config.go b/pkg/adapter/client_config.go
index d165ef1cc..3559b16e3 100644
--- a/pkg/adapter/client_config.go
+++ b/pkg/adapter/client_config.go
@@ -2,3 +2,35 @@ package adapter
// DefaultAddress is the default address of the varlink socket
const DefaultAddress = "unix:/run/podman/io.podman"
+
+// EndpointType declares the type of server connection
+type EndpointType int
+
+// Enum of connection types
+const (
+ Unknown = iota - 1 // Unknown connection type
+ BridgeConnection // BridgeConnection proxy connection via ssh
+ DirectConnection // DirectConnection socket connection to server
+)
+
+// String prints ASCII string for EndpointType
+func (e EndpointType) String() string {
+ // declare an array of strings
+ // ... operator counts how many
+ // items in the array (7)
+ names := [...]string{
+ "BridgeConnection",
+ "DirectConnection",
+ }
+
+ if e < BridgeConnection || e > DirectConnection {
+ return "Unknown"
+ }
+ return names[e]
+}
+
+// Endpoint type and connection string to use
+type Endpoint struct {
+ Type EndpointType
+ Connection string
+}
diff --git a/pkg/adapter/runtime.go b/pkg/adapter/runtime.go
index 21613c425..37ee1b737 100644
--- a/pkg/adapter/runtime.go
+++ b/pkg/adapter/runtime.go
@@ -398,3 +398,8 @@ func (r *LocalRuntime) GetPodsByStatus(statuses []string) ([]*libpod.Pod, error)
func (r *LocalRuntime) GetVersion() (libpod.Version, error) {
return libpod.GetVersion()
}
+
+// RemoteEndpoint resolve interface requirement
+func (r *LocalRuntime) RemoteEndpoint() (*Endpoint, error) {
+ return nil, errors.New("RemoteEndpoint() not implemented for local connection")
+}
diff --git a/pkg/hooks/0.1.0/hook.go b/pkg/hooks/0.1.0/hook.go
index 49d833aa8..ba68b0f10 100644
--- a/pkg/hooks/0.1.0/hook.go
+++ b/pkg/hooks/0.1.0/hook.go
@@ -19,7 +19,7 @@ type Hook struct {
Hook *string `json:"hook"`
Arguments []string `json:"arguments,omitempty"`
- // https://github.com/kubernetes-sigs/cri-o/pull/1235
+ // https://github.com/cri-o/cri-o/pull/1235
Stages []string `json:"stages"`
Stage []string `json:"stage"`
diff --git a/pkg/spec/spec.go b/pkg/spec/spec.go
index c2c5e0900..df303db6d 100644
--- a/pkg/spec/spec.go
+++ b/pkg/spec/spec.go
@@ -268,7 +268,9 @@ func (config *CreateConfig) createConfigToOCISpec(runtime *libpod.Runtime, userM
// SECURITY OPTS
g.SetProcessNoNewPrivileges(config.NoNewPrivs)
- g.SetProcessApparmorProfile(config.ApparmorProfile)
+ if !config.Privileged {
+ g.SetProcessApparmorProfile(config.ApparmorProfile)
+ }
blockAccessToKernelFilesystems(config, &g)
diff --git a/test/e2e/commit_test.go b/test/e2e/commit_test.go
index 3ece4887e..bf20ac999 100644
--- a/test/e2e/commit_test.go
+++ b/test/e2e/commit_test.go
@@ -194,4 +194,24 @@ var _ = Describe("Podman commit", func() {
Expect(r.ExitCode()).To(Equal(0))
})
+ It("podman commit container check env variables", func() {
+ s := podmanTest.Podman([]string{"run", "--name", "test1", "-e", "TEST=1=1-01=9.01", "-it", "alpine", "true"})
+ s.WaitWithDefaultTimeout()
+ Expect(s.ExitCode()).To(Equal(0))
+
+ c := podmanTest.Podman([]string{"commit", "test1", "newimage"})
+ c.WaitWithDefaultTimeout()
+ Expect(c.ExitCode()).To(Equal(0))
+
+ inspect := podmanTest.Podman([]string{"inspect", "newimage"})
+ inspect.WaitWithDefaultTimeout()
+ Expect(inspect.ExitCode()).To(Equal(0))
+ image := inspect.InspectImageJSON()
+
+ envMap := make(map[string]bool)
+ for _, v := range image[0].Config.Env {
+ envMap[v] = true
+ }
+ Expect(envMap["TEST=1=1-01=9.01"]).To(BeTrue())
+ })
})
diff --git a/transfer.md b/transfer.md
index df91cdf21..79b6d3461 100644
--- a/transfer.md
+++ b/transfer.md
@@ -98,7 +98,7 @@ Those Docker commands currently do not have equivalents in `podman`:
| `docker secret` ||
| `docker service` ||
| `docker stack` ||
-| `docker swarm` | podman does not support swarm. We support Kubernetes for orchestration using [CRI-O](https://github.com/kubernetes-sigs/cri-o).|
+| `docker swarm` | podman does not support swarm. We support Kubernetes for orchestration using [CRI-O](https://github.com/cri-o/cri-o).|
| `docker volume` | podman currently supports file volumes. Future enhancement planned to support Docker Volumes Plugins
## Missing commands in Docker