Vsi vedo, da lahko docker run določi preslikave vrat, vendar ko je kontejner enkrat ustvarjen, ni več ukaza, ki bi ga bilo mogoče neposredno spremeniti. Običajno posredno shranijo sliko in ustvarijo nov kontejner, pri čemer ob ustvarjanju določijo novo mapo vrat.
Ali obstaja način, da spremenim obstoječi kontejner brez shranjevanja slike? Da. Odgovor sem našel na stackoverflow, izvirna objava je naslednja
https://stackoverflow.com/questi ... ng-docker-container
Preslikavam 8080 port rap2-delos kontejnerja na 80 na gostiteljskem računalnikuPort zgoraj, kot je prikazano spodaj:
TakojZdaj želim preslikati 8080 port rap2-delos kontejnerja na 8080 port gostiteljskega računalnikazgoraj.
Vadnica je naslednja
--Stop kontejner
--Zaženi docker inspect [CONTAINER ID] | Ukaz grep ID
--Zaženite ukaz cd /var/lib/docker/containers, da najdete mapo z istim ID-jem, kot je prikazano na spodnji sliki
Stop docker engine service, systemctl stop docker docker
Spremenite konfiguracijsko datoteko hostconfig.json
primer
Vi hostconfig.json Če prej ni bilo preslikave portov, bi moral biti takšen odstavek: "PortBindings":{} Dodajte preslikavo, ki se glasi: "PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3307"}]} Prva številka je kontejnerski port, zadnja pa gostiteljski port.
Po spremembi in shranjevanju konfiguracije končno zaženi docker storitev
SystemCTL zaženi docker
Končano
|