рдореИрдВ рд╕реАрдПрд▓рдЖрдИ рд╕реЗ рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд░рд┐рдореЛрдЯ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╣реА рдмрд╛рдд рдЕрд╕рдВрднрд╡ рд▓рдЧрддреА рд╣реИред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореИрдВ рдореИрдХ рдУрдПрд╕ рдПрд▓ рдХреИрдкрд┐рдЯрди рдкрд░ рдбреЙрдХрд░-рдорд╢реАрди рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдЕрдм рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЛ рдкреВрд░реНрдг рдиреНрдпреВрдирддрдо рддрдХ рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкреИрдХреЗрдЬ 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
рдиреЛрдб рдкрд░ рдбреЙрдХрд░реЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реА рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкрддрд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рднрд▓реЗ рд╣реА рдбреЙрдХрд░реЛрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбреЙрдХрд░ рдХреЛ рд╕рднреА рддрд░реНрдХ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ 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:": {},
},
...рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдХреНрд╕рдкреЛрдЬреНрдбрдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд░рд┐рдореЛрдЯ рдПрдкреАрдЖрдИ рдХреЗ 'рдУрдкрди рд╕реНрдХреАрдорд╛ рдореЙрдбрд▓' рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдЬрдм рдбреЙрдХрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд░рд╛рджрд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рдЧрд▓рдирд╛ рдХрднреА рднреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдХрд┐рд╕рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛? рдХреНрдпрд╛ рд╡рд╣ рдерд╛? ... рдПрдХ рдЯрд╛рдЗрдкреЛ?
рдореИрдВ рдЗрд╕реЗ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреЛрд░реНрдЯ-рдореИрдкрд┐рдВрдЧ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдЖрдИрдкреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИред
(рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХрд╛ рдЯрд╛рдЗрдкреЛ рдирд╣реАрдВ рд╣реИ)
рдХреНрдпрд╛ рдпрд╣рд╛рдБ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ?
рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ ... рдореИрдВрдиреЗ рдХреБрдЫ рд╕реАрдЦрд╛ рд╣реИ: рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдЖрдИрдкреА рдкрддрд╛ рдпрд╛ рдкреЛрд░реНрдЯ рдореИрдкрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ "рдкреНрд░рд╛рд░рдВрдн ()" рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдирдХрд▓реА рд╕реЗрдореА-рдХреЛрд▓рди рдерд╛...
...рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдХреНрд╕рдкреЛрдЬреНрдбрдкреЛрд░реНрдЯреНрд╕ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд░рд┐рдореЛрдЯ рдПрдкреАрдЖрдИ рдХреЗ 'рдУрдкрди рд╕реНрдХреАрдорд╛ рдореЙрдбрд▓' рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдЬрдм рдбреЙрдХрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд░рд╛рджрд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рдЧрд▓рдирд╛ рдХрднреА рднреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред