Merge pull request #3597 from crosbymichael/bump_v0.7.6
Bump to version v0.7.6
This commit is contained in:
commit
4934c35aa1
10 changed files with 92 additions and 8 deletions
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -1,5 +1,21 @@
|
|||
# Changelog
|
||||
|
||||
## 0.7.6 (2014-01-14)
|
||||
|
||||
#### Builder
|
||||
|
||||
* Do not follow symlink outside of build context
|
||||
|
||||
#### Runtime
|
||||
|
||||
- Remount bind mounts when ro is specified
|
||||
* Use https for fetching docker version
|
||||
|
||||
#### Other
|
||||
|
||||
* Inline the test.docker.io fingerprint
|
||||
* Add ca-certificates to packaging documentation
|
||||
|
||||
## 0.7.5 (2014-01-09)
|
||||
|
||||
#### Builder
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
0.7.5
|
||||
0.7.6
|
||||
|
|
18
buildfile.go
18
buildfile.go
|
@ -287,12 +287,23 @@ func (b *buildFile) CmdVolume(args string) error {
|
|||
|
||||
func (b *buildFile) checkPathForAddition(orig string) error {
|
||||
origPath := path.Join(b.contextPath, orig)
|
||||
if p, err := filepath.EvalSymlinks(origPath); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
return fmt.Errorf("%s: no such file or directory", orig)
|
||||
}
|
||||
return err
|
||||
} else {
|
||||
origPath = p
|
||||
}
|
||||
if !strings.HasPrefix(origPath, b.contextPath) {
|
||||
return fmt.Errorf("Forbidden path outside the build context: %s (%s)", orig, origPath)
|
||||
}
|
||||
_, err := os.Stat(origPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s: no such file or directory", orig)
|
||||
if os.IsNotExist(err) {
|
||||
return fmt.Errorf("%s: no such file or directory", orig)
|
||||
}
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -308,7 +319,10 @@ func (b *buildFile) addContext(container *Container, orig, dest string) error {
|
|||
}
|
||||
fi, err := os.Stat(origPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s: no such file or directory", orig)
|
||||
if os.IsNotExist(err) {
|
||||
return fmt.Errorf("%s: no such file or directory", orig)
|
||||
}
|
||||
return err
|
||||
}
|
||||
if fi.IsDir() {
|
||||
if err := archive.CopyWithTar(origPath, destPath); err != nil {
|
||||
|
|
|
@ -716,7 +716,7 @@ func (container *Container) Start() (err error) {
|
|||
|
||||
for r, v := range container.Volumes {
|
||||
mountAs := "ro"
|
||||
if container.VolumesRW[v] {
|
||||
if container.VolumesRW[r] {
|
||||
mountAs = "rw"
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ To build docker, you will need the following system dependencies
|
|||
* A recent version of git and mercurial
|
||||
* Go version 1.2 or later
|
||||
* SQLite version 3.7.9 or later
|
||||
* libdevmapper from lvm2 version 1.02.77 or later (http://www.sourceware.org/lvm2/)
|
||||
* libdevmapper version 1.02.68-cvs (2012-01-26) or later from lvm2 version 2.02.89 or later
|
||||
* A clean checkout of the source must be added to a valid Go [workspace](http://golang.org/doc/code.html#Workspaces)
|
||||
under the path *src/github.com/dotcloud/docker*.
|
||||
|
||||
|
|
|
@ -110,6 +110,8 @@ case "$lsb_dist" in
|
|||
set -x
|
||||
if [ "https://get.docker.io/" = "$url" ]; then
|
||||
$sh_c "apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9"
|
||||
elif [ "https://test.docker.io/" = "$url" ]; then
|
||||
$sh_c "apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 740B314AE3941731B942C66ADF4FD13717AAD7D6"
|
||||
else
|
||||
$sh_c "$curl ${url}gpg | apt-key add -"
|
||||
fi
|
||||
|
|
|
@ -111,6 +111,7 @@ EOF
|
|||
--depends lxc \
|
||||
--depends aufs-tools \
|
||||
--depends iptables \
|
||||
--deb-recommends ca-certificates \
|
||||
--description "$PACKAGE_DESCRIPTION" \
|
||||
--maintainer "$PACKAGE_MAINTAINER" \
|
||||
--conflicts lxc-docker-virtual-package \
|
||||
|
|
|
@ -48,7 +48,7 @@ func TestMounted(t *testing.T) {
|
|||
}
|
||||
f.Close()
|
||||
|
||||
if err := Mount(sourcePath, targetPath, "none", "bind,ro"); err != nil {
|
||||
if err := Mount(sourcePath, targetPath, "none", "bind,rw"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
|
@ -64,4 +64,47 @@ func TestMounted(t *testing.T) {
|
|||
if !mounted {
|
||||
t.Fatalf("Expected %s to be mounted", targetPath)
|
||||
}
|
||||
if _, err := os.Stat(targetPath); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMountReadonly(t *testing.T) {
|
||||
tmp := path.Join(os.TempDir(), "mount-tests")
|
||||
if err := os.MkdirAll(tmp, 0777); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(tmp)
|
||||
|
||||
var (
|
||||
sourcePath = path.Join(tmp, "sourcefile.txt")
|
||||
targetPath = path.Join(tmp, "targetfile.txt")
|
||||
)
|
||||
|
||||
f, err := os.Create(sourcePath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
f.WriteString("hello")
|
||||
f.Close()
|
||||
|
||||
f, err = os.Create(targetPath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
f.Close()
|
||||
|
||||
if err := Mount(sourcePath, targetPath, "none", "bind,ro"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
if err := Unmount(targetPath); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
f, err = os.OpenFile(targetPath, os.O_RDWR, 0777)
|
||||
if err == nil {
|
||||
t.Fatal("Should not be able to open a ro file as rw")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,15 @@ import (
|
|||
)
|
||||
|
||||
func mount(device, target, mType string, flag uintptr, data string) error {
|
||||
return syscall.Mount(device, target, mType, flag, data)
|
||||
if err := syscall.Mount(device, target, mType, flag, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// If we have a bind mount or remount, remount...
|
||||
if flag&syscall.MS_BIND == syscall.MS_BIND && flag&syscall.MS_RDONLY == syscall.MS_RDONLY {
|
||||
return syscall.Mount(device, target, mType, flag|syscall.MS_REMOUNT, data)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func unmount(target string, flag int) error {
|
||||
|
|
|
@ -827,7 +827,7 @@ func ParseHost(defaultHost string, defaultPort int, defaultUnix, addr string) (s
|
|||
}
|
||||
|
||||
func GetReleaseVersion() string {
|
||||
resp, err := http.Get("http://get.docker.io/latest")
|
||||
resp, err := http.Get("https://get.docker.io/latest")
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue