Cách chuyển tiếp cổng trong Docker

Cach Chuyen Tiep Cong Trong Docker



Docker là một nền tảng dockerization phổ biến, giúp neo các ứng dụng và phần mềm trong một môi trường biệt lập được gọi là container. Trong khi thực thi các ứng dụng trong vùng chứa, người dùng thường được yêu cầu truy cập vào ứng dụng được chứa bên ngoài vùng chứa. Với mục đích này, người dùng cần áp dụng kỹ thuật chuyển tiếp cổng.

Chuyển tiếp cổng trong Docker là một quá trình cho phép chúng tôi hiển thị cổng container trên hệ thống máy chủ Docker. Nó cho phép chúng tôi chạy ứng dụng trong một môi trường biệt lập và cũng có thể làm cho nó có thể truy cập được từ bên ngoài vùng chứa trên máy người dùng.

Bài đăng này sẽ chứng minh:







Cách chuyển tiếp cổng trong Docker bằng thẻ “-p” hoặc “–publish”

Để chuyển tiếp một cổng trong Docker, người dùng cần xuất bản cổng container trên máy chủ Docker. Với mục đích này, hãy chạy vùng chứa trên máy chủ docker bằng cách sử dụng lệnh “ -P ' hoặc ' -công bố thẻ ” trong thẻ “ docker chạy ' yêu cầu.



Để trình diễn thích hợp, hãy làm theo các hướng dẫn dưới đây.



Bước 1: Tạo Dockerfile

Đầu tiên, tạo một tệp và đặt tên của nó là “ Dockerfile ”. Tệp này chứa các hướng dẫn bằng văn bản để tạo mẫu của vùng chứa Docker. Ví dụ: hãy dockerize chương trình Golang đơn giản bằng cách sử dụng đoạn mã bên dưới trong Dockerfile:





TỪ golang: 1.8

WORKDIR / đi / src / ứng dụng

SAO CHÉP main2.go .

CHẠY đi xây dựng -O máy chủ web .

PHƠI RA 8080

CMD [ './máy chủ web' ]

Trong đoạn đã cho:

  • TỪ Lệnh ” được sử dụng để đặt hình ảnh cơ sở.
  • WORKDIR ” xác định thư mục làm việc của container.
  • SAO CHÉP Lệnh ” sẽ tạo một bản sao của tệp chương trình trong đường dẫn do vùng chứa chỉ định.
  • CHẠY Lệnh ” sẽ thực thi lệnh được chỉ định trong vùng chứa.
  • PHƠI RA Lệnh ” chỉ định cổng nơi container sẽ được lắng nghe.
  • CMD ” chỉ định các điểm thực thi của vùng chứa.

Bước 2: Tạo chương trình Golang

Tiếp theo, tạo một tệp khác có tên “ main2.go ” và dán chương trình Golang được cung cấp bên dưới để in một chuỗi đơn giản trên cổng “ 8080 ”:



gói chính

nhập khẩu (

'fmt'

'nhật ký'

'mạng/http'

)

xử lý chức năng ( TRONG http.ResponseWriter, r * http.Yêu cầu ) {

html := `

DOCTYPE html >

< html >

< cái đầu >

< tiêu đề > Xin chào Golang ! tiêu đề >

< phong cách >

thân hình {

màu nền: #D2B48C;

}

.thùng đựng hàng {

căn chỉnh văn bản: giữa;

phần đệm: 50px;

}

phong cách >

cái đầu >

< thân hình >

< div lớp học = 'thùng đựng hàng' >

< h1 > Xin chào ! Chào mừng bạn đến với Hướng dẫn LinuxHint h1 >

div >

thân hình >

html >`

w.Tiêu đề ( ) .Bộ ( 'Loại nội dung' , 'văn bản/html' )

fmt.Fprint ( TRONG , html )

}

chức năng chính ( ) {

http.HandleFunc ( '/' , xử lý )

log.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , không ) )

}

Bước 3: Tạo ảnh chụp nhanh của vùng chứa

Bây giờ, hãy tạo ảnh chụp nhanh cho vùng chứa từ Dockerfile được chỉ định ở trên. Với mục đích này, trước tiên, hãy điều hướng đến thư mục nơi Dockerfile được tạo bằng cách sử dụng lệnh “ cd <đường dẫn đến thư mục làm việc> ' yêu cầu:

Tiếp theo, tạo hình ảnh vùng chứa mới bằng lệnh đã cho:

docker xây dựng -t golang-img .

Kết quả đã cho cho thấy hình ảnh được tạo theo ngữ cảnh xây dựng được cung cấp.

Bước 4: Chuyển tiếp cổng máy chủ sang cổng container

Bây giờ, hãy thực thi vùng chứa và chuyển tiếp cổng máy chủ sang cổng vùng chứa để truy cập ứng dụng dockerize bên ngoài vùng chứa trên máy cục bộ. Với mục đích này, hãy chạy “docker run –name -p : ' yêu cầu:

docker chạy --tên tiếp tục -P 8080 : 8080 golang-img

Ở đây, “ -P Cờ ” được sử dụng để xuất bản cổng thực thi container trên máy chủ docker:

Bước 5: Xác minh

Để xác minh, hãy xem các vùng chứa đang chạy bằng cách sử dụng “ docker ps ”:

docker ps

Trong kết quả bên dưới, ứng dụng được chứa trong vùng chứa đang lắng nghe trên các giao diện mạng có sẵn “ 0.0.0.0 ” trên cổng được công bố “ 8080 ”. Nó ngụ ý rằng cổng được chuyển tiếp đến ứng dụng đang chạy trên máy chủ:

Bây giờ, hãy khởi chạy trình duyệt và điều hướng đến “ http://localhost:8080/ ” và xác minh xem kỹ thuật chuyển tiếp cổng có được áp dụng hay không và liệu ứng dụng được chứa trong container có thể truy cập được bên ngoài vùng chứa trên hệ thống máy chủ hay không:

Ở đây chúng ta đã chuyển tiếp thành công cổng máy chủ sang cổng container và ứng dụng có thể truy cập được trên máy chủ docker.

Cách chuyển tiếp cổng trong Docker bằng Docker Compose

Để chuyển tiếp cổng container đến máy chủ để truy cập ứng dụng được chứa trong container từ bên ngoài container, người dùng có thể sử dụng “ Hải cảng ” vào tệp soạn thảo yaml. Docker soạn thảo là một dịch vụ Docker cho phép chúng tôi chạy các dịch vụ và ứng dụng khác nhau trong các vùng chứa khác nhau. Sử dụng ' docker-compose.yml ”, người dùng cũng có thể chuyển tiếp cổng container tới máy chủ và có kết nối ứng dụng với thế giới bên ngoài.

Hãy xem quy trình dưới đây để xem minh họa.

Bước 1: Tạo tệp soạn thảo

Đầu tiên, tạo một tệp có tên “ docker-compose.yml ” và thêm nội dung sau vào tệp:

phiên bản: '3'

dịch vụ:

mạng:

xây dựng: .

cổng:

- 8080 : 8080

Trong đoạn trích trên, “ cổng ” key dùng để kết nối máy chủ với cổng container. Ở đây, giá trị đầu tiên là cổng máy chủ và giá trị thứ hai là cổng container.

Bước 2: Khởi chạy ứng dụng

Sau khi chỉ định các hướng dẫn trong tệp soạn thảo, hãy khởi chạy ứng dụng trong vùng chứa bằng cách sử dụng nút “ docker-soạn lên ' yêu cầu:

docker-soạn lên

Bước 3: Xác minh

Để xác minh, hãy liệt kê các vùng chứa soạn thư bằng cách sử dụng “ docker-compose ps ' yêu cầu:

docker-soạn ps -Một

Để kiểm tra xem vùng chứa có thể truy cập được trên máy chủ hay không, hãy điều hướng đến “ http://localhost:8080/ ” URL. Tại đây, bạn có thể thấy chúng tôi đã chuyển tiếp cổng container trên máy chủ một cách hiệu quả:

Cách chuyển tiếp cổng tới mạng cụ thể

Để chuyển tiếp cổng container đến một mạng cụ thể, người dùng cần chỉ định mạng mà họ muốn truy cập vào container bằng cách sử dụng “ -mạng ' lựa chọn. Nhìn vào các bước nhất định để trình diễn.

Bước 1: Tạo mạng

Tạo một mạng mới bằng cách sử dụng “ mạng docker tạo ' yêu cầu. Theo mặc định, mạng này sẽ sử dụng trình điều khiển cầu nối:

mạng docker tạo mạng mygo

Để xem các mạng Docker, hãy sử dụng “ mạng docker ls ' yêu cầu:

mạng docker ls

Đến đây chúng ta đã tạo thành công “ mạng mygo ” đó là sử dụng “ cầu ' tài xế:

Bước 2: Mạng bản đồ

Để chạy và truy cập vùng chứa trên mạng cụ thể bằng kỹ thuật chuyển tiếp cổng, hãy sử dụng lệnh bên dưới:

docker chạy -P 8080 : 8080 --mạng mygo-mạng golang-img

Trong lệnh đã cho, “ -P Tùy chọn ” xuất bản vùng chứa trên một cổng được chỉ định của mạng được chỉ định. Ở đây, “ -mạng Tùy chọn ” được sử dụng để xác định mạng docker:

Để xác minh, hãy điều hướng lại đến “ http://localhost:8080 ” port và kiểm tra xem container có thể truy cập được trên mạng được chỉ định hay không:

Kết quả đầu ra trên cho thấy rằng chúng tôi đã chuyển tiếp cổng container trên một mạng cụ thể một cách hiệu quả.

Ghi chú: Trong khi sử dụng mạng “máy chủ”, người dùng không cần xuất bản cổng từ vùng chứa sang máy chủ bằng cách sử dụng “ -P ' hoặc ' -công bố ' lựa chọn.

Chuyển tiếp cổng tới mạng cụ thể bằng cách sử dụng Docker Compose

Thêm đoạn mã sau vào phần “ docker-compose.yml ' tài liệu. Trong đoạn trích dưới đây, “ mạng lưới Phím ” được sử dụng để chỉ định mạng:

phiên bản: '3'
dịch vụ:

mạng:
xây dựng: .
cổng:
- 8080 : 8080

Bây giờ, hãy khởi chạy ứng dụng trong vùng chứa bằng cách sử dụng “ docker-soạn lên ' yêu cầu:

docker-soạn lên

Chúng tôi đã đề cập đến các phương pháp chuyển tiếp cổng trong Docker.

Phần kết luận

Để chuyển tiếp cổng trong Docker để truy cập ứng dụng dockerize bên ngoài vùng chứa, người dùng có thể sử dụng lệnh “ -P ' hoặc ' -công bố ” tùy chọn trong “ docker chạy ” hoặc người dùng có thể sử dụng lệnh “ cổng ” trong tệp soạn thảo Docker. Để truy cập vùng chứa trên một mạng cụ thể, người dùng có thể chuyển tiếp cổng vùng chứa trên mạng bằng cách sử dụng lệnh “ –mạng ' lựa chọn. Blog này đã trình diễn các kỹ thuật chuyển tiếp cổng trong Docker.