docker ssh镜像安装实例:
step 1: 安装 yum/官网二进制包
yum install docker
step 2: 配置国内镜像源 参考网站https://www.daocloud.io/mirror#accelerator-doc
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4d17a485.m.daocloud.io Copy
该脚本可以将 —registry-mirror 加入到你的 Docker 配置文件 /etc/default/docker 中
step3: docker search xx
step4: docker pull xx
step5: docker run -it —name centos_ssh -p 50001:22 xx
step6: yum install openssh-server
step7: docker commit 容器名字 新的镜像名字 //centos6:ssh images
要点总结:
1.yum安装的docker版本不对的话 安装后配置国内镜像的时候会出现问题。早期会出现这问题,需要从docker官网安装较新版本的docker。之后yum仓库的docker版本更新,没再出现过、
2.docker的操作需要root权限或者在用户组docker里面的用户才能开启守护进程。groupadd docker newuser
3.docker安装容器ssh之后,用户用ssh连接docker容器的几个注意点:
●先进入docker容器创建一个用户名和密码,要和宿主机的某个用户名和密码一样,这样才能在外部用xshell之类的工具直接连入docker容器。
●要连入docker容器,首先要保证能够登陆宿主机。所以宿主机的防火墙要暂时关闭或者配置,以及宿主机的ssh配置,比如允许访问之类的。
●docker容器的ssh服务要开启。
●docker run 的时候加上 -d 后台运行。 最后加/bin/bash保持docker容器一直运行,否则会退出。
●新浪云docker hub免费使用
延伸拓展:
一台宿主机运行多个docker容器,外界用http方式访问宿主机时,怎么判断进入哪台docker容器?
解决方案:
1.给每个docker容器配置一个跟宿主机同网段的ip。docker容器启动时,会产生一个172.20网段的docker0网卡,实现和宿主机的网络交流。那么只要配置docker容器的网卡和宿主机的网卡同网段就可以了。如果需要在外部用http访问docker容器,只需要将host绑定该IP,便可访问到容器内。缺点是,浪费IP资源。
2.在宿主机安装nginx,利用反向代理+判断cookie,指向请求的docker机的端口。这样如果需要在外部用http访问docker容器,再web请求的时候加个指定的cookie键值,就可以访问到指定的docker容器。缺点:需要加cookie
又:
如果容器被破坏掉了呢?这是完全有可能的。我在刚学习使用docker的时候,安装了一个ssh,并设置开机启动,不知道出什么错误了。docker attach进不去容器,也无法查看日志。这时候如果里面有我们开发的代码呢?
解决方案:
docker机提供目录挂载。docker容器的某个文件夹和宿主机的某个文件夹挂载。数据会同步保存。即使docker容器破坏或者删除,宿主机内的数据依然会存在。
示例: -v /var/www/html:/usr/local/www 宿主机的/var/www/html 和 docker机的/usr/local/www挂载。需要保证宿主机的该目录存在,docker机的目录会生成。