Add SESSION_ID to instance and remove unnecessary stuff

This commit is contained in:
Marcos Lilljedahl
2017-09-12 16:58:28 -03:00
parent ddcf5cf7bc
commit 4d643d04c0
7 changed files with 22 additions and 44 deletions

View File

@@ -1,18 +1,11 @@
ARG VERSION=docker:17.06.0-ce-dind ARG VERSION=docker:17.07-dind
FROM ${VERSION} FROM ${VERSION}
RUN apk add --no-cache git tmux py2-pip apache2-utils vim build-base gettext-dev curl bash-completion bash util-linux jq openssh qemu-img qemu-system-x86_64 RUN apk add --no-cache git tmux py2-pip apache2-utils vim build-base gettext-dev curl bash-completion bash util-linux jq openssh zfs
ENV GOPATH /root/go ENV GOPATH /root/go
ENV PATH $PATH:$GOPATH ENV PATH $PATH:$GOPATH
# Use specific moby commit due to vendoring mismatch
ENV MOBY_COMMIT="a73c3d3667f32fd61febcd2e824aa0341a57bafd"
RUN mkdir /root/go && apk add --no-cache go \
&& go get -u -d github.com/moby/tool/cmd/moby && (cd $GOPATH/src/github.com/moby/tool/cmd/moby && git checkout $MOBY_COMMIT && go install) \
&& go get -u github.com/linuxkit/linuxkit/src/cmd/linuxkit \
&& rm -rf /root/go/pkg && rm -rf /root/go/src && rm -rf /usr/lib/go
# Compile and install httping # Compile and install httping
# (used in orchestration workshop, and very useful anyway) # (used in orchestration workshop, and very useful anyway)
@@ -66,7 +59,7 @@ CMD cat /etc/hosts >/etc/hosts.bak && \
sed -i "s/\DOCKER_TLSCACERT/$DOCKER_TLSCACERT/" /etc/docker/daemon.json && \ sed -i "s/\DOCKER_TLSCACERT/$DOCKER_TLSCACERT/" /etc/docker/daemon.json && \
sed -i "s/\DOCKER_TLSCERT/$DOCKER_TLSCERT/" /etc/docker/daemon.json && \ sed -i "s/\DOCKER_TLSCERT/$DOCKER_TLSCERT/" /etc/docker/daemon.json && \
sed -i "s/\DOCKER_TLSKEY/$DOCKER_TLSKEY/" /etc/docker/daemon.json && \ sed -i "s/\DOCKER_TLSKEY/$DOCKER_TLSKEY/" /etc/docker/daemon.json && \
umount /var/lib/docker && mount -t securityfs none /sys/kernel/security && \ mount -t securityfs none /sys/kernel/security && \
echo "root:root" | chpasswd &> /dev/null && \ echo "root:root" | chpasswd &> /dev/null && \
/usr/sbin/sshd -o PermitRootLogin=yes -o PrintMotd=no 2>/dev/null && \ /usr/sbin/sshd -o PermitRootLogin=yes -o PrintMotd=no 2>/dev/null && \
dockerd &>/docker.log & \ dockerd &>/docker.log & \

View File

@@ -2,11 +2,8 @@
"experimental": true, "experimental": true,
"debug": true, "debug": true,
"log-level": "info", "log-level": "info",
"graph": "/graph",
"insecure-registries": ["127.0.0.1"], "insecure-registries": ["127.0.0.1"],
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"], "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"],
"storage-driver": "DOCKER_STORAGE_DRIVER",
"dns": ["PWD_IP_ADDRESS", "8.8.8.8"],
"tls": DOCKER_TLSENABLE, "tls": DOCKER_TLSENABLE,
"tlscacert": "DOCKER_TLSCACERT", "tlscacert": "DOCKER_TLSCACERT",
"tlscert": "DOCKER_TLSCERT", "tlscert": "DOCKER_TLSCERT",

View File

@@ -226,19 +226,17 @@ func (d *docker) DeleteContainer(id string) error {
} }
type CreateContainerOpts struct { type CreateContainerOpts struct {
Image string Image string
WindowsEndpoint string SessionId string
SessionId string ContainerName string
PwdIpAddress string Hostname string
ContainerName string ServerCert []byte
Hostname string ServerKey []byte
ServerCert []byte CACert []byte
ServerKey []byte Privileged bool
CACert []byte HostFQDN string
Privileged bool Labels map[string]string
HostFQDN string Networks []string
Labels map[string]string
Networks []string
} }
func (d *docker) CreateContainer(opts CreateContainerOpts) error { func (d *docker) CreateContainer(opts CreateContainerOpts) error {
@@ -246,9 +244,7 @@ func (d *docker) CreateContainer(opts CreateContainerOpts) error {
containerDir := "/var/run/pwd" containerDir := "/var/run/pwd"
containerCertDir := fmt.Sprintf("%s/certs", containerDir) containerCertDir := fmt.Sprintf("%s/certs", containerDir)
env := []string{} env := []string{fmt.Sprintf("SESSION_ID=%s", opts.SessionId)}
env = append(env, fmt.Sprintf("WINDOWS_ENDPOINT=%s", opts.WindowsEndpoint))
// Write certs to container cert dir // Write certs to container cert dir
if len(opts.ServerCert) > 0 { if len(opts.ServerCert) > 0 {
@@ -296,7 +292,6 @@ func (d *docker) CreateContainer(opts CreateContainerOpts) error {
t := true t := true
h.Resources.OomKillDisable = &t h.Resources.OomKillDisable = &t
env = append(env, fmt.Sprintf("PWD_IP_ADDRESS=%s", opts.PwdIpAddress))
env = append(env, fmt.Sprintf("PWD_HOST_FQDN=%s", opts.HostFQDN)) env = append(env, fmt.Sprintf("PWD_HOST_FQDN=%s", opts.HostFQDN))
cf := &container.Config{ cf := &container.Config{
Hostname: opts.Hostname, Hostname: opts.Hostname,

View File

@@ -10,8 +10,7 @@ import (
func GetInstanceImages(rw http.ResponseWriter, req *http.Request) { func GetInstanceImages(rw http.ResponseWriter, req *http.Request) {
instanceImages := []string{ instanceImages := []string{
config.GetDindImageName(), config.GetDindImageName(),
"franela/dind:overlay2-dev", "franela/dind:dev",
"franela/ucp:2.4.1",
} }
json.NewEncoder(rw).Encode(instanceImages) json.NewEncoder(rw).Encode(instanceImages)
} }

View File

@@ -62,7 +62,6 @@ func (d *DinD) InstanceNew(session *types.Session, conf types.InstanceConfig) (*
opts := docker.CreateContainerOpts{ opts := docker.CreateContainerOpts{
Image: conf.ImageName, Image: conf.ImageName,
SessionId: session.Id, SessionId: session.Id,
PwdIpAddress: session.PwdIpAddress,
ContainerName: containerName, ContainerName: containerName,
Hostname: conf.Hostname, Hostname: conf.Hostname,
ServerCert: conf.ServerCert, ServerCert: conf.ServerCert,

View File

@@ -83,7 +83,6 @@ func TestInstanceNew(t *testing.T) {
expectedContainerOpts := docker.CreateContainerOpts{ expectedContainerOpts := docker.CreateContainerOpts{
Image: expectedInstance.Image, Image: expectedInstance.Image,
SessionId: session.Id, SessionId: session.Id,
PwdIpAddress: session.PwdIpAddress,
ContainerName: expectedInstance.Name, ContainerName: expectedInstance.Name,
Hostname: expectedInstance.Hostname, Hostname: expectedInstance.Hostname,
ServerCert: nil, ServerCert: nil,
@@ -153,7 +152,6 @@ func TestInstanceNew_WithNotAllowedImage(t *testing.T) {
expectedContainerOpts := docker.CreateContainerOpts{ expectedContainerOpts := docker.CreateContainerOpts{
Image: expectedInstance.Image, Image: expectedInstance.Image,
SessionId: session.Id, SessionId: session.Id,
PwdIpAddress: session.PwdIpAddress,
ContainerName: expectedInstance.Name, ContainerName: expectedInstance.Name,
Hostname: expectedInstance.Hostname, Hostname: expectedInstance.Hostname,
ServerCert: nil, ServerCert: nil,
@@ -222,7 +220,6 @@ func TestInstanceNew_WithCustomHostname(t *testing.T) {
expectedContainerOpts := docker.CreateContainerOpts{ expectedContainerOpts := docker.CreateContainerOpts{
Image: expectedInstance.Image, Image: expectedInstance.Image,
SessionId: session.Id, SessionId: session.Id,
PwdIpAddress: session.PwdIpAddress,
ContainerName: expectedInstance.Name, ContainerName: expectedInstance.Name,
Hostname: expectedInstance.Hostname, Hostname: expectedInstance.Hostname,
ServerCert: nil, ServerCert: nil,

View File

@@ -9,6 +9,7 @@ import (
"github.com/play-with-docker/play-with-docker/docker" "github.com/play-with-docker/play-with-docker/docker"
"github.com/play-with-docker/play-with-docker/event" "github.com/play-with-docker/play-with-docker/event"
"github.com/play-with-docker/play-with-docker/provisioner" "github.com/play-with-docker/play-with-docker/provisioner"
"github.com/play-with-docker/play-with-docker/pwd/types"
"github.com/play-with-docker/play-with-docker/storage" "github.com/play-with-docker/play-with-docker/storage"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock" "github.com/stretchr/testify/mock"
@@ -63,8 +64,6 @@ func TestSessionNew(t *testing.T) {
assert.Equal(t, "localhost", s.Host) assert.Equal(t, "localhost", s.Host)
assert.False(t, s.Ready) assert.False(t, s.Ready)
assert.Equal(t, "10.0.0.1", s.PwdIpAddress)
_d.AssertExpectations(t) _d.AssertExpectations(t)
_f.AssertExpectations(t) _f.AssertExpectations(t)
_s.AssertExpectations(t) _s.AssertExpectations(t)
@@ -97,31 +96,31 @@ func TestSessionSetup(t *testing.T) {
_s.On("InstanceCount").Return(0, nil) _s.On("InstanceCount").Return(0, nil)
_s.On("InstanceFindBySessionId", "aaaabbbbcccc").Return([]*types.Instance{}, nil) _s.On("InstanceFindBySessionId", "aaaabbbbcccc").Return([]*types.Instance{}, nil)
_d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", PwdIpAddress: "10.0.0.1", ContainerName: "aaaabbbb_manager1", Hostname: "manager1", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil) _d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", ContainerName: "aaaabbbb_manager1", Hostname: "manager1", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil)
_d.On("GetContainerIPs", "aaaabbbb_manager1").Return(map[string]string{"aaaabbbbcccc": "10.0.0.2"}, nil) _d.On("GetContainerIPs", "aaaabbbb_manager1").Return(map[string]string{"aaaabbbbcccc": "10.0.0.2"}, nil)
_f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil) _f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil)
_d.On("SwarmInit").Return(&docker.SwarmTokens{Manager: "managerToken", Worker: "workerToken"}, nil) _d.On("SwarmInit").Return(&docker.SwarmTokens{Manager: "managerToken", Worker: "workerToken"}, nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_manager1", "10.0.0.2", "manager1", "ip10-0-0-2-aaaabbbbcccc"}).Return() _e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_manager1", "10.0.0.2", "manager1", "ip10-0-0-2-aaaabbbbcccc"}).Return()
_d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", PwdIpAddress: "10.0.0.1", ContainerName: "aaaabbbb_manager2", Hostname: "manager2", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil) _d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", ContainerName: "aaaabbbb_manager2", Hostname: "manager2", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil)
_d.On("GetContainerIPs", "aaaabbbb_manager2").Return(map[string]string{"aaaabbbbcccc": "10.0.0.3"}, nil) _d.On("GetContainerIPs", "aaaabbbb_manager2").Return(map[string]string{"aaaabbbbcccc": "10.0.0.3"}, nil)
_f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil) _f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil)
_d.On("SwarmJoin", "10.0.0.2:2377", "managerToken").Return(nil) _d.On("SwarmJoin", "10.0.0.2:2377", "managerToken").Return(nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_manager2", "10.0.0.3", "manager2", "ip10-0-0-3-aaaabbbbcccc"}).Return() _e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_manager2", "10.0.0.3", "manager2", "ip10-0-0-3-aaaabbbbcccc"}).Return()
_d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind:overlay2-dev", SessionId: "aaaabbbbcccc", PwdIpAddress: "10.0.0.1", ContainerName: "aaaabbbb_manager3", Hostname: "manager3", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil) _d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind:overlay2-dev", SessionId: "aaaabbbbcccc", ContainerName: "aaaabbbb_manager3", Hostname: "manager3", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil)
_d.On("GetContainerIPs", "aaaabbbb_manager3").Return(map[string]string{"aaaabbbbcccc": "10.0.0.4"}, nil) _d.On("GetContainerIPs", "aaaabbbb_manager3").Return(map[string]string{"aaaabbbbcccc": "10.0.0.4"}, nil)
_f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil) _f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil)
_d.On("SwarmJoin", "10.0.0.2:2377", "managerToken").Return(nil) _d.On("SwarmJoin", "10.0.0.2:2377", "managerToken").Return(nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_manager3", "10.0.0.4", "manager3", "ip10-0-0-4-aaaabbbbcccc"}).Return() _e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_manager3", "10.0.0.4", "manager3", "ip10-0-0-4-aaaabbbbcccc"}).Return()
_d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", PwdIpAddress: "10.0.0.1", ContainerName: "aaaabbbb_worker1", Hostname: "worker1", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil) _d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", ContainerName: "aaaabbbb_worker1", Hostname: "worker1", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil)
_d.On("GetContainerIPs", "aaaabbbb_worker1").Return(map[string]string{"aaaabbbbcccc": "10.0.0.5"}, nil) _d.On("GetContainerIPs", "aaaabbbb_worker1").Return(map[string]string{"aaaabbbbcccc": "10.0.0.5"}, nil)
_f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil) _f.On("GetForInstance", mock.AnythingOfType("*types.Instance")).Return(_d, nil)
_d.On("SwarmJoin", "10.0.0.2:2377", "workerToken").Return(nil) _d.On("SwarmJoin", "10.0.0.2:2377", "workerToken").Return(nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_worker1", "10.0.0.5", "worker1", "ip10-0-0-5-aaaabbbbcccc"}).Return() _e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_worker1", "10.0.0.5", "worker1", "ip10-0-0-5-aaaabbbbcccc"}).Return()
_d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", PwdIpAddress: "10.0.0.1", ContainerName: "aaaabbbb_other", Hostname: "other", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil) _d.On("CreateContainer", docker.CreateContainerOpts{Image: "franela/dind", SessionId: "aaaabbbbcccc", ContainerName: "aaaabbbb_other", Hostname: "other", Privileged: true, HostFQDN: "localhost", Networks: []string{"aaaabbbbcccc"}}).Return(nil)
_d.On("GetContainerIPs", "aaaabbbb_other").Return(map[string]string{"aaaabbbbcccc": "10.0.0.6"}, nil) _d.On("GetContainerIPs", "aaaabbbb_other").Return(map[string]string{"aaaabbbbcccc": "10.0.0.6"}, nil)
_e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_other", "10.0.0.6", "other", "ip10-0-0-6-aaaabbbbcccc"}).Return() _e.M.On("Emit", event.INSTANCE_NEW, "aaaabbbbcccc", []interface{}{"aaaabbbb_other", "10.0.0.6", "other", "ip10-0-0-6-aaaabbbbcccc"}).Return()
@@ -166,4 +165,3 @@ func TestSessionSetup(t *testing.T) {
_g.AssertExpectations(t) _g.AssertExpectations(t)
_e.M.AssertExpectations(t) _e.M.AssertExpectations(t)
} }
*/