Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
dockerode
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chalermpong
dockerode
Commits
eeae9b5b
Commit
eeae9b5b
authored
Mar 28, 2024
by
root
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Initial commit
parent
55aa7723
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
530 additions
and
0 deletions
+530
-0
README.md
+530
-0
No files found.
README.md
0 → 100644
View file @
eeae9b5b
### วิธีติดตั้ง Dockerode
ใช้คำสั่ง npm เพื่อติดตั้ง Dockerode:
```
npm install dockerode
```
### วิธีเรียกใช้ Dockerode
```
javascript
const
Docker
=
require
(
'dockerode'
);
```
#### วิธีสร้าง Object สำหรับใช้งาน Dockerode
```
javascript
var
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
var
docker
=
new
Docker
({
host
:
'http://your-docker-host.com'
,
port
:
2375
});
```
#### วิธีใช้docker pull
ใช้คำสั่ง docker.pull('myrepo/myname:tag')
ตัวอย่าง
```
javascript
docker
.
pull
(
'testcontainers/helloworld'
,
{},
function
(
err
,
stream
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
console
.
log
(
'Image pulled successfully'
);
});
```
```
javascript
// นำเข้าโมดูล Dockerode
const
Docker
=
require
(
'dockerode'
);
// สร้างอ็อบเจกต์ Docker โดยระบุตำแหน่ง socket ของ Docker daemon
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// ใช้เมธอด pull() เพื่อดึง Docker image จาก Docker registry
docker
.
pull
(
'myrepo/myname:tag'
,
{},
function
(
err
,
stream
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
// ใช้เมธอด followProgress() เพื่อติดตามความคืบหน้าของการดาวน์โหลด Docker image
docker
.
modem
.
followProgress
(
stream
,
function
(
err
,
output
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
console
.
log
(
'Image pulled successfully'
);
});
});
```
#### วิธีเช็ค Image ใน Docker โดยใช้ Dockerode
โดยจะใช้ คำสั่ง listImages
ตัวอย่าง :
```
javascript
const
Docker
=
require
(
'dockerode'
);
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// เรียกใช้เมธอด listImages() เพื่อแสดงรายการ Docker images
docker
.
listImages
(
function
(
err
,
images
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
// แสดงรายการ Docker images
console
.
log
(
'Docker Images:'
);
images
.
forEach
(
function
(
imageInfo
)
{
console
.
log
(
imageInfo
.
RepoTags
);
});
});
```
ตัวอย่างผลลัพธ์
```
less
Docker Images:
[ 'ubuntu:latest' ]
[ 'node:12', 'node:latest' ]
[ 'mongo:4.2', 'mongo:latest' ]
[ 'nginx:1.21', 'nginx:latest' ]
```
กรณีให้แสดงแค่ชื่อ Image
```
javascript
const
Docker
=
require
(
'dockerode'
);
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
docker
.
listImages
(
function
(
err
,
images
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
console
.
log
(
'Docker Images:'
);
images
.
forEach
(
function
(
imageInfo
)
{
console
.
log
(
`
${
imageInfo
.
RepoTags
[
0
].
split
(
':'
)[
0
]}
`
);
});
});
```
ตัวอย่างผลลัพธ์
```
yaml
Docker Images
:
ubuntu
node
mongo
nginx
```
#### วิธี Build Image โดยใช้ Dockerode
โดยใช้คำสั่ง docker.buildImage('ไฟล์ Dockerfile','ชื่อ Image')
ตัวอย่าง
```
javascript
const
Docker
=
require
(
'dockerode'
);
const
fs
=
require
(
'fs'
);
// สร้าง Docker client object
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// ระบุที่อยู่ของ Dockerfile
const
dockerfilePath
=
'/path/to/Dockerfile'
;
// สร้าง stream จาก Dockerfile
const
tarStream
=
fs
.
createReadStream
(
dockerfilePath
);
// ตั้งค่าสำหรับการสร้าง image
const
buildOptions
=
{
t
:
'myrepo/myimage:latest'
,
// ชื่อ image และแท็ก
};
// เริ่มสร้าง Docker image
docker
.
buildImage
(
tarStream
,
buildOptions
,
function
(
err
,
stream
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
// เมื่อสร้าง image เสร็จสมบูรณ์
docker
.
modem
.
followProgress
(
stream
,
function
(
err
,
output
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
console
.
log
(
'Image built successfully'
);
});
});
```
#### วิธีลบ Image
``` javascript
const Docker = require('dockerode');
// สร้าง Docker client object
const docker = new Docker({ socketPath: '/var/run/docker.sock' });
// ID ของ image ที่ต้องการลบ
const imageId = 'your_image_id';
// ใช้เมทอด removeImage() เพื่อลบ image
docker.getImage(imageId).remove(function (err, data) {
if (err) {
console.error('Error:', err);
return;
}
console.log('Image removed successfully');
});
```
#### วิธีสร้าง Container โดยใช้ Dockerode
```
javascript
const
Docker
=
require
(
'dockerode'
);
// สร้าง Docker client object
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
const
options
=
{
Image
:
'testcontainers/helloworld'
,
// ระบุชื่อของ image ที่จะใช้สร้าง container
name
:
'my_hello_world_container'
,
// กำหนดชื่อของ container
ExposedPorts
:
{
'8080/tcp'
:
{}
},
// กำหนด port ที่ต้องการ expose (ในที่นี้ใช้ port 80)
Hostconfig
:
{
PortBindings
:
{
'8080/tcp'
:
[{
'HostPort'
:
'8080'
}]
}
// กำหนดการ Map port ระหว่าง Host กับ container (ในที่นี้เชื่อมโดย port 8080 ของ Host)
}
};
// สร้าง container
docker
.
createContainer
(
options
,
function
(
err
,
container
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
// ทำการ start container
container
.
start
(
function
(
err
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
console
.
log
(
'Container started successfully'
);
});
});
```
#### วิธีเช็คข้อมูล Container ใน Dockerode
โดยใช้คำสั่ง docker inspect
```
javascript
const
Docker
=
require
(
'dockerode'
);
// สร้าง Docker client object
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// ID ของ container ที่ต้องการ inspect
const
containerId
=
'your_container_id'
;
// ใช้เมทอด inspect() เพื่อดึงข้อมูลของ container
docker
.
getContainer
(
containerId
).
inspect
(
function
(
err
,
data
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
// แสดงข้อมูลของ container
console
.
log
(
'Container Info:'
,
data
);
});
```
#### วิธี Stop Container
```
javascript
const
Docker
=
require
(
'dockerode'
);
// สร้าง Docker client object
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// ระบุ ID ของ container ที่ต้องการหยุด
const
containerId
=
'your_container_id'
;
// รับอ็อบเจกต์ container
const
container
=
docker
.
getContainer
(
containerId
);
// หยุด container
container
.
stop
(
function
(
err
,
data
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
console
.
log
(
'Container stopped successfully'
);
});
```
#### วิธี Remove Container
```
javascript
const
Docker
=
require
(
'dockerode'
);
// สร้าง Docker client object
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// ระบุ ID ของ container ที่ต้องการลบ
const
containerId
=
'your_container_id'
;
// รับอ็อบเจกต์ container
const
container
=
docker
.
getContainer
(
containerId
);
// ลบ container
container
.
remove
(
function
(
err
,
data
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
console
.
log
(
'Container removed successfully'
);
});
```
#### วิธีเช็ค Logs ใน Container
```
javascript
const
Docker
=
require
(
'dockerode'
);
// สร้าง Docker client object
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// ระบุ ID ของ container ที่ต้องการดู logs
const
containerId
=
'your_container_id'
;
// รับอ็อบเจกต์ container
const
container
=
docker
.
getContainer
(
containerId
);
// เรียก logs ของ container
container
.
logs
({
follow
:
true
,
stdout
:
true
,
stderr
:
true
},
function
(
err
,
stream
)
{
if
(
err
)
{
console
.
error
(
'Error getting container logs:'
,
err
);
return
;
}
// อ่าน logs จาก stream
container
.
modem
.
demuxStream
(
stream
,
process
.
stdout
,
process
.
stderr
);
});
```
#### แสดง Coantainer ทั้งหมด
ให้แสดง Container ที่กำลังทำงานทั้งหมด
```
javascript
const
Docker
=
require
(
'dockerode'
);
// สร้าง Docker client object
const
docker
=
new
Docker
({
socketPath
:
'/var/run/docker.sock'
});
// เรียกเมธอด listContainers() เพื่อรับข้อมูล container ทั้งหมด
docker
.
listContainers
(
function
(
err
,
containers
)
{
if
(
err
)
{
console
.
error
(
'Error:'
,
err
);
return
;
}
// แสดงรายการ container ทั้งหมด
console
.
log
(
'Containers:'
);
containers
.
forEach
(
function
(
containerInfo
)
{
console
.
log
(
`ID:
${
containerInfo
.
Id
}
`
);
console
.
log
(
`Name:
${
containerInfo
.
Names
[
0
]}
`
);
console
.
log
(
`Image:
${
containerInfo
.
Image
}
`
);
console
.
log
(
`Status:
${
containerInfo
.
State
}
`
);
console
.
log
(
'------------------------'
);
});
});
```
ให้แสดง Container ทั้งหมดที่ กำลังทำงานและไม่ทำงาน
```
javascript
docker
.
listContainers
(
{
all
:
true
}
)
```
ถ้าต้องการกรองเฉพาะที่ไม่ทำงาน
```
javascript
const
filters
=
{
status
:
[
'exited'
]
};
docker
.
listContainers
({
all
:
true
,
filters
:
filters
})
```
### วิธีใช้ Docker compose โดยใช้ dockerode
ติดตั้ง Dockerode-compose ใช้คำสั่ง
```
npm install dockerode-compose
```
docker compose pull
```
javascript
var Dockerode = require('dockerode');
var DockerodeCompose = require('dockerode-compose');
var docker = new Dockerode();
var compose = new DockerodeCompose(docker, './docker-compose.yml', 'wordpress');
(async () => {
await compose.pull();
var state = await compose.pull();
console.log(state);
})();
```
docker compose up
```
javascript
var Dockerode = require('dockerode');
var DockerodeCompose = require('dockerode-compose');
var docker = new Dockerode();
var compose = new DockerodeCompose(docker, './docker-compose.yml', 'wordpress');
(async () => {
await compose.pull();
var state = await compose.up();
console.log(state);
})();
```
docker compose down
```
javascript
var Dockerode = require('dockerode');
var DockerodeCompose = require('dockerode-compose');
var docker = new Dockerode();
var compose = new DockerodeCompose(docker, './docker-compose.yml', 'wordpress');
(async () => {
await compose.pull();
var state = await compose.down();
console.log(state);
})();
```
#### กำหนด Network โดยใช้ dockerode
docker create network
```
javascript
const Docker = require('dockerode');
// สร้าง Dockerode client
const docker = new Docker({ socketPath: '/var/run/docker.sock' });
// กำหนดชื่อของ network
const networkName = 'my_network';
// กำหนด options สำหรับการสร้าง network
const options = {
Name: networkName,
CheckDuplicate: true
};
// สร้าง network
docker.createNetwork(options, (err, network) => {
if (err) {
console.error('Error creating network:', err);
} else {
console.log('Network created:', networkName);
}
});
```
docker use network
#### กำหนด Blind mount ใน Container
```
javascript
const Docker = require('dockerode');
const docker = new Docker({ socketPath: '/var/run/docker.sock' });
const options = {
Image: 'image_name', // ชื่อของ image ที่ต้องการสร้าง container
Cmd:
[
'command'
]
, // Command ที่ต้องการให้ container ทำงาน
HostConfig: {
Binds:
[
'/path/on/host:/path/in/container'
]
// กำหนด blind mount ใน HostConfig
}
};
docker.createContainer(options, (err, container) => {
if (err) {
console.error('Error creating container:', err);
} else {
console.log('Container created successfully');
container.start((err, data) => {
if (err) {
console.error('Error starting container:', err);
} else {
console.log('Container started successfully');
}
});
}
});
```
#### กำหนด env โดยใช้ dockerode
```
javascript
const Docker = require('dockerode');
const docker = new Docker({ socketPath: '/var/run/docker.sock' });
const options = {
Image: 'image_name', // ชื่อของ image ที่ต้องการสร้าง container
Cmd:
[
'command'
]
, // Command ที่ต้องการให้ container ทำงาน
Env:
[
'ENV_VAR1=value1', 'ENV_VAR2=value2'
]
, // กำหนด environment variables
};
docker.createContainer(options, (err, container) => {
if (err) {
console.error('Error creating container:', err);
} else {
console.log('Container created successfully');
container.start((err, data) => {
if (err) {
console.error('Error starting container:', err);
} else {
console.log('Container started successfully');
}
});
}
});
```
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment