第三天实现ssh连接docker实例为所欲为
一、使用Dockerfile生成docker镜像
按照前两天的教程,我们现在已经有了一个centos75的基础镜像,今天我们将在这个的基础上创建新的镜像。
我们使用如下炒鸡简单的一个dockerfile去生成一个镜像。
from表示我们使用的哪个镜像作为基础镜像
第二行代表这个的创建和维护者
第三行表示我们要对外暴露的端口是22 如题
最后是一个我们要执行的初始化命令,CMD表示我们在镜像启动的时候要执行的命令。
From centos7:7.5.1804
MAINTAINER ryan
EXPOSE 22
CMD [ "/usr/sbin/init"]
接下来我们就用这个dockerfile去实践一下吧
[root@docker01 ~]# docker build -t centos7-ssh:7.5 .
Sending build context to Docker daemon 31.74kB
Step 1/4 : From centos7:7.5.1804
---> b3770af0e658
Step 2/4 : MAINTAINER ryan
---> Running in 65a7f9f266a0
Removing intermediate container 65a7f9f266a0
---> 5184cc3b4ef9
Step 3/4 : EXPOSE 22
---> Running in 7c8706532bc3
Removing intermediate container 7c8706532bc3
---> 72b0e0b70903
Step 4/4 : CMD [ "/usr/sbin/init"]
---> Running in b761e2e0cc05
Removing intermediate container b761e2e0cc05
---> 9bff79522ca0
Successfully built 9bff79522ca0
Successfully tagged centos7-ssh:7.5
创建成功~
二、使用镜像创建docker实例
经过一顿操作以后当你想开开心心的使用systemctl命令的时候,如下报错就会喜闻乐见了。
[root@d8bc65ec2ffb /]# systemctl status sshd
Failed to get D-Bus connection: Operation not permitted
废话不多说这样可以解决。
我们将本机的2222端口映射到docker容器的22端口,其中根据通过bing搜索到的大神的说法,开启相关的服务是依赖于cgroup。
docker run -d --privileged -p 2222:22 -v /sys/fs/cgroup:/sys/fs/cgroup/ --name base centos7-ssh:7.5
这样我们就能够通过本机ip加上2222端口连接到docker容器的内部为所欲为了。
忘记说了 还得要docker容器设置一下root密码 才可以登陆哦。
作者:安静的熊猫人
链接:https://www.jianshu.com/p/4afa7188f210