Linux下docker 容器退出bash的两种实现方法

如果要退出bash有2种操作:

第一种:

Ctrl + d 退出并停止容器;

第二种:

Ctrl + p + q 退出并在后台运行容器;

补充知识:Docker同时启动多个服务

前几篇Docker的文章介绍启动容器时都是只启动一个后台服务,今天来说说怎样通过supervisor来启动多个服务

1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下

FROM centos:centos6MAINTAINER Fanbin Kong "kongxx@hotmail.com"RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmRUN yum install -y openssh-server sudo mysql-server mysql supervisorRUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config RUN useradd adminRUN echo "admin:admin" | chpasswdRUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_keyRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN mkdir /var/run/sshdRUN /etc/init.d/mysqld start &&\ mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'letmein';"&&\ mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'letmein';"&&\ mysql -u root -pletmein -e "show databases;"RUN mkdir -p /var/log/supervisorCOPY supervisord.conf /etc/supervisord.confEXPOSE 22 3306CMD ["/usr/bin/supervisord"]

2. 在Dockerfile所在目录下创建supervisord.conf文件,内容如下:

[supervisord]nodaemon=true[program:sshd]command=/usr/sbin/sshd -D[program:mysqld]command=/usr/bin/mysqld_safe

3. 在Dockerfile所在目录下运行build命令来生成image文件,这里使用mysql_server作为image文件名

sudo docker build -t myserver .

4. 启动容器

4.1 首先使用下面的命令来启动容器

sudo docker run --name=myserver -d -P myserver

4.2 启动完容器后,可以使用“sudo docker ps”来查看,此时可以看PORTS列内容为

“0.0.0.0:49171->22/tcp, 0.0.0.0:49172->3306/tcp”

容器的22端口和3306端口会被映射到宿主机器的49171和49172端口。

4.3 此时就可以通过下面的命令来访问ssh和mysql服务了

ssh admin@<宿主机器> -p <宿主机器端口>mysql -h <宿主机器> -u root -pletmein -P 49172

4.4 当然也可以使用“sudo docker inspect myserver | grep IPAddress”来查看容器IP地址,然后通过下面命令访问ssh和mysql服务

ssh admin@<容器机器IP> mysql -h <容器机器IP> -u root -pletmein

以上这篇Linux下docker 容器退出bash的两种实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Docker容器访问宿主机网络的方法

    最近部署一套系统,使用nginx作反向代理,其中nginx是使用docker方式运行: $ docker run -d --name nginx $PWD:/etc/nginx -p 80:80 -p 443:443 nginx:1.15 需要代理的API服务运行在宿主机的 1234 端口, nginx.conf 相关配置如下: server { ... location /api { proxy_pass http://localhost:1234 } ... } 结果访问的时候发现老是报 5

  • docker文件存放路径, 获取容器启动命令操作

    容器早已创建好,如何得知它的启动参数(数据挂载到哪) #假设通过如下命令启动了一个容器 docker run -d --name mysql\ -p 3306:3306\ -e MYSQL_ROOT_PASSWORD=123456\ --restart=always\ mysql:5.5 --character-set-server=utf8 #如何通过容器名得知启动参数 [root@jenkins ~]# docker inspect mysql_cdh [ { "Id": &quo

  • Docker为网络bridge模式指定容器ip的方法

    前言 众所周知bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace.设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上.下面来看看Docker为网络bridge模式指定容器ip的方法. 实现方法 如果只是简单创建一个bridge模式的网络是无法给容器指定ip的 [root@vultrvpn conf.d]# docker network create --driver bridge wordpress_net ad1ff3d972

  • docker版es、milvus、minio启动命令详解

    1.es启动命令: docker run -itd -e TAKE_FILE_OWNERSHIP=1111 -v /data/elasticsearch/data:/usr/share/elasticsearch/data -p 9200:9200 --name es elasticsearch:6.4.2 需要添加环境变量 TAKE_FILE_OWNERSHIP,值随意. 含义请参考我的另一篇文章://www.jb51.net/article/200198.htm 挂载目录用来存储es的数据.

  • docker 启动elasticsearch镜像,挂载目录后报错的解决

    从docker hub下载了一个es的镜像,版本为6.4.2,详细信息如下: 比较重要的就是这两条,第一个是工作目录,挂载目录也需要和这里对应:第二个是启动命令,这里是指定了一个预先写好的启动脚本.所以我启动了一个空容器去查看了下容器内的情况: 容器内部目录结构如上图,data是用来存放数据,logs用来存放日志. 接着查看下启动脚本 /usr/local/bin/docker-entrypoint.sh 前半部分我也是看的一知半解,不过真正和挂载目录相关的是最后这部分,这里处理了挂载目录后的操

  • 一条命令重启所有已停止的docker容器操作

    一条命令重启所有已停止的docker容器 docker ps -a | grep Exited 查看所有已停止的容器 docker ps -a | grep Exited | awk '{print $1}' 获取已停止容器的ID docker ps -a | grep Exited | awk '{print $1}' |xargs docker start 把获取到的已停止容器的ID传送给容器启动命令 一条命令停止所有运行中的docker容器 docker ps -a | grep Up |

  • docker容器通过ping直接运行获取公网IP操作

    通过容器获取本机的公网ip 可以用本地IP 多服务注册中心 把命令改居ping 执行可以拿到不同的服务器信息 public static String getIfconfigIP() { BufferedReader in = null; String outline = ""; // timeOut window为ms linux 为s Runtime r = Runtime.getRuntime(); // 将要执行的ping命令,此命令是windows格式的命令 String p

  • Linux下docker 容器退出bash的两种实现方法

    如果要退出bash有2种操作: 第一种: Ctrl + d 退出并停止容器: 第二种: Ctrl + p + q 退出并在后台运行容器: 补充知识:Docker同时启动多个服务 前几篇Docker的文章介绍启动容器时都是只启动一个后台服务,今天来说说怎样通过supervisor来启动多个服务 1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下 FROM centos:centos6MAINTAINER Fanbin Kong "kongxx@hotmail.com&quo

  • linux下终端分屏使用的两种方法(screen和tmux)

    本文主要介绍两种终端分屏工具:screen和tmux,分享出来供大家参考学习,下面来看看详细的介绍: 一.使用screen分屏(只能上下分屏,不能左右分屏) (1)安装工具 在ubuntu系统中使用sudo apt-get install screen 安装screen工具 (2)使用工具 1,输入命令screen使用工具 2,上下分屏:ctrl + a  再按shift + s 3,切换屏幕:ctrl + a  再按tab键 4,新建一个终端:ctrl + a  再按c 5,关闭一个终端:ct

  • Linux下Docker及portainer相关配置方法

    一.安装使用Docer CE 本文以CentOS 7为例,安装docker CE版本,docker有两种版本,社区版本CE和企业版本EE,此处学习研究以CE版本为例, 两种安装方式可选:1.使用yum安装,2.使用脚本自动安装 系统要求 Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10. CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定. 卸载旧版本 旧版本的 Do

  • docker容器内要启动两个进程时Dockerfile的实现代码

    近期想做一个cron定时任务的docker,在Dockerfile中做如下定义 FROM library/alpine:latest RUN apk --update add rsync openssh bash VOLUME ["/data"] ADD start.sh / CMD ["/bin/bash","/start.sh"] 在start.sh中用crontab 加载定时任务run.cron,然后启动crond: /usr/bin/cr

  • Linux下docker安装mysql8并配置远程连接

    目录 第一步:下载mysql镜像镜像 第二步:启动mysql镜像 第三步:查询启动的镜像 第四步:进入容器 第五步:登录mysql 第六步:设置远程访问 第七步:navicat链接时报 2059 错误 第一步:下载mysql镜像镜像 docker pull mysql 默认是下载最新稳定版 第二步:启动mysql镜像 docker run --name dockermysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysqlpassword -d mysql -

  • Docker容器/bin/bash start.sh无法找到not found问题解决

    目录 项目场景: 问题描述 造成原因 解决方案 总结 项目场景: 记一次Dockerfile构建的Docker镜像,启动容器时sh: not found的问题 Dockerfile构建的Docker镜像,启动容器时找不到start.sh,执行docker run 命令时报错:/bin/sh: 1: /data/server/start.sh: not found 问题描述 Dockerfile如下(脚本正确无内容错误) FROM openjdk:8 MAINTAINER it235.com #

  • Linux下Docker安装和使用教程

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器. 开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal.OpenStack集群和其他的基础应用平台. Docker的源代码全部是用Go语言写的. 一.基础环境 1.角色.ip.版本.内核 serverA 10.1.10.236 3.16.0-4-amd64 8.1 docket docket 1.6.2 二.安装docter 1.添加源 echo "d

  • 浅谈生产者消费者模型(Linux系统下的两种实现方法)

    生产者消费者问题是同步问题中的一种常见情况,借用一下维基百科的话 生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例.该问题描述了两个共享固定大小缓冲区的线程--即所谓的"生产者"和"消费者"--在实际运行时会发生的问题.生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程.与此同时,消费者也在缓冲区消耗这些数据.该问题的关键就

  • Linux下Docker CE使用从包中安装的方式详解

    使用从包中安装的方式,在Linux上安装Docker CE 1.查看Linux系统信息nuame -a 我的是Debian, amd64 2.查看Linux 系统发行版的名称 lsb_release -cs 我的是stretch 3.进入到下载包页面https://download.docker.com/linux/ 第一步获取的Debian,点击进入debian>dists 进入了这个连接地址 https://download.docker.com/linux/debian/dists/ 第二

  • Docker容器迁移Oracle到MySQL的实现方法

    目录 ️ 1. 创建专用网络 ️ 2. Oracle 12C部署 2.1 镜像下载 2.2 容器创建 2.3 创建业务用户 2.4 监听启动 ️ 3. MySQL8部署 3.1 容器创建 3.2 参数设置 3.3 登陆MySQL ️ 4. kettle迁移Oracle到MySQL 4.1 部署kettle 4.2 Oracle端数据校验 4.3 迁移Oracle到MySQL 4.4 迁移后MySQL数据验证 前言 Kettle是开源的 [TEL] 工具,JVAV编写,可以运行在多个平台,使用时有

随机推荐