![f755e1e1b12e408c3b80533e821ee58c.png](https://i-blog.csdnimg.cn/blog_migrate/dabddbe17218ff611058daeb4551d0dc.jpeg)
创建镜像
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
- 1、从已经创建的容器中更新镜像,并且提交这个镜像
- 2、使用 Dockerfile 指令来创建一个新的镜像
![19364c1a21c1e9752bcdc6edd81de8cb.png](https://i-blog.csdnimg.cn/blog_migrate/18d3981b7e911922afd7f10d3fd07137.jpeg)
创建Docker账号
共享和发布镜像时构建镜像中重要的环节,可以将镜像推送到Docker Hub或资金的私有Registry中。首先到https://hub.docker.com/account/signup/创建账号。
![0c806173667900f8a3acf9bf27381601.png](https://i-blog.csdnimg.cn/blog_migrate/d4168aab36831a5e83dcd7f507a6d584.jpeg)
![d28c27e153f1f16b370fd317710f52db.png](https://i-blog.csdnimg.cn/blog_migrate/966d170a807d495ca0aeb35293acc262.jpeg)
这条命令会完成登录,并将认证信息报错起来供后面使用。个人认证信息将报错到$HOME/ .dockercfg
文件中.
用 commit 命令创建镜像
可以想象是往版本控制系统里提交变更:首先创建一个容器,并在容器里做修改,就行修改代码一样,最后在讲修改提交为一个新镜像。
创建一个新容器命令:
sudo docker run -i -t ubuntu /bin/bash
或者之前创建好的myubuntu容器:
sudo docker start myubuntu
sudo docker attach myubuntu
注意:
docker run 后面指定的是一个镜像
而docker start指定的是一个容器
docker run是利用镜像生成容器,并启动容器,而docker start是启动一个之前生成过的容器
因为ubuntu官方镜像中没有软件包的缓存文件,使用apt-get update更新即可,也可以修改源来配置。进入myubuntu之后,然后安装ssh。
![ac0afb8ccd57ed3104a56bf345dbfe1e.png](https://i-blog.csdnimg.cn/blog_migrate/c74774fd04f04d3f4856091ba81c566f.jpeg)
![294d5bb726abfa187fa740b5fdf05ad9.png](https://i-blog.csdnimg.cn/blog_migrate/f8ab19a3ee207456dfee2f4963000e26.jpeg)
运行ssh需要目录/var/run/sshd存在,创建启动服务
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &
然后可以看到已经运行,netstat命令可能也没有,安装即可apt-get install net-tools
![9c5d2250e4862e477721e124c9e32b77.png](https://i-blog.csdnimg.cn/blog_migrate/64b01ec92de0de0a955806b70cf4208d.jpeg)
![f4e99a9dc6a325c0ca63e1b15460ca5e.png](https://i-blog.csdnimg.cn/blog_migrate/eac8186aafc57161577dcfafd0538e8a.jpeg)
![28728a792b0543b5997970cf44f77399.png](https://i-blog.csdnimg.cn/blog_migrate/cee8842f920df3c690989537c897809a.jpeg)
然后复制需要登录的公钥信息(这里为本地主机)。使用ssh-keygen可以生成。
![2e38f5c98024024319ba716efd7adaa2.png](https://i-blog.csdnimg.cn/blog_migrate/f87c6dac74a614aea772e19736b5bdb8.jpeg)
复制id_rsa.pub的内容到容器中的/root/.ssh/authorized_keys
![2e38f5c98024024319ba716efd7adaa2.png](https://i-blog.csdnimg.cn/blog_migrate/f87c6dac74a614aea772e19736b5bdb8.jpeg)
创建ssh服务执行文件,然后退出容器
vim /run.sh
chmod +x run.sh
![f2ac3c57c4f272979c92ffb9b1958a05.png](https://i-blog.csdnimg.cn/blog_migrate/552f92f4f29e3f4b826b41fffdf1a78d.jpeg)
使用docker commit保存修改的容器,然后运行
docker commit CONTAINER ID ssh:ubuntu
docker run -d -p :22 ssh:ubuntu /run.sh
![a80fb4d5d55cae9a74c2b58443d30347.png](https://i-blog.csdnimg.cn/blog_migrate/03d8651bc72737246730eaf231e87d05.jpeg)
![1c6689748497206224fdbb6c5e2684dc.png](https://i-blog.csdnimg.cn/blog_migrate/5ada300d97be1e3b5439f4c00e1ab2f2.jpeg)
![9d7b0a46f914e3459573a001ed8e9bd2.png](https://i-blog.csdnimg.cn/blog_migrate/b5cb36996ada4dd3dde69bafee76c7f0.jpeg)
最后可以在宿主机上通过随机生成的32768端口来访问登录容器了:
使用dockerfile创建镜像
创建一个目录sshd_ubuntu,分别创建文件如下:
![49617a3764d339f9d9617bc160123f37.png](https://i-blog.csdnimg.cn/blog_migrate/a3ba108ad3738b14f1d3fd8f7c5848ec.jpeg)
下一篇文章我们介绍dockerfile创建