docker创建可以远程连接的容器

有些场景需要我们自己配置容器中的服务,可以说类似于一个小型的虚拟机,那么怎么创建一个可以远程连接的容器呢?

拉取centos基础镜像

docker pull centos:7.2.1511

docker pull registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1

启动镜像

sudo docker run -i -t  centos:7.2.1511 /bin/bash

yum -y install openssh-server

启动sshd:

# /usr/sbin/sshd -D

这时报以下错误:

[[email protected] b5926410fe60 /]# /usr/sbin/sshd

Could not load host key: /etc/ssh/ssh_host_rsa_key

Could not load host key: /etc/ssh/ssh_host_ecdsa_key

Could not load host key: /etc/ssh/ssh_host_ed25519_key

执行以下命令解决:

ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''

ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''

ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ''

然后,修改/etc/ssh/sshd_config 配置信息:

UsePAM yes 改为UsePAM no

UsePrivilegeSeparation sandbox 改为UsePrivilegeSeparation no

sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config

sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

systemctl enable sshd

passwd root

[email protected]:~$ sudo docker ps -all

CONTAINER ID        IMAGE                                                     COMMAND             CREATED             STATUS                       PORTS               NAMES

880273353fda       registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1   "/bin/bash"         10 minutes ago      Exited (127) 5 seconds ago                       goofy_kirch

[email protected]:~$ sudo docker commit 880273353fda sf/centos7-ssh

sha256:526e35632f77b2d9200fb26713b6270b0b58e221d1c789e3dc2bc2c5708423a8

[email protected]:~$

生成新的镜像

[email protected]:~$ sudo docker images

REPOSITORY                                          TAG                 IMAGE ID            CREATED              SIZE

sf/centos7-ssh                                      latest             526e35632f77        About a minute ago   301MB

删除在运行的容器

[email protected]:~$ sudo docker ps -all

CONTAINER ID        IMAGE                                                     COMMAND             CREATED             STATUS                       PORTS               NAMES

880273353fda        registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1   "/bin/bash"         13 minutes ago      Exited (127) 3 minutes ago                       goofy_kirch

[email protected]:~$ sudo docker rm -f 880273353fda

880273353fda

[email protected]:~$

重新启动tomcat端口为8080 jh-hos端口为20000 ssh端口为10022

[email protected]:~$ sudo docker run -d -p 10022:22 -d -p 8080:8080 -d -p 20000:20000 sf/centos7-ssh /usr/sbin/sshd -D

04c440e2c872483a14e7cdee1411c51b73e2be2bdbfea5cf4887e09633ae0ed9

#远程连接成功

MacBook-Pro:lss-lims-web dingbingbing$ ssh [email protected] -p 10022

The authenticity of host '[192.168.3.136]:10022 ([192.168.3.136]:10022)' can't be established.

ECDSA key fingerprint is SHA256:EPo7Cu1FM9GG1plXF2MP9gyQRWORrUJau/MZnuqNt+w.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '[192.168.3.136]:10022' (ECDSA) to the list of known hosts.

[email protected]'s password:

[[email protected] ~]#

原文地址:http://blog.51cto.com/13520772/2137171

时间: 2024-08-04 02:30:15

docker创建可以远程连接的容器的相关文章

docker部署mysql远程连接 解决1251 client does not support ..

现象:用虚拟机上Docker启动mysql之后无法在本地安装的navicat上远程连接已启动的mysql,错误截图: 原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制:客户端不支持新的加密方式. 解决方案: 修改用户(root)的加密方式 步骤: 1.进入mysql容器内部 [[email protected] ~]# docker exec -it mysql01 bash 进入之后输入如下命令: [email protected]:/# mysql

docker 安装MySQL远程连接

1. 下载Mysql的Docker镜像: $ docker search mysql (搜索mysql镜像) $ docker pull mysql (下载mysql镜像,默认最新版本) 2. 运行镜像,设置root账号初始密码(123456),映射本地宿主机端口3306到Docker端口3306.测试过程没有挂载本地数据盘: $ docker run -it --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysq

Docker创建支持ssh服务的容器和镜像

Dockerfile 支持系统启动 运行ssh 服务 原文链接:http://blog.csdn.net/kongxx/article/details/38395305 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "[email protected]" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y ope

mysql 创建用户远程连接

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 如果是固定ip就这么写 grant all privileges on *.* to 'root'@'192.168.0.49'identified by '123' with grant option; //推送设置到内存或重启服务器也行 mysql>FLUSH PRIVILEGES 原文地址:https://www.

解决docker创建的elasticsearch-head容器不能连接elasticsearch等问题

在使用docker创建elasticsearch-head容器去连接elasticsearch的时候,容易出两个问题 1.不能连接elasticsearch 修改elasticsearch.yml文件 添加如下两个配置 http.cors.enabled: truehttp.cors.allow-origin: "*" 2.连接上了elasticsearch,但是使用其他的操作发现浏览器会报406 这是因为在elasticsearch-head容器中返回的数据格式不对 进入容器 doc

客户端远程连接docker容器中的mysql 报1251错误

1.启动容器: [[email protected] ~]# docker run -d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql2.进入容器: [[email protected] ~]# docker exec -it 容器id bash3.进入mysql: [email protected]:/# mysql -uroot -p4.输入密码,进入到mysql界面: 5.对远程连接进行授权: mysql> GRANT ALL ON *.

Docker运行MongoDB及Redis及ssh端口映射远程连接

Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. 本节中,我们需要依次完成下面几项任务: MongoDB 的安装及配置 Redis 的安装及配置 Dockerfile 的编写 从 Dockerfile 构建镜像 本次实验的需求是完成 Dockerfile,通过 Dockerfile 创建 MongoDB 或 Redis 应用.Dockerhub上

docker 部署 mongodb 并且开启远程连接

mongodb 使用 docker 部署 mongodb 拉取镜像 docker pull mongo 可以查看镜像是否下载成功 docker images | grep mongo 应该会有如下的显示 mongo latest 7177e01e8c01 2 months ago 393MB > 2 months ago 和 393MB 取决于镜像的拉取时间和对应版本的大小. 使用 docker 安装 mongodb docker run --name mongodb -v ~/docker/m

Docker创建MySQL容器

原文链接:Docker创建MySQL容器 本文目的是创建一个MySQL的image,并且在新创建出来的容器里自动启动MySQL服务接受外部连接 步骤: 1. 首先创建一个目录并在目录下创建一个Dockerfile,文件内容如下 FROM centos:centos6 MAINTAINER Fanbin Kong "[email protected]" RUN yum install -y mysql-server mysql RUN /etc/init.d/mysqld start &