mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-20 17:49:10 +00:00
Merge pull request #2876 from rn/contrib
Re-arrange some files/directories
This commit is contained in:
commit
1afcd479d5
@ -1,49 +0,0 @@
|
|||||||
# Blueprints
|
|
||||||
|
|
||||||
This directory will contain the blueprints for base systems on the platforms that we support with LinuxKit.
|
|
||||||
|
|
||||||
These will be used for running tests, and for the low level parts of blueprints for higher level systems.
|
|
||||||
|
|
||||||
These include all the platforms that Docker has editions on, and all platforms that our community supports.
|
|
||||||
The detailed blueprints will be addded soon for at least the following platforms. There are WIP versions in
|
|
||||||
the [examples/](../examples/) directory.
|
|
||||||
|
|
||||||
- MacOS
|
|
||||||
- Windows Hyper-V
|
|
||||||
- VMWare
|
|
||||||
- KVM
|
|
||||||
- AWS
|
|
||||||
- Azure
|
|
||||||
- GCP
|
|
||||||
- BlueMix
|
|
||||||
- Packet.net
|
|
||||||
- ...
|
|
||||||
|
|
||||||
|
|
||||||
### Docker for Mac
|
|
||||||
|
|
||||||
An initial blueprint for the open source components of Docker for Mac is available in [docker-for-mac](docker-for-mac). The blueprint has support for controlling `dockerd` from the host via `vsudd` and port forwarding with VPNKit. It requires HyperKit, VPNKit and a Docker client on the host to run. The easiest way to install these at the moment is to install a recent version of Docker for Mac.
|
|
||||||
|
|
||||||
To build it with the latest Docker CE:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ linuxkit build -name docker-for-mac base.yml docker-ce.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
To run the VM with a 4G disk:
|
|
||||||
|
|
||||||
```
|
|
||||||
linuxkit run hyperkit -networking=vpnkit -vsock-ports=2376 -disk size=4096M -data-file ./metadata.json docker-for-mac
|
|
||||||
```
|
|
||||||
|
|
||||||
In another terminal you should now be able to access docker via the socket `guest.00000947` in the state directory (`docker-for-mac-state/` by default):
|
|
||||||
|
|
||||||
```
|
|
||||||
$ docker -H unix://docker-for-mac-state/guest.00000948 ps
|
|
||||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
|
||||||
```
|
|
||||||
|
|
||||||
### Linux Containers On Windows (LCOW)
|
|
||||||
|
|
||||||
The LCOW blueprint has moved to [its own
|
|
||||||
repository](https://github.com/linuxkit/lcow).
|
|
@ -1,31 +0,0 @@
|
|||||||
services:
|
|
||||||
# Run dockerd with the vpnkit userland proxy from the vpnkit-forwarder container.
|
|
||||||
# Bind mounts /var/run to allow vsudd to connect to docker.sock, /var/vpnkit
|
|
||||||
# for vpnkit coordination and /run/config/docker for the configuration file.
|
|
||||||
- name: docker-dfm
|
|
||||||
image: docker:17.07.0-ce-dind
|
|
||||||
capabilities:
|
|
||||||
- all
|
|
||||||
net: host
|
|
||||||
mounts:
|
|
||||||
- type: cgroup
|
|
||||||
options: ["rw","nosuid","noexec","nodev","relatime"]
|
|
||||||
binds:
|
|
||||||
- /etc/resolv.conf:/etc/resolv.conf
|
|
||||||
- /var/lib/docker:/var/lib/docker
|
|
||||||
- /lib/modules:/lib/modules
|
|
||||||
- /var/vpnkit:/port # vpnkit control 9p mount
|
|
||||||
- /var/run:/var/run
|
|
||||||
- /run/config/docker:/var/config/docker
|
|
||||||
- /usr/bin/vpnkit-expose-port:/usr/bin/vpnkit-expose-port # userland proxy
|
|
||||||
- /usr/bin/vpnkit-iptables-wrapper:/usr/bin/iptables # iptables wrapper
|
|
||||||
command: [ "/usr/local/bin/docker-init", "/usr/local/bin/dockerd", "--",
|
|
||||||
"--config-file", "/var/config/docker/daemon.json",
|
|
||||||
"--swarm-default-advertise-addr=eth0",
|
|
||||||
"--userland-proxy-path", "/usr/bin/vpnkit-expose-port",
|
|
||||||
"--storage-driver", "overlay2" ]
|
|
||||||
runtime:
|
|
||||||
mkdir: ["/var/lib/docker"]
|
|
||||||
trust:
|
|
||||||
org:
|
|
||||||
- library
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"docker": {
|
|
||||||
"entries": {
|
|
||||||
"daemon.json": {
|
|
||||||
"perm": "0644",
|
|
||||||
"content": "{ \"debug\": true }"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -23,8 +23,8 @@ The perf package is called `kernel-perf` and is tagged the same way as
|
|||||||
the kernel packages.
|
the kernel packages.
|
||||||
|
|
||||||
In addition to the official images, there are also some
|
In addition to the official images, there are also some
|
||||||
[scripts](../scripts/kernels) which repackage kernels packages from
|
[scripts](../contrib/foreign-kernels) which repackage kernels packages
|
||||||
some Linux distributions into LinuxKit kernel packages. These are
|
from some Linux distributions into LinuxKit kernel packages. These are
|
||||||
mostly provided for testing purposes.
|
mostly provided for testing purposes.
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ supported and the disks are in raw format.
|
|||||||
HyperKit sends an ACPI power event when it receives SIGTERM to allow the VM to
|
HyperKit sends an ACPI power event when it receives SIGTERM to allow the VM to
|
||||||
shut down properly. The VM has to be able to receive ACPI events to initiate the
|
shut down properly. The VM has to be able to receive ACPI events to initiate the
|
||||||
shutdown. This is provided by the [`acpid` package](../pkg/acpid). An example
|
shutdown. This is provided by the [`acpid` package](../pkg/acpid). An example
|
||||||
is available in the [Docker for Mac blueprint](../blueprints/docker-for-mac/base.yml).
|
is available in the [Docker for Mac example](../examples/docker-for-mac.yml).
|
||||||
|
|
||||||
## Networking
|
## Networking
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ domain socket inside the VM to the host via virtio or Hyper-V sockets.
|
|||||||
With HyperKit, the virtio sockets can be exposed as unix domain
|
With HyperKit, the virtio sockets can be exposed as unix domain
|
||||||
sockets on the host, enabling access to other daemons, like
|
sockets on the host, enabling access to other daemons, like
|
||||||
`containerd` and `dockerd`, from the host. An example configuration
|
`containerd` and `dockerd`, from the host. An example configuration
|
||||||
file is available in [examples/vsudd.yml](/examples/vsudd.yml).
|
file is available in [examples/vsudd-containerd.yml](/examples/vsudd-containerd.yml).
|
||||||
|
|
||||||
After building the example, run it with `linuxkit run hyperkit
|
After building the example, run it with `linuxkit run hyperkit
|
||||||
-vsock-ports 2374 vsudd`. This will create a unix domain socket in the state directory that maps to the `containerd` control socket. The socket is called `guest.00000946`.
|
-vsock-ports 2374 vsudd`. This will create a unix domain socket in the state directory that maps to the `containerd` control socket. The socket is called `guest.00000946`.
|
||||||
|
29
examples/docker-for-mac.md
Normal file
29
examples/docker-for-mac.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Docker for Mac
|
||||||
|
|
||||||
|
[`docker-for-mac.yml`](./docker-for-mac.yml) contains an example use
|
||||||
|
of the open source components of Docker for Mac. The example has
|
||||||
|
support for controlling `dockerd` from the host via `vsudd` and port
|
||||||
|
forwarding with VPNKit. It requires HyperKit, VPNKit and a Docker
|
||||||
|
client on the host to run. The easiest way to install these at the
|
||||||
|
moment is to install a recent version of Docker for Mac.
|
||||||
|
|
||||||
|
To build it with the latest Docker CE:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ linuxkit build docker-for-mac.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
To run the VM with a 4G disk:
|
||||||
|
|
||||||
|
```
|
||||||
|
linuxkit run hyperkit -networking=vpnkit -vsock-ports=2376 -disk size=4096M -data-file ./metadata.json docker-for-mac
|
||||||
|
```
|
||||||
|
|
||||||
|
In another terminal you should now be able to access docker via the
|
||||||
|
socket `guest.00000947` in the state directory
|
||||||
|
(`docker-for-mac-state/` by default):
|
||||||
|
|
||||||
|
```
|
||||||
|
$ docker -H unix://docker-for-mac-state/guest.00000948 ps
|
||||||
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||||
|
```
|
@ -1,4 +1,4 @@
|
|||||||
# This is a blueprint for building the open source components of Docker for Mac
|
# This is an example for building the open source components of Docker for Mac
|
||||||
kernel:
|
kernel:
|
||||||
image: linuxkit/kernel:4.9.77
|
image: linuxkit/kernel:4.9.77
|
||||||
cmdline: "console=ttyS0 page_poison=1"
|
cmdline: "console=ttyS0 page_poison=1"
|
||||||
@ -79,7 +79,35 @@ services:
|
|||||||
# When the host resumes from sleep, force a clock resync
|
# When the host resumes from sleep, force a clock resync
|
||||||
- name: host-timesync-daemon
|
- name: host-timesync-daemon
|
||||||
image: linuxkit/host-timesync-daemon:085e1910de6f311f96a823eaa10ffd6d92ec9679
|
image: linuxkit/host-timesync-daemon:085e1910de6f311f96a823eaa10ffd6d92ec9679
|
||||||
|
# Run dockerd with the vpnkit userland proxy from the vpnkit-forwarder container.
|
||||||
|
# Bind mounts /var/run to allow vsudd to connect to docker.sock, /var/vpnkit
|
||||||
|
# for vpnkit coordination and /run/config/docker for the configuration file.
|
||||||
|
- name: docker-dfm
|
||||||
|
image: docker:17.07.0-ce-dind
|
||||||
|
capabilities:
|
||||||
|
- all
|
||||||
|
net: host
|
||||||
|
mounts:
|
||||||
|
- type: cgroup
|
||||||
|
options: ["rw","nosuid","noexec","nodev","relatime"]
|
||||||
|
binds:
|
||||||
|
- /etc/resolv.conf:/etc/resolv.conf
|
||||||
|
- /var/lib/docker:/var/lib/docker
|
||||||
|
- /lib/modules:/lib/modules
|
||||||
|
- /var/vpnkit:/port # vpnkit control 9p mount
|
||||||
|
- /var/run:/var/run
|
||||||
|
- /run/config/docker:/var/config/docker
|
||||||
|
- /usr/bin/vpnkit-expose-port:/usr/bin/vpnkit-expose-port # userland proxy
|
||||||
|
- /usr/bin/vpnkit-iptables-wrapper:/usr/bin/iptables # iptables wrapper
|
||||||
|
command: [ "/usr/local/bin/docker-init", "/usr/local/bin/dockerd", "--",
|
||||||
|
"--config-file", "/var/config/docker/daemon.json",
|
||||||
|
"--swarm-default-advertise-addr=eth0",
|
||||||
|
"--userland-proxy-path", "/usr/bin/vpnkit-expose-port",
|
||||||
|
"--storage-driver", "overlay2" ]
|
||||||
|
runtime:
|
||||||
|
mkdir: ["/var/lib/docker"]
|
||||||
|
|
||||||
trust:
|
trust:
|
||||||
org:
|
org:
|
||||||
- linuxkit
|
- linuxkit
|
||||||
|
- library
|
@ -1,25 +0,0 @@
|
|||||||
# USAGE: ./init_signing.sh linuxkit/repo
|
|
||||||
|
|
||||||
if [[ -z $DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE ]]
|
|
||||||
then
|
|
||||||
echo "must set DOCKER_CONTENT_TRUST_ROOT_PASSPHRASE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z $DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE ]]
|
|
||||||
then
|
|
||||||
echo "must set DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
docker trust signer add justin $1 --key justin.crt
|
|
||||||
|
|
||||||
docker trust signer add rolf $1 --key rolf.crt
|
|
||||||
|
|
||||||
docker trust signer add ian $1 --key ian.crt --key ian_arm.crt
|
|
||||||
|
|
||||||
docker trust signer add avi $1 --key avi.crt --key avi_arm.crt
|
|
||||||
|
|
||||||
docker trust signer add riyaz $1 --key riyaz.crt
|
|
||||||
|
|
||||||
echo "Successfully set up signing for $1"
|
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# SUMMARY: Test the Docker for Mac blueprint
|
# SUMMARY: Test the Docker for Mac example
|
||||||
# LABELS: amd64
|
# LABELS: amd64
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
@ -17,7 +17,7 @@ clean_up() {
|
|||||||
trap clean_up EXIT
|
trap clean_up EXIT
|
||||||
|
|
||||||
# Test code goes here
|
# Test code goes here
|
||||||
linuxkit build -name "${NAME}" "${LINUXKIT_BLUEPRINTS_DIR}/${NAME}/base.yml" "${LINUXKIT_BLUEPRINTS_DIR}/${NAME}/docker-ce.yml"
|
linuxkit build "${LINUXKIT_EXAMPLES_DIR}/${NAME}.yml"
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# SUMMARY: Check that the blueprint YAML files work
|
|
||||||
# LABELS:
|
|
||||||
|
|
||||||
group_init() {
|
|
||||||
# Group initialisation code goes here
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
group_deinit() {
|
|
||||||
# Group de-initialisation code goes here
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
CMD=$1
|
|
||||||
case $CMD in
|
|
||||||
init)
|
|
||||||
group_init
|
|
||||||
res=$?
|
|
||||||
;;
|
|
||||||
deinit)
|
|
||||||
group_deinit
|
|
||||||
res=$?
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
res=1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit $res
|
|
||||||
|
|
@ -11,7 +11,6 @@ group_init() {
|
|||||||
[ -r "${LINUXKIT_TMPDIR}" ] && rm -rf "${LINUXKIT_TMPDIR}"
|
[ -r "${LINUXKIT_TMPDIR}" ] && rm -rf "${LINUXKIT_TMPDIR}"
|
||||||
mkdir "${LINUXKIT_TMPDIR}"
|
mkdir "${LINUXKIT_TMPDIR}"
|
||||||
echo "export LINUXKIT_EXAMPLES_DIR=${RT_PROJECT_ROOT}/../../examples" >> "${LINUXKIT_TMPDIR}/env.sh"
|
echo "export LINUXKIT_EXAMPLES_DIR=${RT_PROJECT_ROOT}/../../examples" >> "${LINUXKIT_TMPDIR}/env.sh"
|
||||||
echo "export LINUXKIT_BLUEPRINTS_DIR=${RT_PROJECT_ROOT}/../../blueprints" >> "${LINUXKIT_TMPDIR}/env.sh"
|
|
||||||
|
|
||||||
if rt_label_set "gcp"; then
|
if rt_label_set "gcp"; then
|
||||||
# If we run GCP tests, make sure it is configured
|
# If we run GCP tests, make sure it is configured
|
||||||
|
Loading…
Reference in New Issue
Block a user