cari

Rumah  >  Soal Jawab  >  teks badan

如何让docker以daemon方式运行/bin/bash

请教各位达人一个关于docker的问题哈。我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着,我要用的时候就docker attach上去。但是我一跑docker run -d .... /bin/bash,这个容器就运行结束停下来了。这是为毛啊,有啥解决方案没。。。

怪我咯怪我咯2763 hari yang lalu901

membalas semua(5)saya akan balas

  • PHPz

    PHPz2017-04-21 10:57:35

    Saya sendiri mengalami masalah ini. Tetapi dalam situasi yang berbeza, saya berharap apabila docker berjalan, kontena sentiasa boleh berjalan di latar belakang dan membenarkan saya log masuk dari jauh untuk beroperasi.

    Saya menyalin artikel: Log masuk jauh SSH ke bekas

    ----Kandungan bermula-----

    Selepas memulakan bekas, kami mungkin perlu log masuk menggunakan ssh untuk melaksanakan beberapa operasi. Untuk mencapai matlamat ini, terdapat 2 mata yang perlu dipastikan:

    • Bekas mesti berjalan.
    • pelayan openssh dimulakan.
    注意:以下示例是在ubuntu/13.10中完成的
    

    Mula-mula pastikan imej mempunyai openssh-serverperkhidmatan dipasang

    # 官方镜像一般没有安装ssh服务端,so,需要安装一个
    apt-get install openssh-server
    # 设置一个初始密码
    passwd 123
    ...
    

    Kemudian, serahkan imej:

    docker commit CONTAINER_ID NAME/VERSION
    

    Akhir sekali, jalankan imej dan biarkan bekas yang dijana berjalan di latar belakang:

    # 第一个-d表示让容器在后台运行
    # 末尾的-D表示启动ssh的daemon模式,不然容器启动后立刻就变为停止状态了
    docker run -d NAME/VERSION /etc/init.d/ssh start -D
    

    Kini, anda boleh log masuk ke dalam bekas melalui ssh.

    # 查询容器IP
    docker inspect CONTAINER_ID | grep IP
    
    # 登入
    ssh root@IP
    # 输入密码 123完成登陆
    # 为保证安全,请即刻用passwd修改密码
    

    balas
    0
  • ringa_lee

    ringa_lee2017-04-21 10:57:35

    Jika arahan yang dinyatakan oleh

    docker run bukan perintah yang telah digantung (seperti menjalankan top dan meneruskan echo), ia akan keluar secara automatik. Perintah -d menetapkan detach kepada benar Menurut dokumentasi rasmi, ini bermakna arahan ini dijalankan di latar belakang, tetapi ia tidak dijalankan sepanjang masa (kami menjalankan /bin/bash dalam Terminal Linux biasa, dan ia adalah. berakhir apabila ia selesai Tidak Ia akan sentiasa menunggu jawapan, jadi tiada cara untuk menjalankannya dalam mod daemon /bin/bash).

    Memang terdapat beberapa ketidakkonsistenan antara dokumen rasmi awal dan semasa di sini. Dokumen awal mengatakan bahawa -d ditetapkan untuk menjalankan bekas dalam mod daemon.

    Selain itu, jika anda perlu menjalankan bash dalam bekas, jalankan terus docker run -i -t CONTAINER_NAME /bin/bash Jika anda rasa terdapat lebih banyak parameter daripada lampiran docker, anda boleh menetapkan alias untuk menyelesaikan masalah:

    alias dockerbash='docker run -i -t CONTAINER_ID /bin/bash'
    

    Selepas menetapkan alias, jalankan dockerbash terus untuk memasuki bash bekas.

    balas
    0
  • PHPz

    PHPz2017-04-21 10:57:35

    Ini boleh dicapai menggunakan penyelia. Dan anda boleh memulakan berbilang perkhidmatan pada masa yang sama.
    Mula-mula pasang pakej perisian dengan yum -y install supervisor dan ubah suai fail konfigurasi /etc/supervisord.conf
    Tambahkan perkhidmatan yang ingin anda mulakan, seperti sshd.

    Untuk maklumat khusus, anda boleh rujuk artikel ini: http://openstack.blog.163.com/blog/static/236387267201491734019283/

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-21 10:57:35

    docker run --attach=stdin -d image bash, parameter -d mematikan stdin secara lalai.

    balas
    0
  • 怪我咯

    怪我咯2017-04-21 10:57:35

    Adalah disyorkan untuk menambah ayat pada fail Dockerfile untuk membina imej:
    CMD tail -f
    Sekiranya terdapat arahan lain
    CMD arahan lain&& tail -f
    Semoga ia akan menjadi membantu anda

    balas
    0
  • Batalbalas