Moby: рд░рд┐рдореЛрдЯ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдмрд╛рдВрдз рдирд╣реАрдВ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЬреВрди 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: moby/moby

рдореИрдВ рд╕реАрдПрд▓рдЖрдИ рд╕реЗ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд░рд┐рдореЛрдЯ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╣реА рдмрд╛рдд рдЕрд╕рдВрднрд╡ рд▓рдЧрддреА рд╣реИред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВ рдореИрдХ рдУрдПрд╕ рдПрд▓ рдХреИрдкрд┐рдЯрди рдкрд░ рдбреЙрдХрд░-рдорд╢реАрди рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЕрдм рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЛ рдкреВрд░реНрдг рдиреНрдпреВрдирддрдо рддрдХ рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкреИрдХреЗрдЬ netcat-openbsd, apt-get install (рдФрд░ nc ) рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдХ ubuntu рдЫрд╡рд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛

рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рджреМрдбрд╝рддрд╛ рд╣реВрдБ

eval $(docker-machine env default); docker stop $(docker ps -a -q); docker rm $(docker ps -a -q) 

... рдкрд┐рдЫрд▓реЗ рд╕рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕реАрдПрд▓рдЖрдИ рд╕рдВрд╕реНрдХрд░рдг (рдкрддрд╛ рдпреЛрдЧреНрдп)

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реАрдПрд▓рдЖрдИ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдХ рдкрддрд╛ рдпреЛрдЧреНрдп рд╕реЗрд╡рд╛ рд▓рд╛рддрд╛ рд╣реИ ...

docker run -it --rm -p 3000:3000 ubuntu-nc /bin/bash -c 'echo "Working" | nc -l 3000'

рдкрддрд╛ рдпреЛрдЧреНрдп рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛

рдореИрдВ рд╕рд╛рдмрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдбреЛрдХрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдареАрдХ рд╕реЗ рдореИрдк рдХрд┐рдП рдЧрдП рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рд╕реБрд▓рдн рд╣реИ (рдбреЙрдХрд░-рдорд╢реАрди рджреНрд╡рд╛рд░рд╛ рд╡реАрдПрдо рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдЖрдИрдкреА рдкрд░) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд▓рд╛рдХрд░ ...

$ nc 192.168.99.100 3000
Working

NodeJS рд╕рдВрд╕реНрдХрд░рдг (рдкрддрд╛ рдпреЛрдЧреНрдп рдирд╣реАрдВ)

рдиреЛрдб рдкрд░ рдбреЙрдХрд░реЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реА рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкрддрд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рднрд▓реЗ рд╣реА рдбреЙрдХрд░реЛрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбреЙрдХрд░ рдХреЛ рд╕рднреА рддрд░реНрдХ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ https://godoc.org/github рдХреЗ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реВрдВред com/docker/engine-api/types/container#Config рдФрд░ https://godoc.org/github.com/docker/engine-api/types/container#HostConfig рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЙрдард╛ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ...

var fs = require("fs"),
    dockermachine = require("dockermachine"),
    dockerode = require("dockerode");

var createOptions = {
    Image:"ubuntu-nc",
    Tty:true,
    ExposedPorts: {
        "3000/tcp:": {},
    },
    Cmd:[
        "/bin/bash", "-c", "echo Working | nc -l 3000"
    ],
    HostConfig:{
        PortBindings: {
            "3000/tcp": [{
                "HostIP":"0.0.0.0",
                "HostPort": "3000"
            }],
        },
    },
};

dockermachine.inspect("default").then(function(info){

    var docker = new dockerode({
        host:info.Driver.IPAddress,
        port:2376,
        ca:fs.readFileSync(info.HostOptions.AuthOptions.CaCertPath),
        cert:fs.readFileSync(info.HostOptions.AuthOptions.ClientCertPath),
        key:fs.readFileSync(info.HostOptions.AuthOptions.ClientKeyPath),
    });

    docker.createContainer(createOptions, function(err, result){
        var container = docker.getContainer(result.id);

        container.attach({stream: true, stdout: true, stderr: true}, function (err, stream) {
            stream.pipe(process.stdout);
        });

        container.start(function(err, data){
            if(err) console.log(err);
        });

    });
});

NodeJS рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реЗрд╡рд╛ рдЪрд▓рд╛рддрд╛ рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реЗрд╡рд╛ рдХреЛ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рднреАрддрд░ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ ...

$ docker exec -it 3dd7 /bin/bash -c "nc localhost 3000"
Working

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рдкреЛрд░реНрдЯ рдореИрдкрд┐рдВрдЧ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдореИрдВ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдп рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдкрд╣рд▓реЗ 'рдкрддрд╛ рдпреЛрдЧреНрдп рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛', рдпрд╣ рдПрдХ рдЕрд╕рдлрд▓ рдХрдиреЗрдХреНрд╢рди рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред

$ nc -v 192.168.99.100 3000
nc: connectx to 192.168.99.100 port 3000 (tcp) failed: Connection refused

рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА

docker version рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ:

bash-3.2$ docker version
Client:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Fri Feb 12 22:11:40 UTC 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:20:08 2016
 OS/Arch:      linux/amd64

docker info рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ:

bash-3.2$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 3
Server Version: 1.11.2
Storage Driver: aufs
 Root Dir: /mnt/sda1/var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 7
 Dirperm1 Supported: true
Logging Driver: json-file
Plugins: 
 Volume: local
 Network: null host bridge
Kernel Version: 4.4.12-boot2docker
Operating System: Boot2Docker 1.11.2 (TCL 7.1); HEAD : a6645c3 - Wed Jun  1 22:59:51 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 995.9 MiB
Name: default
ID: FWTM:2N6I:VM5L:OL4U:RD3K:HFKH:6VYP:QSV5:VHG5:ZTSW:GFOP:CDNT
Debug mode (server): true
 File Descriptors: 14
 Goroutines: 35
 System Time: 2016-06-10T13:58:19.242425997Z
 EventsListeners: 0
 Init SHA1: 
 Init Path: 
 Docker Root Dir: /mnt/sda1/var/lib/docker
Labels:
 provider=virtualbox

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдирдХрд▓реА рд╕реЗрдореА-рдХреЛрд▓рди рдерд╛...

ExposedPorts: {
        "3000/tcp:": {},
 },

...рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдХреНрд╕рдкреЛрдЬреНрдбрдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд░рд┐рдореЛрдЯ рдПрдкреАрдЖрдИ рдХреЗ 'рдУрдкрди рд╕реНрдХреАрдорд╛ рдореЙрдбрд▓' рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдЬрдм рдбреЙрдХрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд░рд╛рджрд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рдЧрд▓рдирд╛ рдХрднреА рднреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдирдХрд▓реА рд╕реЗрдореА-рдХреЛрд▓рди рдерд╛...

ExposedPorts: {
        "3000/tcp:": {},
 },

...рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдХреНрд╕рдкреЛрдЬреНрдбрдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд░рд┐рдореЛрдЯ рдПрдкреАрдЖрдИ рдХреЗ 'рдУрдкрди рд╕реНрдХреАрдорд╛ рдореЙрдбрд▓' рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдЬрдм рдбреЙрдХрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд░рд╛рджрд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рдЧрд▓рдирд╛ рдХрднреА рднреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдХрд┐рд╕рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛? рдХреНрдпрд╛ рд╡рд╣ рдерд╛? ... рдПрдХ рдЯрд╛рдЗрдкреЛ?
рдореИрдВ рдЗрд╕реЗ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреЛрд░реНрдЯ-рдореИрдкрд┐рдВрдЧ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдЖрдИрдкреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИред
(рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХрд╛ рдЯрд╛рдЗрдкреЛ рдирд╣реАрдВ рд╣реИ)
рдХреНрдпрд╛ рдпрд╣рд╛рдБ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ?

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ ... рдореИрдВрдиреЗ рдХреБрдЫ рд╕реАрдЦрд╛ рд╣реИ: рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЖрдИрдкреА рдкрддрд╛ рдпрд╛ рдкреЛрд░реНрдЯ рдореИрдкрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ "рдкреНрд░рд╛рд░рдВрдн ()" рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

gndgnd picture gndgnd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

noahwhite picture noahwhite  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Nurza picture Nurza  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cmingxu picture cmingxu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

anshumanbh picture anshumanbh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ