实现你的需求有很多种做法。

1、如果在容器没有启动 sshd 服务的情况下又想通过一条ssh命令就进入容器内部,可以将 docker exec 与 ssh 两条指令结合到一起去:

ssh -t 云主机IP 'docker exec -it mypython bash'

什么?嫌命令太长?用神奇的 alias 啊,想要多短就有多短:

alias sp='ssh -t 云主机IP "docker exec -it mypython bash"'

这样不管你容器内部有没有启动 sshd ,运行 sp 就可以直接进入容器内;

2、既然你的容器是用来运行 python 服务的,那为何不用 supervisor 来管理容器内进程呢 ?supervisor 同时管理 sshd 进程和你自己的 python 服务进程,然后将启动 supervisor 进程的命令作为容器的 entrypoint,这样就能确保每次启动容器的时候既启动了 sshd , 又启动了你自己的 python 服务;

比如我用 supervisor 来同时管理 redis 和 sshd 服务,构建镜像的过程如下:

Dockerfile:

FROM ubuntu:14.04

RUN apt-get update

RUN apt-get install -y openssh-server redis-server supervisor

RUN mkdir -p /var/run/sshd

RUN sed -i 's/daemonize yes/daemonize no/' /etc/redis/redis.conf

RUN sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis/redis.conf

COPY supervisord.conf /etc/supervisor/supervisord.conf

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]

supervisord.conf

[supervisord]

nodaemon=true

[program:sshd]

command=/usr/sbin/sshd -D

autostart=true

autorestart=true

startsecs=3

[program:redis]

command=/usr/bin/redis-server /etc/redis/redis.conf

autostart=true

autorestart=true

startsecs=3

build 镜像

docker build --network=host -t multi_process:v1 .

构建完成 run 一个容器

docker run -itd --name mp multi_process:v1

然后进入容器查看容器内部进程

docker exec -it mp bash

root@c59c5fca5c53:/# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 11:12 pts/0 00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf

root 8 1 0 11:12 pts/0 00:00:00 /usr/sbin/sshd -D

root 9 1 0 11:12 pts/0 00:00:00 /usr/bin/redis-server 0.0.0.0:6379

可以看到容器内的 init 进程是 supervisord,然后启动了 sshd 和 redis-server 两个子进程,这样一个容器就能在提供 redis 服务的同时又支持 ssh 登入了。

3、容器传入传出数据,你都用了卷了,所要传输数据的目录也是卷挂载的目录,那直接在宿主机上操作呗,scp 正向 反向都能拷贝

scp -r local/code/path user@云主机IP:~/code

或者

scp -r user@云主机IP:~/code local/code/path

通过宿主机传输跟通过容器直接传输是一样的;

4、不建议以脚本形式在 entrypoint 里同时启动 sshd 和你自己的 python 服务进程,为什么呢?因为这样做会导致的容器关闭时进程能不能有效回收的问题,如果容器内进程不能正常回收,就会出现僵尸进程,而Docker 本身只是进程隔离,处理这些僵尸进程有时需要重启宿主机,如果宿主机运行多个容器的话,其他的服务就跟着受影响了。

其他 docker 相关问题的回答:学习Docker哪本书最好?​www.zhihu.com

docker运行yyets_如何让操作系统为ubuntu的docker容器在启动时自动重启sshd服务?相关推荐

  1. docker运行yyets_你应该知道的5个开源Docker工具...

    Docker 社区已经创建了许多开源工具,它们能帮我们处理各种用例.作者在本文中推荐了 5 款认为最有用的 Docker 工具,分别是 Watchtower(自动更新 Docker 容器).docke ...

  2. Android 编程下帧动画在 Activity 启动时自动运行的几种方式

    Android 开发过程中部分 Activity 在显示的时候就要求给用户显示一个进度框来改善用户体验,比如:Activity 在启动的时候就去联网请求数据.读取数据库内容等.进度框显示样式如下,采用 ...

  3. docker运行yyets_Docker 后台进程参数-------更改Docker运行根目录的方法

    参数介绍 --api-enable-cors=false 远程API调用. -b, --bridge="" 桥接一个系统上的网桥设备到 Docker 容器里,当使用 none 可以 ...

  4. docker运行yyets_使用Docker镜像

    写在前面 镜像是Docker三大核心概念中最重要的一部分,而Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试从默认的镜像仓库中下载(默认使用Docker Hub公共注册 ...

  5. 如何使WINCE启动时自动运行应用程序

    一.快捷方式 假定Windows CE.NET目标工程为CEPC类型,目录为E:ProjectMyWinCE,并且工程已经Build(或者Rebuild)成功: 假定Windows CE.NET的应用 ...

  6. 我的docker随笔15:MySQL启动时自动创建数据库

    一.背景及分析 MySQL容器启动时,会自动创建一些必要的数据库,比如MySQL,这是官方默认的做法.但是,在实际中,还需要让MySQL自动创建我们自定义的数据库.本文就此应用场合进行探究. 一般的做 ...

  7. ubuntu 开机后不动_Ubuntu启动时停止的问题

    Ubuntu启动时停留在选择系统的那个页面. 选择第一个ubuntu with linux2.6.28-8-server后  出现一段字符,但不动了, 字符最后一个是(initramfs) 在后面输入 ...

  8. python模拟windows启动,在Windows启动时自动运行Python脚本?

    将Python脚本添加到Windows启动时,基本上表示Python脚本将在Windows启动时运行.这可以通过两步过程来完成- 步骤#1:在Windows启动文件夹中添加或添加脚本 在启动Windo ...

  9. docker运行yyets_为什么在Docker容器内不能执行netstat

    赞同来自: 谢谢你们的支持.通过Dockerfile,安装一个net-tools就解决了.不过,始终没法安装. 如果哪们同学解决了,希望共享下. <pre> FROM de ...

最新文章

  1. TensorFlow四种Cross Entropy算法实现和应用
  2. YUM(Yellow gog Updater Modifie)服务器的配置
  3. android将被代替的控件,Android 控件被忽略的属性
  4. 如何用 Blazor 实现 Ant Design 组件库(二)
  5. onclick进不去ajax,在ajax调用之后处理onclick函数
  6. 解决Git Log在IDEA中乱码的问题
  7. MySQL 直接存储图片并在 html 页面中展示,点击下载
  8. Mybatis中的@SelectKey注解
  9. python的urllib2包基本使用方法
  10. JavaScript DOM操作总结
  11. python共享单车数据分析_共享单车数据可视化分析(Python/Seaborn)
  12. 69张图回顾2021和看透2022
  13. ArcGIS Pro 创建tpk
  14. 【影评】:卧虎藏龙中的人物性格的分析
  15. obs代码总体架构图
  16. linux NM 命令使用介绍
  17. 聚播微信多开客服系统二次开发SDK服务端接口
  18. Windows 通过bat脚本启动Eureka,Cassandra和redis-server
  19. 长安链ChainMaker基于公钥用户标识的身份模式介绍
  20. SpringBoot开发网页即时聊天室/IM通信/WebSocket/即时通讯

热门文章

  1. 优思学院|工业工程的发展史----从精益生产、六西格玛、到TOC
  2. Java习题——面向对象基础
  3. 关于我要上大学的事事
  4. typescript能开发什么,typescript 后端开发
  5. 全志Tina Linux MPP (多媒体框架)开发指南支持百问网T113 D1-H哪吒DongshanPI-D1s V853-Pro等开发板
  6. 作为测试面试官,我如何筛选候选人—CKL
  7. Sql——bypass
  8. flume1.7.0-taildirSource 支持多文件监控和断点续传
  9. Qvod播放器嵌入代码
  10. 推荐几个积极向上的公众号,期待与你相遇~