Docker là nền tảng cung cấp cho các công cụ, dịch vụ để các thành viên lập trình và người quản lý hệ thống có thể phát triển, thực thi, chạy các ứng dụng với các thùng chứa. Việc sử dụng các bộ chứa Linux để phát triển ứng dụng được gọi là bộ chứa. Việc sử dụng container giúp dễ dàng hơn trong quá trình phát triển ứng dụng
Để hiểu rõ hơn về
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
6, bạn có thể tham khảo Series Tìm hiểu về Docker. Trong bài viết này, mình sẽ chia sẻ về cách sử dụng Python cộng tác với import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
6Công cụ sử dụng
Các công cụ mình sử dụng trong bài chia sẻ này bao gồm
- Docker phiên bản 18. 06. 1-ce, bản dựng e68fc7a
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
- Trăn 3. 5
- Docker SDK cho Python phiên bản ổn định mới nhất. Là thư viện Python cho Docker Engine API. Nó sẽ giúp bạn sử dụng được mọi thứ mà lệnh
8 có thể, từ bên trong ứng dụng Python, từ việc chạyimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
9, quản lýimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
9, quản lýimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
1, v. vimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock'] client.containers.run['alpine', 'echo hello world'] # b'hello world\n'
Các công cụ đề tài có tài liệu hướng dẫn dễ hiểu, giúp bạn dễ dàng cài đặt và sử dụng
Sử dụng Python tương tác với Docker
Tạo đối tượng khách hàng
Để tương tác với
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
client.containers.run['alpine', 'echo hello world']
# b'hello world\n'
2, bạn cần khởi tạo 1 phiên bản cho máy khách. import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
client.containers.run['alpine', 'echo hello world']
# b'hello world\n'
3 Support information through your call function import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
client.containers.run['alpine', 'echo hello world']
# b'hello world\n'
4. Nó sẽ trả lại cho bạn 1 import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
client.containers.run['alpine', 'echo hello world']
# b'hello world\n'
5 có cấu hình giống với client mà bạn chạy khi sử dụng import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
client.containers.run['alpine', 'echo hello world']
# b'hello world\n'
6import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
2Ngoài ra, bạn có thể tự cấu hình đường dẫn URL đến máy chủ Docker, ví dụ như
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
- tham số base_url. will edit the URL ddeessn Docker server, you could use
7 orimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock'] client.containers.run['alpine', 'echo hello world'] # b'hello world\n'
8import docker client = docker.DockerClient[base_url='unix://var/run/docker.sock'] client.containers.run['alpine', 'echo hello world'] # b'hello world\n'
Khi đã có client, lúc này ứng dụng đã sẵn sàng để tương tác với Docker rồi
Quản lý Docker container
1. Chạy vùng chứa
Để chạy container, bạn cần sử dụng phương thức
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
client.containers.run['alpine', 'echo hello world']
# b'hello world\n'
9 có sẵn ở bên trong import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
70. Mặc định khi gọi tới phương thức import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
71, nó sẽ đợi tới khi bộ chứa hoàn thành công việc chạy và trả về các bản ghi, tương tự như lệnh import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
72Khi bạn định nghĩa thêm tham số
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
73 cho phương thức import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
74, thì client sẽ chạy container và ngay lập tức trả về cho bạn 1 đối tượng import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
75, hiểu đơn giản là client sẽ chạy container ngầm, tương tự như import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
76Ví dụ
- Chạy vùng chứa
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
client.containers.run['alpine', 'echo hello world']
# b'hello world\n'
- Chạy container tạm dừng, nhận lại 1 đối tượng container
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
7Ở ví dụ trên , trong phương thức
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
74 mình có sử dụng thêm một số tham số với mục đích là kết nối container nữa tạo vào 1 import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
78 có tên là Docker-network, mount 1 thư mục từ bên ngoài máy chủ lưu trữ vào trong container này và cho phép . Ngoài ra, import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
79 còn hỗ trợ đầy đủ các tùy chọn khác, tương tự như khi bạn sử dụng lệnh Docker, bạn có thể tham khảo tại đây2. Shows list container
Giống với
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
90, để liệt kê danh sách các container, Docker SDK cung cấp hàm Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
91 với các tham số- all display all container
- giới hạn. giới hạn số container được trả về
- từ. hiển thị các vùng chứa được tạo kể từ ID hoặc tên đến nay, bao gồm cả các vùng chứa không hoạt động
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
93. Tương tác với container
Với
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
92 được trả về khi chạy container, ta có thể dễ dàng tương tác với container đóimport docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
3Bạn cũng có thể chạy lệnh bên trong vùng chứa, tương tự như lệnh
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
93import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
5Default
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
94 will return 1 tuple gồm Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
95 kiểu int và Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
96 kiểu str. Mình sẽ giải thích 1 chút về các thông số trong Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
94 mà mình sử dụng- 'là -la'. chính là lệnh mà bạn muốn chạy bên trong container
- thư ký làm việc. Chỉ định thư mục làm việc mà lệnh sẽ thực hiện tại đó
- tty. TTY support
- luồng = Đúng. Return to log format stream
Ngoài ra còn có thể sử dụng các tham số
- thiết bị xuất chuẩn, thiết bị xuất chuẩn, thiết bị xuất chuẩn. đính kèm với stdout, stderr, stdin
- ổ cắm. Trả về 1 ổ cắm kết nối cho phép tùy biến quá trình đọc
- môi trường. 1 dict or list str là các biến môi trường cần sử dụng
Quản lý hình ảnh
Chúng ta có thể quản lý hình ảnh trên máy chủ thông qua các phương pháp trong
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:24:56 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 [minimum version 1.12]
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:21 2018
OS/Arch: linux/amd64
Experimental: false
98- Xây dựng hình ảnh từ Dockerfile bằng phương pháp
99,Client: Version: 18.06.1-ce API version: 1.38 Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:24:56 2018 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 18.06.1-ce API version: 1.38 [minimum version 1.12] Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:23:21 2018 OS/Arch: linux/amd64 Experimental: false
30 đến thư mục chứa Dockerfile bắt buộc phải có, hoặcimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
31 là tệp đối tượng sử dụng như Dockerfile,import docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
32 để chỉ định thẻ cho hình ảnh được tạo raimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
5- Kéo hình ảnh từ Docker Hub, thông qua phương pháp
33, nếu bạn không chỉ định gắn thẻ cho hình ảnh này, toàn bộ hình ảnh sẽ được kéo về. Nếu kho lưu trữ không công khai, bạn có thể đăng nhập thông qua cấu hình chỉ định trong thông sốimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
34import docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
8- Tương tự như việc kéo, ta cũng có thể đẩy hình ảnh lên kho ví dụ như Docker Hub bằng cách sử dụng phương thức
35, nếuimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
36 thì nhật ký sẽ trả về từng trình tạo chặnimport docker client = docker.DockerClient[base_url='unix://var/run/docker.sock']
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
20- Để xem các hình ảnh hiện có trong máy chủ
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
21Theo dõi các sự kiện tại Docker
Để theo dõi các sự kiện xảy ra trên Docker server theo thời gian thực, tương tự như khi bạn sử dụng lệnh
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
37, bạn có thể gọi tới import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
38 để lấy các sự kiệnimport docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
22pause
Sau bài viết chia sẻ này, hy vọng các bạn đã nắm giữ cơ bản được cách sử dụng
import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
39 để tương tác với Docker. Mình sẽ làm tiếp các bài chia sẻ về cách tương tác với Docker Network, Docker Swarm trong thời gian tới, mong các bạn tiếp tục đón nhận