docker概念简介
- 首先要明白一点docker是一个容器的概念,那么它就是夸平台的。
- 其次,docker的优势:解决团队开发中环境不同步,夸容器
--link
等分布式运用。 - 另外,针对特别的环境及运行要求,使用docker脚本一键解决各种烦恼。等等
安装
- Windows下载地址选择对应版本下载安装后测试一下你是否安装成功:测试步骤
制作docker基础镜像
-
首先选择基础什么系统作为你的基础镜像,这点很重要,会直接影响到你线上项目和本地项目的一些隐性bug,所以最好是用线上的运行环境去做打包,当然如果你只是玩玩,那就在虚拟机中打包就好。
方法一、直接使用docker社区的基础裸机镜像
docker pull centos #Docker Hub镜像仓库中拉取centos系统镜像
- 然后
docker images
查看一些几可以看到你的centOS镜像了,之后你就可以直接进行docker run
了。
方法二、以实际的线上云主机的系统作为基础镜像
- Step-1 CentOS 7.4.1708系统:清除yum缓存,缩小文件系统体积
yum clean all
yum clean allrm -rf /var/cache/yum
- Step-2
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar /
:将制作的centos导入,并命名为:centos6-base
使用制作的docker基础镜像创建你的容器
- 导入docker运行依赖的基础镜像文件:
docker import D:\docker\centos.tar
(根据你镜像存放地址写) - 查看导入的镜像是否存在,以及系统自动生成的镜像名:
docker image ls
- 运行一个docker容器 eq:
docker run -d -t -i -v /softweare/data:/data -p 80:80 d3a1fb5eb673 /bin/bash
完整解析:以交互模式在后台运行一个容器,该容器的策略有:0.改容器使用的基础镜像是
d3a1fb5eb673
1.打开一个tty(要注意history命令只是读取一个tty的history,同一个用户可以开多个tty
,但是你运行history却只能看到当前的tty记录值
)会话(采用/bin/bash);2.挂载本机的/softweare/data目录到容器中的/data目录;3.绑定本地80端口映射到容器中的80端口;
- 进入run的容器
docker attach [id/name]
- 退出一个进入的容器
ctrl+pq
(pq是两个键) - 查看docker中存在的容器
docker ps -a
- 是否需要创建软链接和硬链接(看项目需求)
软链接:ln -s src dst
硬链接:ln src dst
- 虚拟域名映射
C:\Windows\System32\drivers\etc下有个hosts文件(对应Linux下面的/etc/hosts
)
127.0.0.1 你需要的域名(要对应提供web服务程序的配置文件中的server_name)
另:域名后缀不要使用.dev(谷歌已经将这个后缀的顶级域名买断了,一旦配置dev后缀chrom将自动进行转发)。 - 删除一个docker 容器
docker rm [id/name]
(docker容器名或者docker容器id) - 查看某个容器运行时的配置
docker inspect [id/name]
- 参数解析:
-d, --detach=false
指定容器运行于前台还是后台,默认为false
-i, --interactive=false
打开STDIN,用于控制台交互
-t, --tty=false
分配tty设备,该可以支持终端登录,默认为false
-u, --user=""
指定容器的用户
-a, --attach=[]
登录容器(必须是以docker run -d启动的容器)
-w, --workdir=""
指定容器的工作目录
-c, --cpu-shares=0
设置容器CPU权重,在CPU共享场景使用
-e, --env=[]
指定环境变量,容器中可以使用该环境变量
-m, --memory=""
指定容器的内存上限
-P, --publish-all=false
指定容器暴露的端口
-p, --publish=[]
指定容器暴露的端口
-h, --hostname=""
指定容器的主机名
-v, --volume=[]
给容器挂载存储卷,挂载到容器的某个目录
--volumes-from=[]
给容器挂载其他容器上的卷,挂载到容器的某个目录
--cap-add=[]
添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cap-drop=[]
删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
--cidfile=""
运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
--cpuset=""
设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
--device=[]
添加主机设备给容器,相当于设备直通
--dns=[]
指定容器的dns服务器
--dns-search=[]
指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
--entrypoint=""
覆盖image的入口点
--env-file=[]
指定环境变量文件,文件格式为每行一个环境变量
--expose=[]
指定容器暴露的端口,即修改镜像的暴露端口
--link=[]
指定容器间的关联,使用其他容器的IP、env等信息
--lxc-conf=[]
指定容器的配置文件,只有在指定--exec-driver=lxc时使用
--name=""
指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
--rm=false
指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
--privileged=false
指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart="no"
指定容器停止后的重启策略:
1.no:容器退出时不重启
2.on-failure:容器故障退出(返回值非零)时重启
3.always:容器退出时总是重启
当你将你容器一切配置妥当,可以作为团队使用的基础容器时别忘记将你做好的容器生成一个镜像
docker export [id/name] [xxx.tar] #归档的包名推荐以.tar的归档包
会持续更新,更新+3。