一、术语
1.容器
很多用户在接触Docker 之初都会认为容器就是一种轻量级的虚拟机,但实际上,容器和虚拟机有非常大的区别。从根本形态上来看,容器其实就是运行在操作系统上的一个进程,只不过加入了对资源的隔离和限制。
2.镜像
容器是一个动态的概念,而镜像是一个相对静止的概念。简单来说,镜像就是容器中的文件系统。镜像就是由Layered FS 组成的,并且它是只读的。当容器运行时,会在镜像之上再加上一层可读可写层。
3.容器和镜像的关系
容器和镜像是密切相关的,二者缺一不可,也是可以相互进行转换的。通过docker run 即可启动一个容器运行。当需要将容器转化为镜像时,可以通过docker commit 进行转化。
4.安装docker
https://www.docker.com/community-edition
二、拉取远程镜像 centos:latest
docker pull centos:latest
该命令会去远程镜像库拉取,拉取成功后使用命令查看
docker images
三、创建容器
docker run --name centosCon1 -i -t -p 5001:22 centos:latest /bin/bash
docker run 参数详解:
1. --name --表示容器名称
2. -i -- 以交互模式运行容器,通常与 -t 同时使用
3. -t -- 为容器重新分配一个伪输入终端,通常与 -i 同时使用
4. -p -- 指定容器暴露的端口
5. 5001:22 -- 表示将宿主机5001端口映射到容器中暴露的22端口
6. centos:latest -- docker images 列表中的 REPOSITORY:TAG
7. /bin/bash --表示使用bash
四、配置sshd
yum -y install openssh-server
若有遇到问题,请查看docker centos:last 开启sshd 遇到的证书问题
五、修改root密码 [如果未使用--privileged,这里的root只是普通用户]
passwd root
六、提交当前容器为新的镜像或覆盖原镜像
1.退出当前容器
exit
2. 查到被我们修改的容器ID
docker ps -a
3.提交当前容器为新的镜像或覆盖原镜像
docker commit {容器ID} {镜像名称}
说明:
1.{镜像名称}既可以为新的名称也可以直接覆盖原始镜像
2.docker run 会根据镜像创建一个容器,如果没有手动执行 docker rm {容器ID},该容器将会一直存在,你可以启动、停止、登录容器;命令如下:
2.1 启动:docker start {容器名称}
2.2 停止:docker stop {容器名称}
2.3 强制停止:docker kill {容器ID}
2.4 登录容器:docker attach {容器名称} --容器必须启动; 一个容器支持多个attach,这将会出现屏幕共享效果
3.使用docker commit后,我们刚才配置的带有sshd的容器将生成新镜像或覆盖原始镜像,我们又可以基于它来创建新的容器
七、使用Xshell+WinSCP连接容器
host:127.0.0.1
port:5001
User:root
pwd:******