Docker小试牛刀--在docker中安装centos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker pull centos:6 #使用6.x版本的centos,7.x目前有问题(无法使用正在的root权限)
docker run -t -i centos /bin/bash #创建container from centos image
passwd # 这个命令用于修改root用户密码
yum install openssh-server -y
yum install openssh-clients -y
vi /etc/ssh/sshd_config #编辑sshd配置,去掉PermitRootLogin yes的注释
service sshd restart #启动sshd
chkconfig sshd on #sshd开机重启
docker ps -a # 查看容器id
docker commit <CONTAINER ID> <自定义镜像名> # 如 docker commit 9971b45dc32b jarvan4dev/utility
docker images # 查看镜像,可以看到自己刚才创建的镜像 jarvan4dev/utility
docker run --privileged -d -i -t -p 22222:22 -v /Users/jarvan4dev/Documents/docker:/home jarvan4dev/utility /usr/sbin/sshd -D
docker ps -a # 查看所有容器,看看容器状态,确认为Up后即可
ssh root@localhost -p 22222 # 登录容器
1
2
#动态添加端口映射
iptables -t nat -A DOCKER -p tcp --dport 8088 -j DNAT --to-destination 172.17.0.2:80

解释

—privileged 是为了让容器中的root用户获取真正的root权限
-d demon运行
-t Allocate a pseudo-TTY
-i Keep STDIN open even if not attached
-p 端口映射 <宿主机端口>:<容器中机器端口>
-v 目录映射 <宿主机目录>:<容器中机器目录>
-D 这个参数不是docker命令参数,是sshd的,注意和docker的-d区分

第一次运行镜像后,然后删除容器,再次运行镜像,重新登录可能会出现如下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:VOHZJ5i80esyqbm+aORZbPI6GhcXYEkTKfp4L4+v+9A.
Please contact your system administrator.
Add correct host key in /Users/jarvan4dev/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/jarvan4dev/.ssh/known_hosts:19
RSA host key for [localhost]:22222 has changed and you have requested strict checking.
Host key verification failed.

解决: 删除 ~/.ssh/know_hosts文件中的 localhost:22222即可

我知道是不会有人点的,但万一有人想不开呢!