Bài trước: Docker (1) - Docker, image và container
-------1.1
Chia sẻ dữ liệu giữa hệ điều hành chủ và
container
Ý tưởng của chia sẻ dữ liệu giữa hệ điều hành chủ (host OS)
và container là tạo một thư mục trong hệ điều hành chủ > chia sẻ thư mục đó
> tạo một kết nối từ Docker tới thư mục chia sẻ > rồi từ container thực
hiện tạo ánh xạ tới thư mục trong Docker.
Khi đã có thư mục chia sẻ, muốn chia sẻ thông tin giữa hệ điều
hành chủ và container sẽ thực hiện chép thông tin vào thư mục chia sẻ.
Ví dụ:
– Trong ổ đĩa D:\ của hệ điều hành chủ, tạo thư mục dulieu,
trong thư mục dulieu, tạo tập tin test.txt, trong tập tin test.txt nhập nội
dung “Xin chao bac Teo”
– Chia sẻ thư mục dulieu cho everyone với quyền đầy đủ (full
control)
– Bấm chuột trái vào biểu tượng docker (trên khay hệ thống –
system tray) > chọn Settings > chọn Resources > chọn FILE SHARING >
bấm dấu + ở khung bên phải trỏ tới D:\dulieu
– Mở PowerShell, tạo một container chứa hệ điều hành Ubuntu,
có ánh xạ tới thư mục D:\dulieu
docker run –it –v
<đường dẫn thư mục trên hệ điều hành chủ>:<đường dẫn thư mục ánh xạ trên
container><một phần ID container>
Ví dụ:
docker run -it -v
d:/dulieu:/home/dulieu 4e2
– Khi tạo được container, cửa sổ PowerShell sẽ chuyển sang
dòng lệnh của container Ubuntu
– Dùng lệnh cd để
chuyển qua thư mục home/dulieu, dùng lệnh ls
để kiểm tra nội dung trong dulieu
– Tạo tập tin bên hệ điều hành Windows; dùng lệnh touch để tạo tập tin trong Ubuntu để kiểm
tra dữ liệu xuất hiện trong thư mục chia sẻ.
1.2
Chia sẻ dữ liệu giữa các container
Ý tưởng để chia sẻ dữ liệu giữa các container, là cho các
container cùng trỏ về một thư mục chia sẻ của docker.
Ví dụ:
– Tạo container đầu tiên trỏ tới thư mục chia sẻ của docker
là dulieu
docker run -it -v
d:/dulieu:/home/dulieu 4e2
– Tạo thêm container thứ hai trỏ tới ổ đĩa của container đầu
tiên
docker run -it --name container2 --volumes-from 27d1
ubuntu:latest
– Chuyển dấu nhắc lệnh vào conatiner2 để kiểm tra thư mục
dulieu
docker attach 48a
1.3
Tạo các volume cho docker
Trong docker bạn có thể tạo ra các ổ đĩa cứng logic, gọi là
các volume. Các volume này có thể gắn vào các container bất kì. Khi xóa các
container thì không các volume không bị ảnh hưởng (vẫn tồn tại).
Để kiểm tra các volume trên docker, sử dụng lệnh docker volume ls
Để tạo volume sử dụng lệnh: docker volume create <tên
volume>
Ví dụ:
docker volume create
data1
Để xem thông tin của một volume, sử dụng lệnh docker volume inspect <tên volume>
Ví dụ:
docker volume inspect
data1
Kết quả là:
[
{
"CreatedAt":
"2020-09-06T09:42:11Z",
"Driver":
"local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/data1/_data",
"Name": "data1",
"Options": {},
"Scope": "local"
}
]
Để xóa một volume, sử dụng lệnh docker volume rm <tên volume>
Ví dụ:
docker volume rm data1
1.4
Gắn volume vào container
Khi đã có các volume trên docker, để gắn volume vào
container, sử dụng lệnh sau:
docker run –it --mount
source=<tên volume>, target=<tên thư mục sẽ gắn tới volume> <ID
của image>
Ví dụ:
docker run -it --name
may3 --mount source=data1,target=/home/dulieu 4e2
1.5
Tạo volume và gắn vào thư mục của hệ điều hành
chủ
Để tạo một volume và gắn vào thư mục của hệ điều hành chủ, sử
dụng lệnh sau (lưu ý: thư mục trên hệ điều hành chủ phải được chia sẻ):
docker volume create --opt
device=<thư mục trên hệ điều hành chủ> --opt type=none –opt o=bind
<tên volume>
Ví dụ:
docker volume create
--opt device=/localhost/dulieu --opt type=none --opt o=bind data2
Xem thông tin của data2:
docker volume inspect
data2
Kết quả:
[
{
"CreatedAt": "2020-09-06T10:46:19Z",
"Driver":
"local",
"Labels":
{},
"Mountpoint": "/var/lib/docker/volumes/data2/_data",
"Name":
"data2",
"Options": {
"device":
"/localhost/dulieu",
"o": "bind",
"type": "none"
},
"Scope": "local"
}
]
Để gắn volume vừa
tạo vào một container, sử dụng lệnh sau:
docker run –it –v <tên volume>:<đường dẫn
của thư mục đích><một phần ID của image>
Ví dụ:
docker run -it -v
data3:/home/disk 4e2
docker: Error response
from daemon: error while mounting volume '/var/lib/docker/volumes/data3/_data':
failed to mount local volume: mount
/localhost/dulieu:/var/lib/docker/volumes/data3/_data, flags: 0x1000: no such
file or directory.
1.9 Luồng làm việc dựa trên Docker
Khi làm việc với Docker thường gồm các công đoạn: Build, Ship và Run.
– Build: thiết lập, cài đặt môi trường phát triển
– Ship: lưu các thiết lập ở bước Build thành image
– Run: chạy và quản lý các image ở bước Ship
Quá trình Build do các lập trình viên (developer) thực hiện. Quá trình Run do các quản trị viên tại bộ phận triển khai (IT Operation) thực hiện.
Xem thêm: Danh sách bài học