Trăn thời gian hoạt động

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']
6

Cô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
    import docker
    client = docker.DockerClient[base_url='unix://var/run/docker.sock']
    
    8 có thể, từ bên trong ứng dụng Python, từ việc chạy
    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']
    
    9, quản lý
    import docker
    client = docker.DockerClient[base_url='unix://var/run/docker.sock']
    client.containers.run['alpine', 'echo hello world']
    
    # b'hello world\n'
    
    1, v. v

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'
6

import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
2

Ngoà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
    import docker
    client = docker.DockerClient[base_url='unix://var/run/docker.sock']
    client.containers.run['alpine', 'echo hello world']
    
    # b'hello world\n'
    
    7 or
    import docker
    client = docker.DockerClient[base_url='unix://var/run/docker.sock']
    client.containers.run['alpine', 'echo hello world']
    
    # b'hello world\n'
    
    8

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']
72

Khi 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']
76

Ví 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 đây

2. 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

9

3. 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']
3

Bạ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

93

import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
5

Default

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
    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
    
    
    99,
    import docker
    client = docker.DockerClient[base_url='unix://var/run/docker.sock']
    
    30 đến thư mục chứa Dockerfile bắt buộc phải có, hoặc
    import 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 ra
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
    import docker
    client = docker.DockerClient[base_url='unix://var/run/docker.sock']
    
    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']
    
    34
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
    import docker
    client = docker.DockerClient[base_url='unix://var/run/docker.sock']
    
    35, nếu
    import 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ặn
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']
21

Theo 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ện

import docker
client = docker.DockerClient[base_url='unix://var/run/docker.sock']
22

pause

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

Chủ Đề