本文共 5272 字,大约阅读时间需要 17 分钟。
首先一句话表达个人对docker的理解:与传统虚拟技术基于硬件及物理资源的虚拟化相比,Docker更加轻量化,docker为基于操作系统或内核级别的虚拟化,并且提供了从各种机制与操作以满足从开发环境到生产环境的各种定制化需要。
个人认为对前端而言,docker的意义在于:满足了前端环境的构建便利性与一致性的同时,降低了FE上手linux以及虚拟化技术的难度,同时docker借鉴了git的部分优点,更便于类比进行理解。Docker为何如此好玩 !!! 自此开始分享前端工程化与docker相结合的各种玩法与姿势!!关于docker的FE相关环境也会及时更新到github上(顶部有传送门),请持续关注坑会继续挖继续填,持续更新中。。。首先记录一下常规操作:Docker主要围绕仓库、镜像、容器三者展开,容器为核心。实际使用的时候也是主要与容器打交道。
linux基础,docker的安装等等非干货内容请自行学习,在此不做赘述。docker images
docker tag ubuntu:18.04 myubuntu
docker inspect ubuntu:18:04
docker inspect -f {{".Architecture"}} ubuntu:18.04
docker history ubuntu:10.04
docker search [option] keywords
docker rmi 镜像名或id
或者 docker image rm 镜像名或id
docker image prune -f
docker rmi $(docker images | awk '/^<none>/ { print $3 }')
docker run -it ubuntu:18.04
docker commit -a pomelott -m 'test commit' 9a9283d556f6 newubunto:v1
cat ubuntu-18.04-x86_64-minimal.tar.gz I docker import - ubuntu:l8.04
docker build -t 创建的镜像名称 dockerfile存放目录
docker save -o ubuntu_18_04.tar ubuntu:18.04
docker load -i ubuntu_18_04.tar
docker tag myubuntu:latest pomelott/myubuntu:18.04
docker push pomelott/myubuntu:18.04
注意:push需要推送至国外dockerHub源,会异常缓慢。修改镜像源只能解决pull的问题,就像npm,publish的时候也只能切回npm的官方源才可以。docker create -it ubuntu:18.04
, 可以通过 docker ps -a
查看docker start [containerID]
可以通过 docker ps
查看docker run [containerID/镜像名]
docker run -itd ubuntu:18.04 /bin/bash
docker logs [containerID/name]
docker pause [containerID/name]
, 取消暂停 docker unpause [containerID/name]
docker stop [containerID/name]
,此时通过 docker ps
无法看到已终止的容器docker stop $(docker ps -aq)
docker restart [containerID/name]
docker kill [containerID/name]
docker container prune
docker attach [containerID/name]
,通过exit退出后,容器即终止。docker exec -it [containerID/name] /bin/bash
, 通过exit退出后,容器不会终止。docker rm [containerID/name]
docker export -o export_ubuntu.tar ce5
docker import export_ubuntu.tar tate-ubuntu:v1.0
docker inspect [containerID/name]
docker top [containerID]
docker stats [containerID]
docker cp test.js 385e9dfbf889:/root/
docker diff [containerID]
docker port [conainerID]
docker update [container]
— blkio-weight uintl6 :更新块 IO 限制, 10 1000 ,默认值为 ,代表着无限制;— cpu-period int :限制 CPU 调度器 CFS (Completely Fair Scheduler )使用时间,单位为微秒,最小 1000;— cpu-quota int :限制 CPU 调度器 CFS 配额,单位为微秒,最小 1000;— cpu-rt period int :限制 CPU 调度器的实时周期,单位为微秒— cpu-rt runtime int :限制 CPU 调度器的实时运行时,单位为微秒;— c, -cpu-shares in 限制 CPU 使用份额;— cpus decimal :限制 CPU 个数;— cpuset-cpus string :允许使用的 CPU 核,如 0-3, 0,1;— cpuset mems string :允许使用的内存块,如 0-3' 0, 1;— kernel-memor bytes :限制使用的内核内存;— m, -memory bytes 限制使用的内存;— memory-reservation bytes :内存软限制;— memory-swap bytes :内存加上缓存区的限制, 表示为对缓冲区无限制;— restart string 容器退出后的重启策略主要做本地与容器、容器与容器之间的数据通信
— mount 项支持三种类型的数据卷,包括volume 普通数据卷,映射到主机/var/ lib /docke /volumes 径下;bind :绑定数据卷,映射到主机指定路径下;tmpfs :临时数据卷,只存在于内存中docker run -idt -P --name web --mount type=bind,source=/root/file,destination=/root ubuntu:18.04
docker run -it -v /root/file --name filedata ubuntu:18.04
, filedata为数据卷容器的名字docker run -it --volumes-from filedata --name test_db1 ubuntu:18.04
,进入容器后可以查看 /root/file是否存在docker run -it --volumes-from filedata --name test_db2 ubuntu:18.04
, 进入任意容器后,在挂载点 /root/file
下做部分操作,然后再其他容器中看是否做出响应docker run --volumes-from filedata -v /root/backup:/root/file --name backup-container ubuntu:18.04 tar cvf /root/file/backup.tar /root/file
,分为以下几步:、root/backup
目录挂载至容器的/root/file
/root/file
目录压缩为backup.tar并输入至 容器的/root/file/
目录下结果: 本机的 /root/backup
与数据卷容器 filedata 的 /root/file
与 备份容器的 /root/file
三者相互挂载,至此本地的 /root/backup
目录下就会出现backup.tar文件了,备份完成!docker run -idt -p --name testport2 8888:9999 ubuntu:18.04
docker run -itd -p 127.0.0.1:8888:9999 --name specific-map ubuntu:18.04
docker run -idt -p 127.0.0.1::8899 --name any-map ubuntu:18.04
docker run -idt --name link1 ubuntu:18.04
and docker run -idt --name link2 --link link1:link1-alias ubuntu:18.04
, 在进入容器后可以通过env 查看以link1_alias(链接的别名)转载地址:http://cjufz.baihongyu.com/