自己研究了好久的docker_ubuntu_ssh登录,总算坑出来了(倒着看)

下载镜像
docker pull mysql

从dockerpull社区下载镜像
docker pull dl.dockerpoll.com:5000/ubuntu

创建一个容器运行bash应用
docker run -t i ubuntu /bin/bash

列出本地镜像
docker images

保存镜像
docker commit fc1dfgt5d23423d3 sshd:ubuntu

给镜像添加一个ubuntu:lastest标签
docker tag al.dockerpool.com:5000/ubuntu:lastest ubuntu:lastest

查看镜像的详细信息
docker inspect 5506de2b43b

搜索镜像
docker search mysql

删除镜像
docker rmi dl:dockerpool.com:5000/ubuntu

根据标签删除镜像
docker rmi mysql:lastest

强制删除镜像
docker rmi -f ubuntu

列出本地上存在的所有容器
docker ps -a

删除容器
docker rm e81(e81是docker ps -a 里的container id)

基于已有的镜像创建容器
docker run -ti ubuntu:14.04 /biu/bash

上传镜像:在docukerhun网站注册后可上传,不过要求输入账号密码
docker tag test:lastest user/test:lastest
docker push user/test:lastest

==============================================================

启动一个bash 终端,允许用户进行交互,添加-d参数在后台运行容器
docker run -t i ubuntu:14.04 /bin/bash

获取容器输出的信息
docker log

终止一个运行中的容器
docker stop ce5

强行中止运行中的窗口(SIGKILL信号)
docker kill ce5

启动终止的容器
docker start ce5

进入容器操作(得先docker start 容器id)
docker attach 容器名
或者:
docker exec -ti 容器id /bin/bash
或者用nsenter工具

停止容器
docker stop 容器id

删除一个运行中的容器
docker rm -f ce5

导入和导出容器(见书上或者百度)
导入:docker export ce5 >test_for_run.tar
到处:cat test_for_run.tar | sudo docker import - test/ubuntu:v1.0

===========创建和使用docker仓库(见书或百度)=========================

=======数据卷===================================

指定挂载一个本地已有目录到容器中去作为数据卷(-v参数)
sudu docker run -d -P --name web -v /src/web:app:/opt/webapp training/webapp python app.py

创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载 到/dbdata
docker run -ti -v /dbdata --name dbdata ubuntu

docker run --it --volumes-from dbdata --name db1 ubuntu

备份数据卷和恢复数据卷见资料

======网络基础配置=============================

-p指定端口
-P随机端口

把本地的5000端口映射到容器的80
docker run -d -p 5000:80 training/webapp python python.py

查看端口映射配置
docker port docker-name 5000

使用--name标记为容器自定义命名
docker run -d -P web training/webapp python python.py

容器互联见资料

======使用dockerfile创建镜像(见资料)========================












======创建ssh镜像===========================================

先下载ubuntu容器
(这个能下载)docker pull daocloud.io/library/ubuntu:trusty-20160802
docker pull daocloud.io/library/ubuntu
docker pull daocloud.io/library/centos
docker pull ubuntu  这个有时候好用

首先,来创建一个容器(ubuntu)
docker run -ti ubuntu:14.04 /bin/bash

修改root密码
echo 'root:123456' | chpasswd


这里有个问题就是把vi编辑器换成vim需要执行以下操作
一.执行命令 sudo apt-get remove vim-common
二.执行命令 sudo apt-get install vim
如果apt-get安装不了得先更新apt-get update才好用apt-get upgrade



然后在容器中安装ssh服务
apt-get install openssh-server

配置软件源
apt-get update

也可以把软件源替换为163的
在容器内创建/etc/apt/sources.list.d/163.list
vi /etc/apt/sources.list.d/163.list
添加下列内容到文件中
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
之后重新执行apt-get update就可以

要正常启动SSH服务,需要/var/run/sshd存在,手动创建它,并启动服务
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &

此时查看容器的22端口,已经处于监听状态
netstat -tunlp




修改SSH服务的安全登录配置,取消pam登录限制
sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
(有时候上面那个好用,有时候下面这个好用)发现容器立即关闭了连接,原因是容器的ssh使用了pam_loginuid.so模块,我们把它关掉:
sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^/#/' /etc/pam.d/sshd
上述命令的意思是:在/etc/pam.d/sshd文件里注释掉"session    required     pam_loginuid.so"这一行。





在root用户目录下创建.ssh目录,并复制需要登录的公钥信息

(一般为本地主机用户目录下的.ssh/id_rsa.pub文件,可由ssh-keygen -t rsa命令生成,
在远端客户端机器(即,非容器机器)执行命令 ssh-keygen -t rsa 生成rsa的公私密钥对,然后把公钥的信息拷贝到运行ubuntu容器机器的授权文件中:
mkdir /root/.ssh
vi /root/.ssh/authorized_keys # 粘贴客户端的公钥信息)

到authorized_keys 文件中
ssh-keygen -t rsa
然后把里面的内容,按照上面的操作
mkdir root/.ssh
vi /root/.ssh/authorized_keys



ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCz0J91r/bHbMSrBHi7DSU6UIANO8fag6wjUZ0bdCKgijK2APOPftT+J8HVlubda+1EWeAy5m99oudT7Ubi0Bg68uYbM+iyK7ecE99VQEEAndcbIELNmY8EkrSGT+w0xF6j+1JM5P/GCHjzZgEjUwemZjxhhN3K3GM9Mz50t6QLDnfDuBqaPw6RqL4f4+YFGiYKxuOQdzo/97iZoCNut6+RFf6z4qr6ao6ZXeH2qel52F4IjJJ90uaI1j81sFclPE1ZP3Rg7q1vlbBpxEv0fLyeZu7hdxH7GPgIYtwJSsPBJiymAVs1kTbeBF+4ZV8RFuuRMrCASllxj4R7hfYrisJp root@iZ25xepzd49Z







创建自动启动ssh服务的可执行文件run.sh,并添加可执行权限
vi /run.sh
chmod +x run.sh

run.sh脚本内容如下
#!/bin/bash
/usr/sbin/sshd -D

最后,退出容器
exit

使用docker commit来保存成新的sshd:ubuntu镜像
docker commit fc1 sshd:ubuntu

使用镜像
docker run -p 10022:22 -d sshd:ubuntu /run.sh

启动成功后,查看容器的详细信息
docker ps

这时可以连接容器了
ssh 192.168.1.200 -p 10022


============
修改root密码
passwd root




========下面来一段自己测试成功的sshd登录==============

下载ubuntu镜像

生成容器,进入容器

apt-get update
apt-get install openssh-server
apt-get install vim

service ssh start

vi /etc/ssh/sshd_config
PermitRootLogin yes"-->保存,修改成功。

service ssh restart

然后外网就能连接成功


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值