![dependabot[bot]](/assets/img/avatar_default.png)
Bumps [github.com/Microsoft/hcsshim](https://github.com/Microsoft/hcsshim) from 0.9.9 to 0.11.1. - [Release notes](https://github.com/Microsoft/hcsshim/releases) - [Commits](https://github.com/Microsoft/hcsshim/compare/v0.9.9...v0.11.1) --- updated-dependencies: - dependency-name: github.com/Microsoft/hcsshim dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
103 lines
5.4 KiB
Markdown
103 lines
5.4 KiB
Markdown
# hcsshim
|
|
|
|
[](https://github.com/microsoft/hcsshim/actions?query=branch%3Amaster)
|
|
|
|
This package contains the Golang interface for using the Windows [Host Compute Service](https://techcommunity.microsoft.com/t5/containers/introducing-the-host-compute-service-hcs/ba-p/382332) (HCS) to launch and manage [Windows Containers](https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/). It also contains other helpers and functions for managing Windows Containers such as the Golang interface for the Host Network Service (HNS), as well as code for the [guest agent](./internal/guest/README.md) (commonly referred to as the GCS or Guest Compute Service in the codebase) used to support running Linux Hyper-V containers.
|
|
|
|
It is primarily used in the [Moby](https://github.com/moby/moby) and [Containerd](https://github.com/containerd/containerd) projects, but it can be freely used by other projects as well.
|
|
|
|
## Building
|
|
|
|
While this repository can be used as a library of sorts to call the HCS apis, there are a couple binaries built out of the repository as well. The main ones being the Linux guest agent, and an implementation of the [runtime v2 containerd shim api](https://github.com/containerd/containerd/blob/master/runtime/v2/README.md).
|
|
### Linux Hyper-V Container Guest Agent
|
|
|
|
To build the Linux guest agent itself all that's needed is to set your GOOS to "Linux" and build out of ./cmd/gcs.
|
|
```powershell
|
|
C:\> $env:GOOS="linux"
|
|
C:\> go build .\cmd\gcs\
|
|
```
|
|
|
|
or on a Linux machine
|
|
```sh
|
|
> go build ./cmd/gcs
|
|
```
|
|
|
|
If you want it to be packaged inside of a rootfs to boot with alongside all of the other tools then you'll need to provide a rootfs that it can be packaged inside of. An easy way is to export the rootfs of a container.
|
|
|
|
```sh
|
|
docker pull busybox
|
|
docker run --name base_image_container busybox
|
|
docker export base_image_container | gzip > base.tar.gz
|
|
BASE=./base.tar.gz
|
|
make all
|
|
```
|
|
|
|
If the build is successful, in the `./out` folder you should see:
|
|
```sh
|
|
> ls ./out/
|
|
delta.tar.gz initrd.img rootfs.tar.gz
|
|
```
|
|
|
|
### Containerd Shim
|
|
For info on the Runtime V2 API: https://github.com/containerd/containerd/blob/master/runtime/v2/README.md.
|
|
|
|
Contrary to the typical Linux architecture of shim -> runc, the runhcs shim is used both to launch and manage the lifetime of containers.
|
|
|
|
```powershell
|
|
C:\> $env:GOOS="windows"
|
|
C:\> go build .\cmd\containerd-shim-runhcs-v1
|
|
```
|
|
|
|
Then place the binary in the same directory that Containerd is located at in your environment. A default Containerd configuration file can be generated by running:
|
|
```powershell
|
|
.\containerd.exe config default | Out-File "C:\Program Files\containerd\config.toml" -Encoding ascii
|
|
```
|
|
|
|
This config file will already have the shim set as the default runtime for cri interactions.
|
|
|
|
To trial using the shim out with ctr.exe:
|
|
```powershell
|
|
C:\> ctr.exe run --runtime io.containerd.runhcs.v1 --rm mcr.microsoft.com/windows/nanoserver:2004 windows-test cmd /c "echo Hello World!"
|
|
```
|
|
|
|
## Contributing
|
|
|
|
This project welcomes contributions and suggestions. Most contributions require you to agree to a
|
|
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
|
|
the rights to use your contribution. For details, visit https://cla.microsoft.com.
|
|
|
|
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
|
|
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
|
|
provided by the bot. You will only need to do this once across all repos using our CLA.
|
|
|
|
We also require that contributors [sign their commits](https://git-scm.com/docs/git-commit) using `git commit -s` or `git commit --signoff` to
|
|
certify they either authored the work themselves or otherwise have permission to use it in this project. Please see https://developercertificate.org/ for
|
|
more info, as well as to make sure that you can attest to the rules listed. Our CI uses the [DCO Github app](https://github.com/apps/dco) to ensure
|
|
that all commits in a given PR are signed-off.
|
|
|
|
## Code of Conduct
|
|
|
|
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
|
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
|
|
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
|
|
|
|
## Dependencies
|
|
|
|
This project requires Golang 1.17 or newer to build.
|
|
|
|
For system requirements to run this project, see the Microsoft docs on [Windows Container requirements](https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/system-requirements).
|
|
|
|
## Reporting Security Issues
|
|
|
|
Security issues and bugs should be reported privately, via email, to the Microsoft Security
|
|
Response Center (MSRC) at [secure@microsoft.com](mailto:secure@microsoft.com). You should
|
|
receive a response within 24 hours. If for some reason you do not, please follow up via
|
|
email to ensure we received your original message. Further information, including the
|
|
[MSRC PGP](https://technet.microsoft.com/en-us/security/dn606155) key, can be found in
|
|
the [Security TechCenter](https://technet.microsoft.com/en-us/security/default).
|
|
|
|
For additional details, see [Report a Computer Security Vulnerability](https://technet.microsoft.com/en-us/security/ff852094.aspx) on Technet
|
|
|
|
---------------
|
|
Copyright (c) 2018 Microsoft Corp. All rights reserved.
|