最近打算突破一下docker的知识,买了一门课程,这里同步做一下笔记。
成都创新互联专注于企业成都全网营销、网站重做改版、睢宁县网站定制设计、自适应品牌网站建设、H5建站、商城网站建设、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为睢宁县等各大城市提供网站开发制作服务。优点:制作方便,只要进入容器,安装好环境,就可以制作一个新的镜像,并部署到其他环境。
缺点:容器内新增的服务必须在启动后,再进入容器启动一次服务,但是可以通过启动时执行指定命令来解决这个问题
以上命令就是切换到/opt目录,创建一个code子目录,安装vim和wget
使用镜像启动容器时默认的运行命令,如果在docker run的时候,在后面带上自定义命令,那么这个命令就会被替换掉,导致容器启动的时候不会执行,所以一般我们不用这个
和上面的CMD命令相似,但是不会被启动容器时的自定义命令替换掉,一定会执行;还有一个用法是在docker run后面的自定义命令可以作为ENT RYPOINT的命令参数传入
从主机拷贝文件到容器中
和copy命令类似,拷贝文件到镜像中,但是对于压缩文件(含有tar的)拷贝过去会直接解压
指定容器要对外暴露的端口
在dockerfile中声明了VOLUME绑定目录并不会在容器启动的时候帮我们自动绑定目录,那么VOLUME和-v有什么区别呢?假设我们在dockerfile中声明了
那么我们使用不同的命令启动时
所以如果一个镜像制作的时候使用了VOLUME,那么每次启动都会在宿主机上创建一个数据目录,如果这个目录里存在的东西很多,那么时间长了,我们就会发现宿主机上空间越来越小,即使你重启容器也不行。所以要了解这个性质,针对性的清理docker目录。
相当于cd命令,区别是在dockerfile中使用了WORKDIR后,在它下面的语句,工作目录都变成了WORKDIR指定的目录
在dockerfile中设置环境变量,主要为了在执行docker run的时候可以通过-e参数修改环境变量,这样也可以使镜像更加通用。例如MySQL安装时要指定用户名、密码、绑定IP,如果直接在容器里面安装,那么我们如果要修改的话,必须登录到容器中,进行修改重启。但是在dockerfile中指定了ENV变量,那么在docker run的时候就可以修改这些设置。
下面给一个简单的dockerfile例子
在当前目录下创建dockerfile文件,并使用docker build命令制作镜像
在很多企业中,都不能肆意的访问外网,那这样是不是docker就没法愉快的使用了呢?我们通常下载镜像都是从docker hub官方仓库下载的,如果在企业内部搭建一个私有镜像库,那是不是就能像外网一样使用docker了呢,docker官方为我们提供了非常简单的搭建私有库的方式:
好了,通过以上命令我们的私有镜像库就搭建好了,是不是很简单呢?那么怎么使用呢?
vim /etc/docker/daemon.json
{
"insecure-registries": ["xx.xx.xx.xx:5000"]
}
systemctl restart docker
修改镜像名称,添加私有镜像库地址为前缀,然后push到镜像库