Rumah > Soal Jawab > teks badan
请教各位达人一个关于docker的问题哈。我想在docker run的时候,用-d参数运行/bin/bash,然后让这个bash一直跑着,我要用的时候就docker attach上去。但是我一跑docker run -d .... /bin/bash,这个容器就运行结束停下来了。这是为毛啊,有啥解决方案没。。。
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:
注意:以下示例是在ubuntu/13.10中完成的
Mula-mula pastikan imej mempunyai openssh-server
perkhidmatan 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修改密码
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.
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/
天蓬老师2017-04-21 10:57:35
docker run --attach=stdin -d image bash, parameter -d mematikan stdin secara lalai.
怪我咯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