dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2198
  • 铜币14124枚
  • 威望6134点
  • 银元155个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:2436回复:0

docker ssh登陆容器

楼主#
更多 发布于:2016-03-22 18:46
问题描述
按照 docker 使用 dockerfile 创建镜像 创建的容器无法登陆ssh;

启动容器
docker  run -tid cd34135ed904
e115bd6f71b4c64eb996b25982c0356218a5aa1e4f145a674785f87b6aab135a

容器ip
docker exec e115bd6f71b4 ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02  
          inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:39 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5173 (5.1 KB)  TX bytes:1817 (1.8 KB)

无法登陆ssh
ssh 172.17.0.2
ssh: connect to host 172.17.0.2 port 22: Connection refused

docker top容器里没有sshd 进程
docker top e115bd6f71b4
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                8914                1548                0                   16:14               pts/27              00:00:00            /bin/bash

解决方法
1. 修改dockerfile 添加cmd
# sshd
#
# VERSION               0.0.1
     
FROM      ubuntu
MAINTAINER dongnan <http://ywwd.net>
     
# make sure the package repository is up to date
RUN echo deb http://archive.ubuntu.com/ubuntu precise main universe > /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y inotify-tools nginx openssh-server
     
#ssh
RUN echo "root:ywwd.net" | chpasswd
RUN mkdir /var/run/sshd
     
#
CMD ["/usr/sbin/sshd", "-D"]    #注意这里
#CMD ["nginx","-g","daemon off;"]

2. 重建镜像
docker build -t ubuntu-ssh docker/
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM ubuntu
 ---> 91e54dfb1179
Step 2 : MAINTAINER dongnan <http://ywwd.net>
 ---> Using cache  
 ---> 9a6fd67b3b91
Step 3 : RUN echo deb http://archive.ubuntu.com/ubuntu precise main universe > /etc/apt/sources.list
 ---> Using cache
 ---> 377bc49bf263
Step 4 : RUN apt-get update
 ---> Using cache
 ---> bbdcc791806d
Step 5 : RUN apt-get install -y inotify-tools nginx openssh-server
 ---> Using cache
 ---> cd34135ed904
Step 6 : RUN echo "root:ywwd.net" | chpasswd
 ---> Running in 48238d278e4d
 ---> 4ca0c59370bd
Removing intermediate container 48238d278e4d
Step 7 : RUN mkdir /var/run/sshd
 ---> Running in 46c524a9e3a6
 ---> e298a9432d78
Removing intermediate container 46c524a9e3a6
Step 8 : CMD /usr/sbin/sshd -D
 ---> Running in 80bb46ceddc5
 ---> 427de73eafdb
Removing intermediate container 80bb46ceddc5
Successfully built 427de73eafdb

3. 创建新的容器
docker run -tid 427de73eafdb
dfff2877eaf3f202e94602ba2ede052dcc4d5520f47ee673bd71845b54c51f5d

4. 验证
#容器ip
docker exec dfff2877eaf3 ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:03  
          inet addr:172.17.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4035 (4.0 KB)  TX bytes:648 (648.0 B)
#ssh
ssh 172.17.0.3
省略....
root@172.17.0.3's password:

参考docker 使用 dockerfile 创建镜像
#
欢迎关注微信公众号: 运维录
游客

返回顶部