On a fresh CentOS 7.4, as root:
yum install -y golang git wget
export GOPATH=~/go
export PATH=$PATH:/usr/local/bin/
go get github.com/kubernetes-incubator/cri-tools/cmd/crictl
cp $GOPATH/bin/crictl /usr/local/bin/
go get -d github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build.sh
mkdir -p /opt/cni/bin
cp bin/* /opt/cni/bin/
mkdir -p /etc/cni/net.d
sh -c 'cat >/etc/cni/net.d/10-mynet.conf <<-EOF
{
"cniVersion": "0.2.0",
"name": "mynet",
"type": "bridge",
"bridge": "cni0",
"isGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local",
"subnet": "10.88.0.0/16",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
}
EOF'
sh -c 'cat >/etc/cni/net.d/99-loopback.conf <<-EOF
{
"cniVersion": "0.2.0",
"type": "loopback"
}
EOF'
yum install -y btrfs-progs-devel device-mapper-devel git glib2-devel glibc-devel glibc-static go golang-github-cpuguy83-go-md2man gpgme-devel libassuan-devel libgpg-error-devel libseccomp-devel libselinux-devel ostree-devel pkgconfig runc skopeo-containers
go get -d github.com/kubernetes-incubator/cri-o
cd $GOPATH/src/github.com/kubernetes-incubator/cri-o
make install.tools
make
make install
make install.config
sed -i 's/registries = \[/registries = \["docker.io"/g' /etc/crio/crio.conf
cd /tmp
wget https://github.com/containerd/containerd/releases/download/v1.0.0-rc.0/containerd-1.0.0-rc.0.linux-amd64.tar.gz
tar xvzf containerd-1.0.0-rc.0.linux-amd64.tar.gz
cp bin/* /usr/local/bin/
go get -d github.com/kubernetes-incubator/cri-containerd
cd $GOPATH/src/github.com/kubernetes-incubator/cri-containerd
make install.deps
make BUILD_TAGS='seccomp selinux'
make install
echo "runtime-endpoint: /var/run/crio/crio.sock" > /etc/crictl.yaml
crio &
WARN[2017-12-04 23:21:31.938501250Z] devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev`.
WARN[2017-12-04 23:21:31.955877965Z] devmapper: Base device already exists and has filesystem xfs on it. User specified filesystem will be ignored.
INFO[2017-12-04 23:21:31.970102575Z] [graphdriver] using prior storage driver: devicemapper
WARN[2017-12-04 23:21:31.970312653Z] hooks path: "/usr/share/containers/oci/hooks.d" does not exist
WARN[2017-12-04 23:21:31.970327775Z] hooks path: "/etc/containers/oci/hooks.d" does not exist
INFO[2017-12-04 23:21:31.970533006Z] CNI network mynet (type=bridge) is used from /etc/cni/net.d/10-mynet.conf
INFO[2017-12-04 23:21:31.970701986Z] CNI network mynet (type=bridge) is used from /etc/cni/net.d/10-mynet.conf
crictl pull redis:alpine
Image is update to date for docker.io/library/redis:alpine
crictl images
IMAGE TAG IMAGE ID SIZE
docker.io/library/redis alpine 3c04ff817393e 26.9MB
cd $GOPATH/src/github.com/kubernetes-incubator/cri-o
POD_ID=$(crictl runs test/testdata/sandbox_config.json)
CONTAINER_ID=$(crictl create $POD_ID test/testdata/container_redis.json test/testdata/sandbox_config.json)
crictl start $CONTAINER_ID
fb82734f8eb6bd6ef3a2ac56deb076160db2be122e9aaaa94b1e1f20b764a1e9
crictl ps $CONTAINER_ID
CONTAINER ID IMAGE CREATED STATE NAME ATTEMPT
fb82734f8eb6b docker.io/library/redis:alpine 11 seconds ago CONTAINER_RUNNING podsandbox1-redis 0
containerd &
echo "runtime-endpoint: /var/run/cri-containerd.sock" > /etc/crictl.yaml
cri-containerd &
crictl pull redis:alpine
Image is update to date for sha256:ba3df185d5ea4cae3b5da690301605ac96199732bab4edf46f7bafec43dbcb1f
crictl images
IMAGE TAG IMAGE ID SIZE
docker.io/library/redis alpine ba3df185d5ea4 10.1MB
cd $GOPATH/src/github.com/kubernetes-incubator/cri-o
POD_ID=$(crictl runs test/testdata/sandbox_config.json)
CONTAINER_ID=$(crictl create $POD_ID test/testdata/container_redis.json test/testdata/sandbox_config.json)
crictl start $CONTAINER_ID
d94bf519cf7ffcacf6c689250592d0718b98d7a030d73329349d29dc560e4998
crictl ps $CONTAINER_ID
CONTAINER ID IMAGE CREATED STATE NAME ATTEMPT
d94bf519cf7ff redis:alpine 5 seconds ago CONTAINER_RUNNING podsandbox1-redis 0