Commit eeae9b5b by root

Initial commit

parent 55aa7723
### วิธีติดตั้ง 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');
}
});
}
});
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment