Docker学习笔记2-docker部署centos7镜像并实现ssh远程访问

背景

docker到底是什么?是一个操作系统吗?为什么可以直接在docker中部署mysql服务,还可以在其中部署centos等操作系统?
docker中的操作系统和独立的centos操作系统有什么不同。宿主机的权限和docker内部的权限有什么区别。等等带着问题,我先开始第一个实验:在docker中部署centos.

部署

1 部署centos镜像并启动容器

1.1 获取镜像
获取镜像
docker pull centos
查看镜像
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              9f38484d220f        7 weeks ago         202MB
1.2启动镜像
docker run --privileged  -itd -p 8888:22 --name centos7 9f38484d220f /usr/sbin/init
	----privileged 启动后让docker容器具备超级特权。
	-itd  交互式、终端、后台运行
	-p  把宿主机的8888端口映射到docker的22端口。
	※宿主机就是运行docker的机器,这样访问宿主机IP:8888端口,实际访问的是docker的22端口。
	--name 给启动的容器命名,方便后续操作
	9f38484d220f  就是IMAGE ID
注:--privileged  和/usr/sbin/init是必须的,否则会报错。
Failed to get D-Bus connection: Operation not permitted
1.3 进入镜像并配置ssh服务
进入容器
docker exec -it centos7 /bin/bash
----------------------一下都是在容器内部操作--------------------------
#安装openssh
yum install -y openssh-server openssh-clients
#启动openssh
systemctl start sshd
#设置root密码
passwd 
。。。。1次密码
。。。。2次确认
#退出容器
exit
1.4 登录测试

1.3退出后进入宿主机,通过下面命令ssh连接8888端口,实际就是docker的22端口。提示输入密码后,进入docker环境内部

ssh localhost -p 8888

思考

ssh 设定后,docker环境是否必须通过密码登录呢?
答案:不是必须通过密码登录,密码只是为了远程ssh连接docker时,使用账号密码登录。
而宿主机root用户仍然可以直接通过下面命令登录

docker exec -it centos7 /bin/bash

我们不能把代码放到docker里面作为代码保护的手段,因为docker设计本身并不是出于保护内部数据的目的。

猜你喜欢

转载自blog.csdn.net/kouryoushine/article/details/89960052