Bump runc to 69663f0bd4b60df09991c08812a60108003fa
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
parent
a0b818e093
commit
f117459c35
@ -19,7 +19,7 @@ github.com/matttproud/golang_protobuf_extensions v1.0.0
|
|||||||
github.com/gogo/protobuf v0.5
|
github.com/gogo/protobuf v0.5
|
||||||
github.com/golang/protobuf 1643683e1b54a9e88ad26d98f81400c8c9d9f4f9
|
github.com/golang/protobuf 1643683e1b54a9e88ad26d98f81400c8c9d9f4f9
|
||||||
github.com/opencontainers/runtime-spec v1.0.1
|
github.com/opencontainers/runtime-spec v1.0.1
|
||||||
github.com/opencontainers/runc a618ab5a0186905949ee463dbb762c3d23e12a80
|
github.com/opencontainers/runc 69663f0bd4b60df09991c08812a60108003fa340
|
||||||
github.com/sirupsen/logrus v1.0.0
|
github.com/sirupsen/logrus v1.0.0
|
||||||
github.com/pmezard/go-difflib v1.0.0
|
github.com/pmezard/go-difflib v1.0.0
|
||||||
github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
|
github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
|
||||||
|
13
vendor/github.com/opencontainers/runc/README.md
generated
vendored
13
vendor/github.com/opencontainers/runc/README.md
generated
vendored
@ -41,8 +41,18 @@ make
|
|||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can also use `go get` to install to your `GOPATH`, assuming that you have a `github.com` parent folder already created under `src`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get github.com/opencontainers/runc
|
||||||
|
cd $GOPATH/src/github.com/opencontainers/runc
|
||||||
|
make
|
||||||
|
sudo make install
|
||||||
|
```
|
||||||
|
|
||||||
`runc` will be installed to `/usr/local/sbin/runc` on your system.
|
`runc` will be installed to `/usr/local/sbin/runc` on your system.
|
||||||
|
|
||||||
|
|
||||||
#### Build Tags
|
#### Build Tags
|
||||||
|
|
||||||
`runc` supports optional build tags for compiling support of various features.
|
`runc` supports optional build tags for compiling support of various features.
|
||||||
@ -204,8 +214,7 @@ runc list
|
|||||||
runc delete mycontainerid
|
runc delete mycontainerid
|
||||||
```
|
```
|
||||||
|
|
||||||
This adds more complexity but allows higher level systems to manage runc and provides points in the containers creation to setup various settings after the container has created and/or before it is deleted.
|
This allows higher level systems to augment the containers creation logic with setup of various settings after the container is created and/or before it is deleted. For example, the container's network stack is commonly set up after `create` but before `start`.
|
||||||
This is commonly used to setup the container's network stack after `create` but before `start` where the user's defined process will be running.
|
|
||||||
|
|
||||||
#### Rootless containers
|
#### Rootless containers
|
||||||
`runc` has the ability to run containers without root privileges. This is called `rootless`. You need to pass some parameters to `runc` in order to run rootless containers. See below and compare with the previous version. Run the following commands as an ordinary user:
|
`runc` has the ability to run containers without root privileges. This is called `rootless`. You need to pass some parameters to `runc` in order to run rootless containers. See below and compare with the previous version. Run the following commands as an ordinary user:
|
||||||
|
62
vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go
generated
vendored
62
vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go
generated
vendored
@ -12,84 +12,30 @@ var (
|
|||||||
ErrNoGroupEntries = errors.New("no matching entries in group file")
|
ErrNoGroupEntries = errors.New("no matching entries in group file")
|
||||||
)
|
)
|
||||||
|
|
||||||
func lookupUser(filter func(u User) bool) (User, error) {
|
|
||||||
// Get operating system-specific passwd reader-closer.
|
|
||||||
passwd, err := GetPasswd()
|
|
||||||
if err != nil {
|
|
||||||
return User{}, err
|
|
||||||
}
|
|
||||||
defer passwd.Close()
|
|
||||||
|
|
||||||
// Get the users.
|
|
||||||
users, err := ParsePasswdFilter(passwd, filter)
|
|
||||||
if err != nil {
|
|
||||||
return User{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// No user entries found.
|
|
||||||
if len(users) == 0 {
|
|
||||||
return User{}, ErrNoPasswdEntries
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assume the first entry is the "correct" one.
|
|
||||||
return users[0], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// LookupUser looks up a user by their username in /etc/passwd. If the user
|
// LookupUser looks up a user by their username in /etc/passwd. If the user
|
||||||
// cannot be found (or there is no /etc/passwd file on the filesystem), then
|
// cannot be found (or there is no /etc/passwd file on the filesystem), then
|
||||||
// LookupUser returns an error.
|
// LookupUser returns an error.
|
||||||
func LookupUser(username string) (User, error) {
|
func LookupUser(username string) (User, error) {
|
||||||
return lookupUser(func(u User) bool {
|
return lookupUser(username)
|
||||||
return u.Name == username
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupUid looks up a user by their user id in /etc/passwd. If the user cannot
|
// LookupUid looks up a user by their user id in /etc/passwd. If the user cannot
|
||||||
// be found (or there is no /etc/passwd file on the filesystem), then LookupId
|
// be found (or there is no /etc/passwd file on the filesystem), then LookupId
|
||||||
// returns an error.
|
// returns an error.
|
||||||
func LookupUid(uid int) (User, error) {
|
func LookupUid(uid int) (User, error) {
|
||||||
return lookupUser(func(u User) bool {
|
return lookupUid(uid)
|
||||||
return u.Uid == uid
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func lookupGroup(filter func(g Group) bool) (Group, error) {
|
|
||||||
// Get operating system-specific group reader-closer.
|
|
||||||
group, err := GetGroup()
|
|
||||||
if err != nil {
|
|
||||||
return Group{}, err
|
|
||||||
}
|
|
||||||
defer group.Close()
|
|
||||||
|
|
||||||
// Get the users.
|
|
||||||
groups, err := ParseGroupFilter(group, filter)
|
|
||||||
if err != nil {
|
|
||||||
return Group{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// No user entries found.
|
|
||||||
if len(groups) == 0 {
|
|
||||||
return Group{}, ErrNoGroupEntries
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assume the first entry is the "correct" one.
|
|
||||||
return groups[0], nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupGroup looks up a group by its name in /etc/group. If the group cannot
|
// LookupGroup looks up a group by its name in /etc/group. If the group cannot
|
||||||
// be found (or there is no /etc/group file on the filesystem), then LookupGroup
|
// be found (or there is no /etc/group file on the filesystem), then LookupGroup
|
||||||
// returns an error.
|
// returns an error.
|
||||||
func LookupGroup(groupname string) (Group, error) {
|
func LookupGroup(groupname string) (Group, error) {
|
||||||
return lookupGroup(func(g Group) bool {
|
return lookupGroup(groupname)
|
||||||
return g.Name == groupname
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupGid looks up a group by its group id in /etc/group. If the group cannot
|
// LookupGid looks up a group by its group id in /etc/group. If the group cannot
|
||||||
// be found (or there is no /etc/group file on the filesystem), then LookupGid
|
// be found (or there is no /etc/group file on the filesystem), then LookupGid
|
||||||
// returns an error.
|
// returns an error.
|
||||||
func LookupGid(gid int) (Group, error) {
|
func LookupGid(gid int) (Group, error) {
|
||||||
return lookupGroup(func(g Group) bool {
|
return lookupGid(gid)
|
||||||
return g.Gid == gid
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
70
vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go
generated
vendored
70
vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go
generated
vendored
@ -15,6 +15,76 @@ const (
|
|||||||
unixGroupPath = "/etc/group"
|
unixGroupPath = "/etc/group"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func lookupUser(username string) (User, error) {
|
||||||
|
return lookupUserFunc(func(u User) bool {
|
||||||
|
return u.Name == username
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupUid(uid int) (User, error) {
|
||||||
|
return lookupUserFunc(func(u User) bool {
|
||||||
|
return u.Uid == uid
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupUserFunc(filter func(u User) bool) (User, error) {
|
||||||
|
// Get operating system-specific passwd reader-closer.
|
||||||
|
passwd, err := GetPasswd()
|
||||||
|
if err != nil {
|
||||||
|
return User{}, err
|
||||||
|
}
|
||||||
|
defer passwd.Close()
|
||||||
|
|
||||||
|
// Get the users.
|
||||||
|
users, err := ParsePasswdFilter(passwd, filter)
|
||||||
|
if err != nil {
|
||||||
|
return User{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// No user entries found.
|
||||||
|
if len(users) == 0 {
|
||||||
|
return User{}, ErrNoPasswdEntries
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume the first entry is the "correct" one.
|
||||||
|
return users[0], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupGroup(groupname string) (Group, error) {
|
||||||
|
return lookupGroupFunc(func(g Group) bool {
|
||||||
|
return g.Name == groupname
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupGid(gid int) (Group, error) {
|
||||||
|
return lookupGroupFunc(func(g Group) bool {
|
||||||
|
return g.Gid == gid
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupGroupFunc(filter func(g Group) bool) (Group, error) {
|
||||||
|
// Get operating system-specific group reader-closer.
|
||||||
|
group, err := GetGroup()
|
||||||
|
if err != nil {
|
||||||
|
return Group{}, err
|
||||||
|
}
|
||||||
|
defer group.Close()
|
||||||
|
|
||||||
|
// Get the users.
|
||||||
|
groups, err := ParseGroupFilter(group, filter)
|
||||||
|
if err != nil {
|
||||||
|
return Group{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// No user entries found.
|
||||||
|
if len(groups) == 0 {
|
||||||
|
return Group{}, ErrNoGroupEntries
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume the first entry is the "correct" one.
|
||||||
|
return groups[0], nil
|
||||||
|
}
|
||||||
|
|
||||||
func GetPasswdPath() (string, error) {
|
func GetPasswdPath() (string, error) {
|
||||||
return unixPasswdPath, nil
|
return unixPasswdPath, nil
|
||||||
}
|
}
|
||||||
|
40
vendor/github.com/opencontainers/runc/libcontainer/user/lookup_windows.go
generated
vendored
Normal file
40
vendor/github.com/opencontainers/runc/libcontainer/user/lookup_windows.go
generated
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
// +build windows
|
||||||
|
|
||||||
|
package user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os/user"
|
||||||
|
)
|
||||||
|
|
||||||
|
func lookupUser(username string) (User, error) {
|
||||||
|
u, err := user.Lookup(username)
|
||||||
|
if err != nil {
|
||||||
|
return User{}, err
|
||||||
|
}
|
||||||
|
return userFromOS(u)
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupUid(uid int) (User, error) {
|
||||||
|
u, err := user.LookupId(fmt.Sprintf("%d", uid))
|
||||||
|
if err != nil {
|
||||||
|
return User{}, err
|
||||||
|
}
|
||||||
|
return userFromOS(u)
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupGroup(groupname string) (Group, error) {
|
||||||
|
g, err := user.LookupGroup(groupname)
|
||||||
|
if err != nil {
|
||||||
|
return Group{}, err
|
||||||
|
}
|
||||||
|
return groupFromOS(g)
|
||||||
|
}
|
||||||
|
|
||||||
|
func lookupGid(gid int) (Group, error) {
|
||||||
|
g, err := user.LookupGroupId(fmt.Sprintf("%d", gid))
|
||||||
|
if err != nil {
|
||||||
|
return Group{}, err
|
||||||
|
}
|
||||||
|
return groupFromOS(g)
|
||||||
|
}
|
40
vendor/github.com/opencontainers/runc/libcontainer/user/user.go
generated
vendored
40
vendor/github.com/opencontainers/runc/libcontainer/user/user.go
generated
vendored
@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"os/user"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@ -28,6 +29,28 @@ type User struct {
|
|||||||
Shell string
|
Shell string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// userFromOS converts an os/user.(*User) to local User
|
||||||
|
//
|
||||||
|
// (This does not include Pass, Shell or Gecos)
|
||||||
|
func userFromOS(u *user.User) (User, error) {
|
||||||
|
newUser := User{
|
||||||
|
Name: u.Username,
|
||||||
|
Home: u.HomeDir,
|
||||||
|
}
|
||||||
|
id, err := strconv.Atoi(u.Uid)
|
||||||
|
if err != nil {
|
||||||
|
return newUser, err
|
||||||
|
}
|
||||||
|
newUser.Uid = id
|
||||||
|
|
||||||
|
id, err = strconv.Atoi(u.Gid)
|
||||||
|
if err != nil {
|
||||||
|
return newUser, err
|
||||||
|
}
|
||||||
|
newUser.Gid = id
|
||||||
|
return newUser, nil
|
||||||
|
}
|
||||||
|
|
||||||
type Group struct {
|
type Group struct {
|
||||||
Name string
|
Name string
|
||||||
Pass string
|
Pass string
|
||||||
@ -35,6 +58,23 @@ type Group struct {
|
|||||||
List []string
|
List []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// groupFromOS converts an os/user.(*Group) to local Group
|
||||||
|
//
|
||||||
|
// (This does not include Pass, Shell or Gecos)
|
||||||
|
func groupFromOS(g *user.Group) (Group, error) {
|
||||||
|
newGroup := Group{
|
||||||
|
Name: g.Name,
|
||||||
|
}
|
||||||
|
|
||||||
|
id, err := strconv.Atoi(g.Gid)
|
||||||
|
if err != nil {
|
||||||
|
return newGroup, err
|
||||||
|
}
|
||||||
|
newGroup.Gid = id
|
||||||
|
|
||||||
|
return newGroup, nil
|
||||||
|
}
|
||||||
|
|
||||||
func parseLine(line string, v ...interface{}) {
|
func parseLine(line string, v ...interface{}) {
|
||||||
if line == "" {
|
if line == "" {
|
||||||
return
|
return
|
||||||
|
2
vendor/github.com/opencontainers/runc/vendor.conf
generated
vendored
2
vendor/github.com/opencontainers/runc/vendor.conf
generated
vendored
@ -21,5 +21,5 @@ github.com/urfave/cli d53eb991652b1d438abdd34ce4bfa3ef1539108e
|
|||||||
golang.org/x/sys 7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce https://github.com/golang/sys
|
golang.org/x/sys 7ddbeae9ae08c6a06a59597f0c9edbc5ff2444ce https://github.com/golang/sys
|
||||||
|
|
||||||
# console dependencies
|
# console dependencies
|
||||||
github.com/containerd/console 84eeaae905fa414d03e07bcd6c8d3f19e7cf180e
|
github.com/containerd/console 2748ece16665b45a47f884001d5831ec79703880
|
||||||
github.com/pkg/errors v0.8.0
|
github.com/pkg/errors v0.8.0
|
||||||
|
Loading…
Reference in New Issue
Block a user