在这里 我们已一个安装一个带有vim功能的ubuntu 为实例,上传为一个新的镜像,pull 的ubuntu并没有vim功能
(1)首先从官网上 pull ubuntu到本地
docker pull ubuntu
(2)能正确运行 ubuntu的实例
(3)apt-get update
(4)apt-get -y install vim
(5) 把我们安装好带有vim的镜像提交
docker commit -m="add vim cmd" -a="cky" 容器名 新的目标镜像名[:tag]
进入阿里云官网,找到容器镜像服务
容器工具 镜像加速器 之后按照4步骤来就可以
配置过镜像加速器,就会使我们从dockerhub上pull 或push更快一些
默认情况下,docker内的容器是不能与外部进行通信的,想要与外部进行通信,就必须进行端口映射。
如 -P 这个是随机端口映射
-p 这是自定义端口映射
-p 宿主机port:容器port
通过访问宿主机的port端口 就能访问到该docker容器。
如 本地ip是192.168.2.12
docker run -p 8001:8080 镜像名
则我们可以通过192.168.2.12的8001端口访问到该镜像名的容器。
首先创建一个阿里云个人账户
创建一个命名空间以及镜像仓库
按步骤运行
出现的错误以及解决方案
对于一些有机密的公司,可能并不想把镜像提供给外网,这时候就需要公司内部的私有库。
docker registry 就是一个可以构建私有镜像的仓库
docker pull registry
docker run -d -p 5000:5000 -v /myrigistry/:/tmp/myregistry --privileged=true registry
此时,实现了registry 与本地宿主机的联调,不会导致registry容器关闭后,内容的丢失。
这里的ip 地址 是宿主机的ip
我们可以通过 ip addr 找到 ens33 下的 inet后的ip地址就是这里要写入的ip地址
docker私服库默认是不支持http的
修改etc/docker/daemon.json
验证一下 看是否成功
镜像分层的好处是可以复用,我们可以在基础的base镜像上 更新一些新的内容,在形成一个新的镜像。
比如ubuntu是没有vim功能的,此时我们可以在基础的ubuntu的颈项上下载 一个vim,之后通过commit命令提交,形成一个含有vim功能的新的镜像。
对于容器来说,只是镜像的一个实例,如果我们不小心退出了或者移除了该容器,则容器中的内容就会消失,就像我们写在内存中的东西,如果断电了就会消失一样,此时就需要一个保存机制,数据卷的出现就是如此。
命令如下:
该命令可以将我们的宿主机与我们的容器目录内的文件相互关联起来。
如:
这条命令是将我们主机的tmp文件与容器的tmp文件 相连了,如果容器的tmp文件下多了一个a.txt 和b.txt,则主机的tmp文件下也会多这两个文件。
如图
当容器stop之后,如果在主机的文件夹内进行修改,容器如果被start和exec之后,容器也会同步更新。
我们可以通过docker inspect 容器名 可以来查看容器具体内容包括挂载
后边什么都不加 就是rw,即宿主机的内容 容器可读可写,但是如果写上ro,就是只读的,这个权限是对于容器来说的。
对于 容器卷 我们也可以继承
命令:
实例:
这里是u2 继承自u1容器卷。
dockerfile就是去构建一个自己的镜像,FROM是来自于哪个基础镜像,通过RUN与ADD我们可以构成一个属于我们的镜像,CMD命令只会执行最后一个。
RUN 是built是运行的,用来构建镜像。
CMD 是我们run 容器时执行的。