docker容器之初探-ubuntu容器安装(8022ssh访问)

本文介绍了如何在Docker中拉取Ubuntu镜像,创建容器,然后在容器内部安装SSH服务并配置相关参数,解决Keyexchange failure错误。接着,将容器打包成新的镜像,并上传到私有镜像库。此外,还涉及到了使用PM2管理和Redis容器的设置。
摘要由CSDN通过智能技术生成
1.拉取镜像
docker pull ubuntu
2.创建容器
[root@localhost ~]# docker run --privileged=true -it -v /dbdata:/dbdata -p 8022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 --name ubuntu docker.io/ubuntu:latest /sbin/init
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "exec: \"/sbin/init\": stat /sbin/init: no such file or directory".

但是该命令会报错,因为容器中缺少ssh服务,所以先运行容器,再在容器里面安装服务,再将容器打包成镜像,然后再创建容器。
创建容器

docker run --privileged=true -it -v /dbdata:/dbdata -p 8022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 --name ubuntu docker.io/ubuntu:latest

进入容器安装ssh服务

apt-get update
apt-get install yum
apt-get install openssh-server
systemctl restart sshd

打包成镜像

docker export c0e4bc038317 > mybuntu.jar

根据镜像创建容器,要删除原来的镜像

docker rm -f c0e4bc038317
docker run --privileged=true -it -v /dbdata:/dbdata -p 8022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 --name ubuntu mydocker/ubuntu:latest /sbin/init

查看配接口开放信息

[root@localhost ~]# netstat -aptn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1099/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1529/master         
tcp        0     52 192.168.50.73:22        192.168.50.130:62866    ESTABLISHED 73510/sshd: root@pt 
tcp6       0      0 :::5000                 :::*                    LISTEN      47483/docker-proxy- 
tcp6       0      0 :::9001                 :::*                    LISTEN      73880/docker-proxy- 
tcp6       0      0 :::9002                 :::*                    LISTEN      73866/docker-proxy- 
tcp6       0      0 :::9003                 :::*                    LISTEN      73854/docker-proxy- 
tcp6       0      0 :::9004                 :::*                    LISTEN      73840/docker-proxy- 
tcp6       0      0 :::9005                 :::*                    LISTEN      73825/docker-proxy- 
tcp6       0      0 :::9006                 :::*                    LISTEN      73810/docker-proxy- 
tcp6       0      0 :::9007                 :::*                    LISTEN      73797/docker-proxy- 
tcp6       0      0 :::8022                 :::*                    LISTEN      73894/docker-proxy- 
tcp6       0      0 :::22                   :::*                    LISTEN      1099/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1529/master

有8022开放端口

3.进入容器配置
docker exec -it 8c8fd1091b01 /bin/bash

修改容器密码

passwd

修改完之后,进行连接测试,发现报错,信息如下:

Key exchange failure

配置文件

vi  /etc/ssh/sshd_config 
#如果没有vi命令则要先配置apt-get install vim

编辑文件信息,添加如下信息:

#防止出Key exchange failure的错误
RSAAuthentication yes
#防止出Key exchange failure的错误
PasswordAuthentication yes
#防止出Key exchange failure的错误
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1

#确保ssh远程可以访问
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys 
PermitRootLogin yes 

重启ssh墙服务。

service sshd restart

连接测试成功。

打包成镜像之后,再创建容器启动,发现无法远程登录,重新输入如下命令实现远程登录,用之前的密码可以登录。

service sshd restart
4.将镜像上传到私有镜像库
[root@localhost ~]# docker tag mydocker/ubuntu:latest 1111111/mylocal:ubuntu20.04
[root@localhost ~]# docker push 1111111/mylocal:ubuntu20.04
5.安装PM2

apt-get install npm
npm --version
npm install -g pm2
pm2 --help

6.redis容器

docker run --privileged=true -v /dbdata/redis:/dbdata -itd --name redis -p 6379:6379 redis redis-server --requirepass “mima”

docker run -dit --privileged -p 9022:22 -p 9001:9001 -p 9002:9002 -p 9003:9003 -p 9004:9004 -p 9005:9005 -p 9006:9006 -p 9007:9007 -p 9008:9008 -p 9009:9009 -v /dbdata/ubuntu:/data -v /media/disk/docker/ubuntu:/media/disk/docker/ubuntu --name ubuntu2 ubuntu:16 /bin/bash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值