Merge pull request #3597 from crosbymichael/bump_v0.7.6

Bump to version v0.7.6
This commit is contained in:
Michael Crosby 2014-01-15 09:40:43 -08:00
commit 4934c35aa1
10 changed files with 92 additions and 8 deletions

View file

@ -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

View file

@ -1 +1 @@
0.7.5
0.7.6

View file

@ -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 {

View file

@ -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"
}

View file

@ -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*.

View file

@ -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

View file

@ -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 \

View file

@ -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")
}
}

View file

@ -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 {

View file

@ -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 ""
}