Ang port forwarding sa Docker ay isang proseso na nagbibigay-daan sa amin na ilantad ang container port sa Docker host system. Ito ay nagpapahintulot sa amin na patakbuhin ang application sa isang nakahiwalay na kapaligiran at gawin din itong naa-access mula sa labas ng lalagyan sa isang user machine.
Ipapakita ng post na ito:
- Paano Ipasa ang Port sa Docker Gamit ang '-p' o '–publish' na Tag
- Paano Ipasa ang Port sa Docker Gamit ang Docker Compose
- Paano Ipasa ang Port sa isang Partikular na Network
- Konklusyon
Paano Ipasa ang Port sa Docker Gamit ang '-p' o '–publish' na Tag
Upang magpasa ng port sa Docker, kailangang i-publish ng user ang container port sa host ng Docker. Para sa layuning ito, patakbuhin ang container sa docker host gamit ang “ -p 'o' –publish 'tag sa ' tumakbo sa pantalan ” utos.
Para sa wastong pagpapakita, sundin ang mga tagubilin sa ibaba.
Hakbang 1: Gumawa ng Dockerfile
Una, lumikha ng isang file at itakda ang pangalan nito bilang ' Dockerfile ”. Ang file na ito ay naglalaman ng mga textual na tagubilin para gawin ang template ng Docker container. Halimbawa, i-dockerize natin ang simpleng Golang program gamit ang snippet sa ibaba sa Dockerfile:
MULA sa golang: 1.8
WORKDIR / pumunta ka / src / app
COPY main2.go .
RUN go build -O webserver .
EXPOSE 8080
CMD [ './webserver' ]
Sa ibinigay na snippet:
- “ MULA SA 'Ang utos ay ginagamit upang itakda ang batayang imahe.
- “ WORKDIR ” ay tumutukoy sa gumaganang direktoryo ng container.
- “ KOPYA Ang command na ” ay gagawa ng kopya ng program file sa path na tinukoy ng container.
- “ TAKBO ” utos ay isasagawa ang tinukoy na utos sa lalagyan.
- “ EXPOSE ” utos ay tumutukoy sa port kung saan ang lalagyan ay pakikinggan.
- “ CMD ” ay tumutukoy sa mga executable point ng container.
Hakbang 2: Gumawa ng Golang Program
Susunod, lumikha ng isa pang file na pinangalanang ' main2.go ” at i-paste ang ibinigay na programang Golang sa ibaba na nagpi-print ng isang simpleng string sa port “ 8080 ”:
pangunahing pakete
angkat (
'fmt'
'log'
'net/http'
)
func handler ( Sa http.ResponseWriter, r * http.Kahilingan ) {
html := `
DOCTYPE html >
< html >
< ulo >
< pamagat > Hello Golang ! pamagat >
< istilo >
katawan {
kulay ng background: #D2B48C;
}
.lalagyan {
text-align: center;
padding: 50px;
}
istilo >
ulo >
< katawan >
< div klase = 'lalagyan' >
< h1 > Kamusta ! Maligayang pagdating sa LinuxHint Tutorial h1 >
div >
katawan >
html >`
w.Header ( ) .Itakda ( 'Uri ng Nilalaman' , 'text/html' )
fmt.Fprint ( Sa , html )
}
func main ( ) {
http.HandleFunc ( '/' , handler )
log.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , wala ) )
}
Hakbang 3: Bumuo ng Snapshot ng Container
Ngayon, bumuo ng snapshot para sa lalagyan mula sa tinukoy na Dockerfile sa itaas. Para sa layuning ito, una, mag-navigate sa direktoryo kung saan nilikha ang Dockerfile gamit ang ' cd
Susunod, bumuo ng bagong imahe ng lalagyan gamit ang ibinigay na command:
pagtatayo ng docker -t golang-img .
Ang ibinigay na resulta ay nagpapakita na ang imahe ay nilikha ayon sa ibinigay na konteksto ng build.
Hakbang 4: Ipasa ang Host Port sa Container Port
Ngayon, i-execute ang container at ipasa ang host port sa container port para ma-access ang dockerize app sa labas ng container sa isang lokal na makina. Para sa layuning ito, patakbuhin ang “docker run –name
Dito, ang ' -p ” na flag ay ginagamit upang i-publish ang container na nagpapatupad ng port sa docker host:
Hakbang 5: Pag-verify
Para sa pag-verify, tingnan ang mga tumatakbong container gamit ang ' docker ps ”:
docker psSa resulta sa ibaba, ang containerized na application ay nakikinig sa mga available na interface ng network ' 0.0.0.0 'sa nai-publish na port' 8080 ”. Ipinahihiwatig nito na ang port ay ipinapasa sa tumatakbong aplikasyon sa host machine:
Ngayon, ilunsad ang browser at mag-navigate sa “ http://localhost:8080/ ” at i-verify kung ang diskarte sa pag-forward ng port ay inilapat o hindi at kung ang containerized na application ay naa-access sa labas ng container sa host system:
Dito, matagumpay naming naipasa ang host port sa container port at ang application ay naa-access sa docker host.
Paano Ipasa ang Port sa Docker Gamit ang Docker Compose
Para ipasa ang container port sa host para ma-access ang containerized application mula sa labas ng container, magagamit ng user ang ' daungan ” key sa compose yaml file. Ang Docker compose ay isang serbisyo ng Docker na nagbibigay-daan sa amin na magpatakbo ng iba't ibang serbisyo at application sa iba't ibang container. Gamit ang ' docker-compose.yml ” file, maaari ding ipasa ng user ang container port sa host machine at magkaroon ng koneksyon ng application sa labas ng mundo.
Tingnan ang pamamaraan sa ibaba para sa mga guhit.
Hakbang 1: Gumawa ng Compose File
Una, bumuo ng isang file na pinangalanang ' docker-compose.yml ” file at idagdag ang sumusunod na nilalaman sa file:
bersyon: '3'mga serbisyo:
web:
bumuo: .
mga port:
- 8080 : 8080
Sa snippet sa itaas, ang ' mga daungan ” key ay ginagamit para ikonekta ang host sa container port. Dito, ang unang value ay ang host port, at ang pangalawang value ay ang container port.
Hakbang 2: Ilunsad ang App
Pagkatapos tukuyin ang mga tagubilin sa compose file, ilunsad ang application sa isang container gamit ang ' docker-compose up ” utos:
docker-compose up
Hakbang 3: Pag-verify
Para sa pag-verify, ilista ang mga compose container gamit ang “ docker-compose ps ” utos:
docker-compose ps -a
Upang tingnan kung ang lalagyan ay naa-access sa host machine, mag-navigate sa “ http://localhost:8080/ ” URL. Dito, makikita mong epektibo naming naipasa ang container port sa host:
Paano Ipasa ang Port sa Partikular na Network
Upang magpasa ng container port sa isang partikular na network, kailangang tukuyin ng user ang network kung saan nila gustong i-access ang container gamit ang ' – network ” opsyon. Tingnan ang ibinigay na mga hakbang para sa pagpapakita.
Hakbang 1: Gumawa ng Network
Gumawa ng bagong network gamit ang “ gumawa ng network ng docker ng
Upang tingnan ang mga network ng Docker, gamitin ang ' docker network ls ” utos:
network ng docker lsDito, matagumpay naming nagawa ang ' mygo-network 'gumagamit yan' tulay ' driver:
Hakbang 2: Map Network
Upang patakbuhin at i-access ang lalagyan sa partikular na network gamit ang diskarte sa pagpapasa ng port, gamitin ang command sa ibaba:
tumakbo sa pantalan -p 8080 : 8080 --network mygo-network golang-imgSa ibinigay na utos, ang ' -p ” na opsyon ay nagpa-publish ng lalagyan sa isang tinukoy na port ng tinukoy na network. Dito, ang ' – network 'Ang opsyon ay ginagamit upang tukuyin ang docker network:
Para sa pag-verify, muling mag-navigate sa ' http://localhost:8080 ” port at tingnan kung naa-access ang container sa tinukoy na network o hindi:
Ang output sa itaas ay nagpapahiwatig na epektibo naming naipasa ang container port sa isang partikular na network.
Tandaan: Habang ginagamit ang network na 'host', hindi kailangang i-publish ng user ang port mula sa container patungo sa host gamit ang ' -p 'o' –publish ” opsyon.
Ipasa ang Port sa Partikular na Network Gamit ang Docker Compose
Idagdag ang sumusunod na snippet sa “ docker-compose.yml ” file. Sa snippet sa ibaba, ang ' mga network ” key ay ginagamit upang tukuyin ang network:
bersyon: '3'mga serbisyo:
web:
bumuo: .
mga port:
- 8080 : 8080
Ngayon, ilunsad ang application sa isang lalagyan gamit ang “ docker-compose up ” utos:
docker-compose up
Sinakop namin ang mga pamamaraan para sa pagpapasa ng port sa Docker.
Konklusyon
Upang ipasa ang port sa Docker para sa pag-access sa dockerize application sa labas ng container, maaaring gamitin ng user ang ' -p 'o' –publish 'opsyon sa ' tumakbo sa pantalan ” utos o maaaring gamitin ng user ang “ mga daungan ” key sa Docker compose file. Upang ma-access ang container sa isang partikular na network, maaaring ipasa ng user ang container port sa isang network sa pamamagitan ng paggamit ng “ –network