Interaktyvus korpusas su „Docker“

Ar yra būdas paleisti interaktyvų apvalkalą konteineryje naudojant tik „Docker Compose“? Bandžiau kažką panašaus į savo „docker-compose.yml“:

 myapp: image: alpine:latest entrypoint: /bin/sh 

Kai paleidžiu šią talpyklą, naudodamas doko išdėstymą, jis bus išleistas iš karto. Ar yra kokių nors vėliavų, kurias galiu pridėti prie komandų taško, arba kaip papildomą parametrą, skirtą „myapp“, kad būtų paleistas kaip interaktyvus apvalkalas?

Žinau, kad šiam tikslui yra savininkai, turintys „dockers“ komandos parametrus, tik įdomu, ar galite naudoti tik „Docker Compose“.

118
27 марта '16 в 19:25 2016-03-27 19:25 drubb yra nustatytas kovo 27 d . 16, 19:25 2016-03-27 19:25
@ 6 atsakymai

Docker-compose.yml faile turite įtraukti šias eilutes:

 stdin_open: true tty: true 

Pirmasis atitinka -i docker run , o antrasis - iki.

161
25 авг. atsakymas pateikiamas leon.valencia 25 rug . 2016-08-25 19:09 '16 at 19:09 2016-08-25 19:09

Kanoninis būdas gauti interaktyvų apvalkalą naudojant „ docker-compose run --rm myapp yra naudoti: „ docker-compose run --rm myapp

Jūs galite nustatyti stdin_open: true, tty: true , tačiau tai iš tiesų jums neteiks teisingo apvalkalo, nes žurnalai bus perkelti iš visų konteinerių.

Taip pat galite naudoti

border=0
 docker exec -ti <container name> /bin/bash 

gauti apvalkalą ant veikiančio konteinerio.

112
28 марта '16 в 18:54 2016-03-28 18:54 atsakymas dnephin kovo 28 d. 16 val. 18:54 2016-03-28 18:54

Oficialiajame atidarymo pavyzdyje ( https://docs.docker.com/compose/gettingstarted/ ) pateikiamas toks docker-compose.yml :

 version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" 

Atlikę šį redis su docker-compose up , galite lengvai redis į savo redis talpyklą arba web talpyklą:

 docker-compose exec redis sh docker-compose exec web sh 
19
15 нояб. atsakymas duotas moliui 15 lapkričio. 2017-11-15 01:06 '17 at 1:06 2017-11-15 01:06

Naudodamas „doktoriaus kūrimo“ metodą, radau, kad paprasčiausias būdas tai padaryti yra docker ps -a (po to, kai paleisiu savo konteinerius su docker-compose up ) ir gauti konteinerio, kuriame noriu turėti interaktyvų apvalkalą, identifikatorių (leiskite jam skambinti xyz123).

Tada tiesiog užpildykite docker exec -ti xyz123 /bin/bash užduotį.

ir voila, interaktyvus apvalkalas.

17
18 апр. David Hersey atsakymas balandžio 18 d 2017-04-18 21:01 '17 at 9:01 pm 2017-04-18 21:01

docker-compose run myapp sh turi uždaryti sandorį.

Yra šiek tiek painiavos su / run , bet docker-compose run dokumentai turi puikų paaiškinimą: https://docs.docker.com/compose/reference/run

10
04 апр. atsakymą pateikė Alex Povar 04 balandžio. 2018-04-04 12:23 '18, 12:23 PM 2018-04-04 12:23

Jei kas nors iš ateities taip pat nustebins:

 docker-compose exec container_name sh 

arba

 docker-compose exec container_name bash 

arba galite paleisti atskiras eilutes

 docker-compose exec container_name php -v 

Tai atsitinka po to, kai įkeliate konteinerius.

0
08 окт. atsakymas duotas Eleonora Ivanova 08 okt. 2018-10-08 11:40 '18, 11:40 2018-10-08 11:40

Kiti klausimai apie žymeklius arba Užduoti klausimą