docker数据卷学习和dockerfile生成镜像文件、常用操作总结第一版

docker的数据卷转载于:https://www.cnblogs.com/sparkdev/p/8504050.html

本文整理从数据卷中学习的知识及记录;dockerfile生成images时文件超大的现象及原因总结

_checksum:每个镜像层文件的哈希值"sha256:bbe500321588478c81fbeb6fb18bc540371b716ef666710c392c55a"


先说数据卷:

https://www.cnblogs.com/sparkdev/p/8504050.html

生成一个数据卷:
 docker volume  create   生成名字是一个数据卷, 名字是“ VOLUME NAME”列的;
[root@hps220 dongfang]# docker volume  create
01d291ac1dc2993693bb3644456e31143374ddeda526ae5c8c7981905e17e139
[root@hps220 dongfang]# docker volume  ls
DRIVER              VOLUME NAME
local               01d291ac1dc2993693bb3644456e31143374ddeda526ae5c8c7981905e17e139
local               9988dbae58227c5f65f686f542e5ea74c4590f4b68cfa233b81f69ec3ce2d436
 docker volume  rm  VOLUME NAME删除数据卷
 docker volume  rm   f11b34e74fe7763a2d9ace383a008d0375bbbc049a1eae79eb42eec5b41c5755 删除数据卷;
docker volume查看命令:
Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  rm          Remove one or more volumes
[root@hps220 dongfang]# docker volume  inspect   01d291ac1dc2993693bb3644456e31143374ddeda526ae5c8c7981905e17e139
[
    {
        "Name": "01d291ac1dc2993693bb3644456e31143374ddeda526ae5c8c7981905e17e139",
        "Driver": "local",
        "Mountpoint": "/data/ips/docker/volumes/01d291ac1dc2993693bb3644456e31143374ddeda526ae5c8c7981905e17e139/_data",
        "Labels": {},
        "Scope": "local"
    }
]
使用数据卷的最佳场景
在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载同一个数据卷,从而共享数据卷中的数据。
当宿主机不能保证一定存在某个目录或一些固定路径的文件时,使用数据卷可以规避这种限制带来的问题。
当你想把容器中的数据存储在宿主机之外的地方时,比如远程主机上或云存储上。
当你需要把容器数据在不同的宿主机之间备份、恢复或迁移时,数据卷是很好的选择。

该文章中不可执行的是:可能是docker的版本不一样导致的;后续再看下:
[root@hps220 _data]# docker run -id --mount type=volume,source=01d291ac1dc2993693bb3644456e31143374ddeda526ae5c8c7981905e17e139,target=/world ubuntu /bin/bash
unknown flag: --mount
See 'docker run --help'.

dockerfile镜像文件太大
https://www.cnblogs.com/claireyuancy/p/7029126.html  分析docker镜像大小;镜像文件大小是每个层文件大小的叠加;
新建dockerfile镜像文件太大的原因,是docker新建镜像文件时,会把该目录下的所有文件都会加载进来,所以dockerfile文件所在目录尽量内容少些,
此外dockerfile文件名为Dockerfile
新建命令是docker build -t test:1 .  
docker build -t imagename:tag   .  注意一定不要少了最后一个点;


新建一个dockerfile,然后新建一个镜像文件;
FROM ubuntu


RUN useradd nick


RUN mkdir /data && touch /data/test.txt


RUN chown -R nick:nick /data


VOLUME /data


如何通过dockerfile新建一个镜像文件呢?下面的点就是默认取本目录下的dockerfile文件
docker build   -t  image1   .

[root@hps220 dongfang]# docker build   -t  image1   .
Sending build context to Docker daemon 4.227 GB
可是为什么会这么大,怎么减小镜像文件的大小呢?

Sending build context to Docker daemon 103.2 GB

https://www.cnblogs.com/claireyuancy/p/7029126.html  分析docker镜像大小;镜像文件大小是每个层文件大小的叠加;
新建dockerfile文件太大的原因,是docker新建镜像文件时,会把该目录下的所有文件都会加载进来,所以dockerfile文件所在目录尽量内容少些,
此外dockerfile文件名为Dockerfile
新建命令是docker build -t test:1 .  

docker build -t imagename:tag   .  注意一定不要少了最后一个点;




关于docker容器更多操作:
更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现,然后命令直接返回一个contanerid;
 sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run -d  image_df:3.0 /bin/sh
docker attach containername  进入容器内部操作的命令;
要导出容器到本地:docker export  f0bf5e771e21  >/data/dongfang/a.tar
 docker import 从容器快照文件中再导入为镜像:cat  /data/dongfang/a.tar  |docker import -  registry:3.5.1
*注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息


sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro   后面的":ro"是只读;


最后一部分内容学自:http://www.dockerinfo.net/image%E9%95%9C%E5%83%8F  


猜你喜欢

转载自blog.csdn.net/xiaofang2015/article/details/80528797
今日推荐