මම ඩොකර් බහාලුම් කවචයට ඇතුල් වන්නේ කෙසේද?


1207

මම ඩොකර් සමඟ වැඩ කිරීමට පටන් ගනිමි. මම වර්ඩ්ප්‍රෙස් පාදක රූපය භාවිතා කර ඩොකර්-රචනා කරමි.

ආරම්භක ගොඩනැගීමේදී නිර්මාණය කරන ලද ලිපිගොනු / නාමාවලි පරීක්ෂා කිරීම සඳහා මම එක් බහාලුමක් තුළට කඩා දැමීමට උත්සාහ කරමි. මම දුවන්න උත්සාහ කළ docker-compose run containername ls -laනමුත් එය කිසිවක් කළේ නැත. එය එසේ වුවද, මට එක විධානයක් ක්‍රියාත්මක කරනවාට වඩා ඩිරෙක්ටරි ව්‍යුහය හරහා ගමන් කළ හැකි කොන්සෝලයක් තිබේ. ඩෝකර් සමඟ මෙය කිරීමට නිවැරදි ක්‍රමය කුමක්ද?


එබැවින් එය ඩොකර් ඇමිණුම ලෙස පෙනේ. නමුත් ඩොකර්-රචනා කිරීමෙන් මම එය ලබා ගන්නේ කෙසේද?
ඇන්ඩෲ

3
docker exec Askubuntu.com/a/543057/35816 භාවිතා කරන්න . භාවිතයෙන් බහාලුම් හැඳුනුම්පත ලබා ගන්නdocker ps
මොරිසියෝ ෂෙෆර්

28
sudo docker run -it --entrypoint /bin/bash <container_name>ඔබව අන්තර්ක්‍රියාකාරීව කන්ටේනරය තුළට ගෙන යයි. එවිට යමෙකුට කන්ටේනරයේ ඇති ගොනු පද්ධතිය පරීක්ෂා කර බැලිය හැකියcd <path>
සර්ජි

Answers:


1798

docker attachඔබගේ ඩෝකර් බහාලුමට සම්බන්ධ වීමට ඔබට ඉඩ සලසයි, නමුත් මෙය ඇත්ත වශයෙන්ම සමාන නොවේ ssh. ඔබේ බහාලුම වෙබ් සේවාදායකයක් ධාවනය කරන්නේ නම්, උදාහරණයක් ලෙස, වෙබ් සේවාදායක ක්‍රියාවලියේ ස්ථායිතාවයටdocker attach ඔබව සම්බන්ධ කරනු ඇත . එය ඔබට කවචයක් ලබා නොදෙනු ඇත.

මෙම docker execවිධානය මඟින් ඔබ සොයන දේ බොහෝ විට ය; පවතින භාජනයක අත්තනෝමතික විධානයන් ක්‍රියාත්මක කිරීමට මෙය ඔබට ඉඩ සලසයි. උදාහරණයක් වශයෙන්:

docker exec -it <mycontainer> bash

ඇත්ත වශයෙන්ම, ඔබ ක්‍රියාත්මක කරන ඕනෑම විධානයක් බහාලුම් ගොනු පද්ධතියේ තිබිය යුතුය.

ඉහත විධානයෙහි <mycontainer>ඉලක්කගත බහාලුමේ නම හෝ හැඳුනුම්පත ඇත. ඔබ භාවිතා කරනවාද නැද්ද යන්න ගැටළුවක් නොවේ docker compose; හුදෙක් ක්රියාත්මක docker psමෙම හැඳුනුම්පත (අ ෂඩ් දශම string පළමු තීරුව ප්රදර්ශනය) හෝ (අවසාන තීරුව ප්රදර්ශනය) නම එක්කෝ හා භාවිතය. උදා: ලබා දී ඇත:

$ docker ps
d2d4a89aaee9        larsks/mini-httpd   "mini_httpd -d /cont   7 days ago          Up 7 days                               web                 

මට දුවන්න පුළුවන්:

$ docker exec -it web ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
18: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:3/64 scope link 
       valid_lft forever preferred_lft forever

ධාවනය කිරීමෙන් මට එකම දේ කළ හැකිය:

$ docker exec -it d2d4a89aaee9 ip addr

ඒ හා සමානව, මට කන්ටේනරයේ කවචයක් ආරම්භ කළ හැකිය;

$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$

84
එසේම, docker execක්රියාත්මක වන බහාලුම් මත පමණක් ක්රියා කරයි (වෙනත් ආකාරයකින් භාවිතා කරන්න docker run -it --entrypoint /bin/bashහෝ ඒ හා සමාන).
L0j1k

62
ඔබගේ පහසුව සඳහා, -itසංයෝජනයක් වේ -iහා -tවන වන --interactiveපිළිවෙළින් ( "සම්බන්ධ නැති වුවද විවෘත STDIN තබා ගන්න") --tty( "ව්යාජ TTY වෙන්").
ඒඩ්‍රියන් ෆෙඩර්

26
ඇල්පයින් ලිනක්ස් මත පදනම් වූ බහාලුම්වල ඔබට බාෂ් නොමැති විය හැක, එසේ නම්, ඒ වෙනුවට sh භාවිතා කරන්න.
රොබින් ග්‍රීන්

10
0 L0j1k යනු docker run -it --entrypoint /bin/bash <imageid> --any --more --argsමිනිසුන් සඳහා පැහැදිලි කිරීම පමණි
ඇලෙක්සැන්ඩර් මිල්ස්

2
Lex ඇලෙක්සැන්ඩර්මිල්ස් ඔව්, තව දුරටත් පැහැදිලි කර ගැනීම සඳහා, --any --more --argsඔබ සතුව ඇති රූපය CMDඩොකර් නොව අර්ථ දක්වා ඇති ඕනෑම දෙයකට පෝෂණය කරනු ලැබේ (හෝ ඔබේ රූපය නිර්වචනය කර ඇත්තේ ENTRYPOINTසහ නැත යන්න පමණක් නම්, ඔබ මෙහි දක්වා ඇති පරිදි CMDමෙම විකල්පයන් පෝෂණය වේ. /bin/bash). උදාහරණයක් ලෙස වෙනත් docker runවිකල්ප (උදා --net "host") ට පෙර යා යුතුය <imageid>.
L0j1k

310

ධාවනය වන භාජනයකට තල්ලු කිරීමට, මෙය ටයිප් කරන්න:

docker exec -t -i container_name /bin/bash

හෝ

docker exec -ti container_name /bin/bash

හෝ

docker exec -ti container_name sh

එය ලිනක්ස් බහාලුමක් යැයි උපකල්පනය කිරීම?
පීටර් මෝර්ටෙන්සන්

6
/ bin / bash අවශ්‍ය නොවීය මා වෙනුවෙන් එය කළා
ආනන්ද් වර්කි පිලිප්ස්

7
මම ඒ docker exec -itවෙනුවට කැමතියිdocker exec -t -i
VaTo

වෙනස කුමක්ද @VaTo
AATHITH RAJENDRAN

ATAATHITHRAJENDRANI ධජ දෙකක් තිබීම වෙනුවට කෙටි විධානයකට වැඩි කැමැත්තක් දක්වයි, ඔබට එම විකල්ප දෙක එකම තර්කයට ඇතුළත් කළ හැකිය - එය.
VaTo

86

අපි කියමු, ඔබේම හේතු නිසා, ඔබට ඇත්ත වශයෙන්ම SSH භාවිතා කිරීමට අවශ්‍යය. එය පියවර කිහිපයක් ගත වේ, නමුත් එය කළ හැකිය. මෙන්න ඔබ එය සැකසීමට කන්ටේනරය තුළ ධාවනය කරන විධානයන් ...

apt-get update
apt-get install openssh-server

mkdir /var/run/sshd
chmod 0755 /var/run/sshd
/usr/sbin/sshd

useradd --create-home --shell /bin/bash --groups sudo username ## includes 'sudo'
passwd username ## Enter a password

apt-get install x11-apps ## X11 demo applications (optional)
ifconfig | awk '/inet addr/{print substr($2,6)}' ## Display IP address (optional)

දැන් ඔබට SSH සේවාදායකයා වෙත X11 යොමු කිරීම භාවිතා කරමින් චිත්‍රක යෙදුම් (ඒවා කන්ටේනරයේ ස්ථාපනය කර ඇත්නම්) ධාවනය කළ හැකිය:

ssh -X username@IPADDRESS
xeyes ## run an X11 demo app in the client

අදාළ සම්පත් කිහිපයක් මෙන්න:


35

ඔබ මා වැනි ඩොකර් රචනා-විශේෂිත පිළිතුරක් සොයන්නේ නම්, එය ජනනය කළ බහාලුම් හැඳුනුම්පත සොයා නොගෙන පහසු ක්‍රමයක් සපයයි.

docker-compose execඔබගේ docker-compose.ymlගොනුවට අනුව සේවාවේ නම ගනී .

එබැවින් ඔබේ 'වෙබ්' සේවාව සඳහා බෑෂ් කවචයක් ලබා ගැනීමට ඔබට කළ හැක්කේ:

$ docker-compose exec web bash

docker-compose runඔබේ බහාලුම තවම නොපවතී නම්, එසේම ක්‍රියා කරයි.
පෝල්

23

සටහන : මෙම පිළිතුර මා ලියා ඇති මෙවලමක් ප්‍රවර්ධනය කරයි.

ඕනෑම කන්ටේනරයකට 'ඇලවිය හැකි' මම බහාලුම් කළ SSH සේවාදායකයක් නිර්මාණය කර ඇත්තෙමි. මේ ආකාරයෙන් ඔබට සෑම බහාලුමක් සමඟම සංයුති නිර්මාණය කළ හැකිය. එකම අවශ්‍යතාවය වන්නේ කන්ටේනරයේ බෑෂ් තිබීමයි.

පහත උදාහරණයෙන් 'මගේ බහාලුම්' නමින් කන්ටේනරයකට අමුණා ඇති SSH සේවාදායකයක් ආරම්භ වේ.

docker run -d -p 2222:22 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e CONTAINER=my-container -e AUTH_MECHANISM=noAuth \
  jeroenpeeters/docker-ssh

ssh localhost -p 2222

ඔබ මෙම SSH සේවාවට සම්බන්ධ වන විට (ඔබේ තේරීමේ SSH සේවාදායකයා සමඟ) 'my-container' යන නම සහිත කන්ටේනරයේ Bash සැසියක් ආරම්භ වේ.

වැඩි දර්ශක සහ ලියකියවිලි සඳහා බලන්න: https://github.com/jeroenpeeters/docker-ssh


1
ඒක හරිම මිහිරි. මේ ආකාරයෙන් එය කිරීමේ විශාල වාසිය නම් ඔබ සම්පූර්ණයෙන්ම ක්‍රියාකාරී පර්යන්තයක් ලබා ගැනීමයි. මම "ඩොකර් ක්‍රියාත්මක" ප්‍රවේශය භාවිතා කරන විට මට ටර්මිනල් අන්තර්ගතය ඉවත් කිරීමට නොහැකි විය, lessමම එය ක්‍රියාත්මක කරන සෑම අවස්ථාවකම අනතුරු ඇඟවීමක් පෙන්වමින් සිටියෙමි. ජෙරොයින්ගේ කන්ටේනරය භාවිතා කිරීම මට මෙතෙක් වඩා හොඳ අත්දැකීමක් ලබා දෙයි. වග බලා ගන්නප්‍රලේඛනය පරීක්ෂා . ප්‍රතිචාරයේ නියැදි විධානය තවදුරටත් වලංගු නොවන බව පෙනේ.
Rafał G.

1
එය විශිෂ්ට මෙවලමකි. ඔබ එය ජෙන්කින්ස් නල මාර්ග ඩොකර් නියෝජිතයෙකු ලෙස භාවිතා කරන්නේ කෙසේදැයි ඔබ දන්නවාද? SCP විසින් සමහර ගොනු දුරස්ථ ධාරකයකට මාරු කර SSH සමඟ ක්‍රියාත්මක කිරීමට මට ජෙන්කින්ස් අවශ්‍යයි
ගිල්සන්

21

ඔබ වින්ඩෝස් හි ඩෝකර් භාවිතා කරන්නේ නම් සහ කන්ටේනරයකට ෂෙල් ප්‍රවේශය ලබා ගැනීමට අවශ්‍ය නම්, මෙය භාවිතා කරන්න:

winpty docker exec -it <container_id> sh

බොහෝ දුරට, ඔබ දැනටමත් Git Bash ස්ථාපනය කර ඇත. ඔබ එසේ නොකරන්නේ නම්, එය ස්ථාපනය කිරීමට වග බලා ගන්න.


1
ලිනක්ස් ඩෝකර් බහාලුමක් අනුමාන කරයිද?
පීටර් මෝර්ටෙන්සන්

19

කන්ටේනරය දැනටමත් පිටවී ඇත්නම් (සමහර විට යම් දෝෂයක් නිසා), ඔබට එය කළ හැකිය

$ docker run --rm -it --entrypoint /bin/ash image_name

හෝ

$ docker run --rm -it --entrypoint /bin/sh image_name

හෝ

$ docker run --rm -it --entrypoint /bin/bash image_name

නව බහාලුමක් සාදා එය තුළට කවචයක් ලබා ගැනීමට. ඔබ --rm නියම කර ඇති බැවින්, ඔබ කවචයෙන් පිටවන විට කන්ටේනරය මකා දැමෙනු ඇත.


16

සමහර අවස්ථාවලදී ඔබේ රූපය ඇල්පයින් මත පදනම් විය හැකිය. මෙම අවස්ථාවේ දී එය විසි කරනු ඇත:

OCI ධාවන කාල ක්‍රියාත්මක කිරීම අසාර්ථක විය: ක්‍රියාත්මක කිරීම අසාර්ථක විය: container_linux.go: 348: ආරම්භක බහාලුම් ක්‍රියාවලිය "exec: \" bash \ "වලට හේතු විය: ක්‍රියාත්මක කළ හැකි ගොනුව $ PATH" හි නොමැත: නොදන්නා

නිසා /bin/bashනොපවතියි. මේ වෙනුවට ඔබ භාවිතා කළ යුත්තේ:

docker exec -it 9f7d99aa6625 ash

හෝ

docker exec -it 9f7d99aa6625 sh

15

මෙම විධානය භාවිතා කරමින් ඩොකර් බහාලුමක් තුළට SSH කරන්න:

sudo docker exec -i -t (container ID) bash

12

වින්ඩෝස් භාජනයක cmd හා සම්බන්ධ වීමට, භාවිතා කරන්න

docker exec -it d8c25fde2769 cmd

එහිදී d8c25fde2769 යනු බහාලුම් හැඳුනුම්පතයි.


11

එය සරලයි !

ඔබගේ සියලුම ඩෝකර් පින්තූර ලැයිස්තුගත කරන්න:

sudo docker images

මගේ පද්ධතියේ එය පහත ප්‍රතිදානය පෙන්වයි:

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
bash                latest              922b9cc3ea5e        9 hours ago
14.03 MB
ubuntu              latest              7feff7652c69        5 weeks ago         81.15 MB

මගේ පරිගණකයේ ඩොකර් රූප දෙකක් තිබේ. මම කියමු මට පළමු එක ධාවනය කිරීමට අවශ්‍යයි.

sudo docker run -i -t ubuntu:latest /bin/bash

මෙය ඔබට කන්ටේනරයේ පර්යන්ත පාලනය ලබා දෙනු ඇත. දැන් ඔබට කන්ටේනරය තුළ සියලු වර්ගවල ෂෙල් මෙහෙයුම් කළ හැකිය. එසේ lsකිරීම ගොනු පද්ධතියේ මූලයේ ඇති සියලුම ෆෝල්ඩර ප්‍රතිදානය කරයි.

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

11

විසඳුම යන්න

goinsideවිධාන රේඛා මෙවලම සමඟ ස්ථාපනය කරන්න:

sudo npm install -g goinside

නිසි පර්යන්ත ප්‍රමාණයක් සහිත ඩොකර් බහාලුමක් තුළට යන්න:

goinside docker_container_name

පැරණි පිළිතුර

අපි මෙම ස්නිපටය දමා ඇත ~/.profile:

goinside(){
    docker exec -it $1 bash -c "stty cols $COLUMNS rows $LINES && bash";
}
export -f goinside

මෙය සෑම කෙනෙකුටම ධාවන බහාලුමක් තුළට ඇතුළු වීමට හැකි වනවා පමණක් නොව:

goinside containername

ස්ථාවර ඩෝකර් බහාලුම් පර්යන්ත ප්‍රමාණ පිළිබඳ දීර් problem කාලීන ගැටලුවක් ද එය විසඳයි . ඔබ එයට මුහුණ දෙන්නේ නම් එය ඉතා කරදරකාරී වේ.

ඔබ සබැඳිය අනුගමනය කරන්නේ නම්, ඔබේ ඩොකර් බහාලුම් නම් සඳහා ද විධාන සම්පුර්ණ වේ.


1
ස්තූතියි. අවම වශයෙන් දැනටමත් ඇතුළත් කර ඇති රූප සඳහා එය චාම් එකක් මෙන් ක්‍රියා කරයි. ඇල්පයින් පාදක කරගත් රූප සඳහා ක්‍රියා නොකරනු ඇත, කෙසේ වෙතත්, ෂ / අළු ආදිය සඳහා විශේෂයෙන් ලියා ඇති වෙනස් ශ්‍රිතයක් සමඟ සවි කළ හැකිය
ගෞරව් භාස්කර්

11

ලිපිගොනු පරීක්ෂා docker run -it <image> /bin/shකිරීම සඳහා, අන්තර්ක්‍රියාකාරී පර්යන්තයක් ලබා ගැනීමට ධාවනය කරන්න. රූප ලැයිස්තුව ලබා ගත හැක්කේ docker images. docker execරූපයක් ආරම්භ නොවූ විට (හෝ ධාවනය වූ වහාම ඉවත්ව යන විට) මෙම විසඳුමට පටහැනිව ක්‍රියා කරයි.


ලිනක්ස් ඩෝකර් රූපයක් අනුමාන කරනවාද?
පීටර් මෝර්ටෙන්සන්

8
$ docker exec -it <Container-Id> /bin/bash

නැතහොත් කවචය මත පදනම්ව එය විය හැකිය

$ docker exec -it <Container-Id> /bin/sh

ඔබට විධානය හරහා බහාලුම්-අයිඩී ලබා ගත හැකියdocker ps

-i = අන්තර්ක්‍රියාකාරී

-t = psuedo-TTY වෙන් කිරීමට


8

බහාලුම් පර්යන්තයට පහසුවෙන් ප්‍රවේශ වීම සඳහා මම ටර්මිනල් ශ්‍රිතයක් නිර්මාණය කර ඇත්තෙමි. සමහර විට එය ඔබටත් ප්‍රයෝජනවත් වේ:

එබැවින් ප්‍රති type ලය වන්නේ ටයිප් කිරීම වෙනුවට:

docker exec -it [container_id] /bin/bash

ඔබ ලියනු ඇත:

dbash [container_id]

පහත සඳහන් දෑ ඔබගේ ~ / .bash_profile (හෝ ඔබ වෙනුවෙන් වැඩ කරන වෙනත් ඕනෑම දෙයක්) තුළ තබන්න, ඉන්පසු නව පර්යන්ත කවුළුවක් විවෘත කර කෙටිමඟ භුක්ති විඳින්න:

#usage: dbash [container_id]
dbash() {
    docker exec -it "$1" /bin/bash
}

7

-ti විකල්පය සම්මත කිරීමෙන් ඔබට ඩොකර් බහාලුම්වල ඇති පර්යන්තය සමඟ අන්තර් ක්‍රියා කළ හැකිය

docker run --rm -ti <image-name>
eg: docker run --rm -ti ubuntu

-t යන්නෙන් ටර්මිනලය - i යනු අන්තර්ක්‍රියාකාරී වේ


6

docker execඅනිවාර්යයෙන්ම විසඳුමක් වනු ඇත. ඔබ ඇසූ ප්‍රශ්නය සමඟ වැඩ කිරීමට පහසු ක්‍රමයක් නම් ඩෝකර් තුළ ඇති නාමාවලිය දේශීය පද්ධතියේ නාමාවලියට සවි කිරීමයි .

එවිට ඔබට දේශීය මාර්ගයේ වෙනස්කම් ක්ෂණිකව නැරඹිය හැකිය.

docker run -v /Users/<path>:/<container path> 

1
ඔබේ විධානය ඇත්ත වශයෙන්ම ධාරකයේ නාමාවලිය බහාලුමට සවි කරයි.
ඩිමන්බේන්

ඔව්! වෙනත් බහලුමකට උපස්ථයක් ගෙන පසුව ශබ්දය සවි කරන්න, පසුව උපස්ථය සවිකර ඇති ෆෝල්ඩරයට ගෙන යන්න.
ප්‍රතික්

6

භාවිත:

docker attach <container name/id here>

අනෙක් ක්‍රමය, එයට අනතුරක් තිබුණද, භාවිතා කිරීමයි attach, නමුත් ඔබ Ctrl+ Cසැසිවාරයෙන් පිටවීමට නම්, ඔබ ද කන්ටේනරය නවත්වනු ඇත. ඔබට සිදුවන්නේ කුමක්දැයි බැලීමට අවශ්‍ය නම් භාවිතා කරන්න docker logs -f.

:~$ docker attach --help
Usage:  docker attach [OPTIONS] CONTAINER

Attach to a running container

Options:
      --detach-keys string   Override the key sequence for detaching a container
      --help                 Print usage
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)


4

ඔබ සමඟ ඩෝකර් ස්ථාපනය කර ඇත්නම් Kitematic, ඔබට GUI භාවිතා කළ හැකිය. Kitematicඩෝකර් නිරූපකයෙන් විවෘත කර Kitematicකවුළුව තුළ ඔබේ බහාලුම තෝරන්න, ඉන්පසු execඅයිකනය මත ක්ලික් කරන්න .

මෙම GUI තුළ ද ඔබට බහාලුම් ලොගය සහ බහාලුම් තොරතුරු (සැකසුම් පටිත්තෙහි) දැකිය හැකිය.

මෙනුවෙන් Kitematic තෝරන්න

Exec මත ක්ලික් කරන්න


3

නම් කර ඇති ධාවන භාජනයකට ක්‍රියාත්මක testකිරීම සඳහා පහත දැක්වෙන විධානයන් පහත දැක්වේ

කන්ටේනරය bashෂෙල් තිබේ නම්

docker exec -it test /bin/bash

කන්ටේනරයේ bourneෂෙල් තිබේ නම් සහ බොහෝ අවස්ථාවන්හි එය පවතී

docker run -it test /bin/sh

2

මගේ නඩුවේදී, කිසියම් හේතුවක් නිසා (ය) එක් එක් බහාලුම්වල ඇති සියලුම ජාල සම්බන්ධ තොරතුරු පරීක්ෂා කිරීමට මට අවශ්‍යය. එබැවින් පහත දැක්වෙන විධානයන් බහාලුමක් තුළ වලංගු විය යුතුය ...

ip
route
netstat
ps
...

මම මේ සියලු පිළිතුරු පරීක්ෂා කර බැලුවෙමි, කිසිවක් මට ප්‍රයෝජනවත් නොවීය. මම වෙනත් වෙබ් අඩවි වල තොරතුරු සෙව්වෙමි. එය ඉංග්‍රීසියෙන් ලියා නැති නිසා මම මෙහි සුපිරි සබැඳියක් එක් නොකරමි. ඒ නිසා මම මේ ලිපිය ඉදිරිපත් කළේ මා හා සමාන අවශ්‍යතා ඇති පුද්ගලයින් සඳහා සාරාංශ විසඳුමක් සමඟිනි.

ඔබට ලයිට්-ටෙස්ට් නමින් එක් ධාවන බහාලුමක් ඇති බව පවසන්න. පහත පියවර අනුගමනය කරන්න.

  • docker inspect light-test -f {{.NetworkSettings.SandboxKey}}. මෙම විධානයට පිළිතුරු ලැබෙනු ඇත /var/run/docker/netns/xxxx.
  • එවිට ln -s /var/run/docker/netns/xxxx /var/run/netns/xxxx. නාමාවලිය නොපවතින, කරන්නmkdir /var/run/netns පළමුව කරන්න.
  • දැන් ඔබට ip netns exec xxxx ip addr showබහාලුම්වල ජාල ලෝකය ගවේෂණය කිරීමට ක්‍රියාත්මක කළ හැකිය .

පීඑස්. xxxxසෑම විටම පළමු විධානයෙන් ලැබෙන අගයම වේ. ඇත්ත වශයෙන්ම, වෙනත් ඕනෑම විධානයන් වලංගු වේ, එනම් ip netns exec xxxx netstat -antp|grep 8080.


1

තවත් විකල්පයක් වන්නේ nsenter භාවිතා කිරීමයි .

PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter --target $PID --mount --uts --ipc --net --pid

2
සමඟ ගැටළු ගණනාවක් තිබේ nsenter. පළමුවැන්න නම්, ඔබට ඩොකර් ධාරකයට භෞතික ප්‍රවේශයක් අවශ්‍ය වන අතර එය ලබා දී නොමැති (ඔබ දුරස්ථ ඩොකර් ඒපීඅයි සමඟ වැඩ කරමින් සිටිය හැක). එසේම, nsenterඩෝකර් විසින් පනවා ඇති ආරක්ෂණ හා සම්පත් සීමාවන් කිහිපයකින් ඔබව නිදහස් කරයි (එය ඔබේ පරිසරය අනුව ගැති හෝ සම්මුතියක් විය හැකිය).
ලාර්ක්ස්

1
Nsenter හි කතුවරයා පවා පවසන්නේdocker exec මේ දිනවල භාවිතා කරන ලෙසයි .
L0j1k

1
ඔව්, දෙදෙනාම තමන්ගේම ප්‍රතිලාභ ඇත. නිදසුනක් ලෙස, මෙය nsenter over හි වාසියකි docker exec. docker execමට වඩා අලංකාරයි වගේ.
xuhdev

2
0 L0j1k අවුල් සහගත වීමට නම්: ඔබ සඳහන් කළ තනතුර nsenter හි කර්තෘ විසින් නොව, nsenter ධාවනය වන ඩොකර් රූපයක කතුවරයා ය.
xuhdev

1

ඔබ ඩෝකර් රචනා භාවිතා කරන්නේ නම් මෙය ඔබව ඩෝකර් බහාලුමක් තුළට ගෙන යනු ඇත.

docker-compose run container_name /bin/bash

කන්ටේනරය තුළ එය ඔබව ඩොකර්ෆයිල් හි අර්ථ දක්වා ඇති WORKDIR වෙත ගෙන යනු ඇත. ඔබට ඔබගේ වැඩ නාමාවලිය වෙනස් කළ හැකිය

WORKDIR directory_path # E.g  /usr/src -> container's path

0

ඉලක්කය අනුව අවම වශයෙන් විකල්ප 2 ක් ඇත.

විකල්ප 1: නව බාෂ් ක්‍රියාවලියක් සාදා එයට සම්බන්ධ වන්න (පහසු)

  • නියැදි ආරම්භය: docker exec -it <containername> /bin/bash
  • ඉවත්වීම: වර්ගය exit
  • Pro: සියලුම බහාලුම්වල ක්‍රියා කරයිද (CMD / Entrypoint මත පදනම්ව නොවේ)
  • Contra: තමන්ගේම සැසියක් සහ පරිසරය සමඟ නව ක්‍රියාවලියක් නිර්මාණය කරයි

විකල්ප 2: දැනටමත් ක්‍රියාත්මක වන බෑෂ් එකට අමුණන්න (වඩා හොඳ)

  • නියැදි ආරම්භය: docker attach --detach-keys ctrl-d <containername>
  • ඉවත්ව යන්න: යතුරු භාවිතා කරන්න ctrlසහd
  • ප්‍රෝ: කන්ටේනරයේ ඇති එකම ධාවන පථයට සම්බන්ධ වේ. ඔබට සැසිය හා එකම පරිසරය ඇත.
  • කොන්ට්රා: CMD / Entrypoint වැනි අන්තර් bash නම් පමණක් ක්රියා CMD ["/bin/bash"]හෝ CMD ["/bin/bash", "--init-file", "myfile.sh"] සහ රුවනයකි වැනි අන්තර් විකල්ප සමග ආරම්භ කර තිබේ නම්, docker run -itd <image>(-i = ක්රියාකාරී, -t = tty වෙත හා -d = deamon [ඉවත්])

විකල්ප 2 වඩාත් ප්‍රයෝජනවත් බව අපට පෙනී ගියේය. උදාහරණයක් ලෙස අපි apache2-foregroundසාමාන්‍ය පසුබිමකට වෙනස් වී පසුව apache2ආරම්භ කළෙමු bash.


-3

ඩොකර්-රචනා කිරීම සඳහා (Docker4Drupal)

docker-compose exec php bash

මම ලිනක්ස් ලැප්ටොප් එකක Drupal සඳහා ඩොකර් භාවිතා කරමි . කන්ටේනරය ධාවනය කිරීමෙන් පසු මම කන්ටේනරය docker-compose exec php bashසමඟ සම්බන්ධ වීමට ' ' භාවිතා කරමි, එවිට මට ඩ්‍රෂ් කමාන්ඩෝ ධාවනය කළ හැකිය. එය මට හොඳින් ක්‍රියාත්මක වේ.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.