如何让docker以daemon方式运行/bin/bash
怪我咯
怪我咯 2017-04-21 10:55:35
0
5
911

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

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(5)
PHPzhong

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修改密码
左手右手慢动作

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.

PHPzhong

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/

Peter_Zhu

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

刘奇

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan