Docker -----Study
1、Docker
docker是基于GO语言实现的云开源项目。
docker主要作用是:对应用组件的封装、分发、部署、运行等生命周期的管理,使应用及其运行环境”一次封装,到处运行“。
解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
2、Docker三大要素
【1】镜像(image):就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。
【2】容器(Container):容器使用镜像创建的运行实例,可以把容器看作是一个简易版的linux环境和运行在其中的应用程序,每个容器都是相互隔离的保证了平台的安全性。
【3】仓库(Repository):是集中存放镜像文件的场所。又分为公开仓库和私有仓库,最大的公开仓库是Docker Hub,国内的仓库有阿里云、网易云等。【仓库注册服务器上存放很多的仓库,每个仓库又包含了多个镜像,每个镜像有不同的标签】。
3、安装docker
CentOS6.8安装:
(1) yum install -y epel-release
(2) yum install -y docker-io
(3)检查是否有该配置文件:/etc/sysconfig/docker
(4)启动docker服务:service docker start
(5)docker version 查看版本
安装过程中可能会出现的问题解决:
https://blog.****.net/kdchxue/article/details/50902580
https://blog.****.net/liuhailiuhai12/article/details/53560146
4、配置镜像加速(阿里云)
登录阿里云-->控制台-->容器镜像服务
vim /etc/sysconfig/docker文件
重启服务:service docker resatrt
查看是否配置成功:ps -ef|grep docker
5、docker镜像命令
【1】docker images 【options】//查询本机上的所有镜像
options: -a:列出本地所有镜像(含中间映像层) -q:只显示镜像ID --digests:显示镜像的摘要信息 --no-trunc:显示镜像的完成信息
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像的创建时间
VIRTUAL_SIZE:镜像的大小
【2】docker search 【options】 xxx镜像名
-s 数量:列出收藏数不小于指定值的镜像 --no-trunc :显示完整的镜像描述 --automated:只列出automated build类型的镜像
表示从docker hub 查询该镜像
【3】docker pull xxx镜像名 --》下载镜像
【4】删除镜像
删除单个:docker rmi -f 镜像ID
删除多个:docker rmi -f 镜像1ID,镜像2ID......
删除全部:docker rmi -f $(docker images -qa)
6、docker容器命令
【1】新建并启动容器:docker run 【options】 image
options:
--name :为容器指定一个名称。
-d:后台运行容器 。
-i:交互式模式运行容器,通常和-t使用。
-t:为容器分配一个伪输入终端
【2】列如当前所有正在运行的容器:docker ps 【options】
options
-a 列出当前所有正在运行的容器+历史上运行的容器。
-i 显示最近创建的容器
-n 显示最近n个创建的容器
-q 静默模式,只显示容器编号
--no-trunc:不截断输出
【3】退出容器
exit :容器停止并退出
ctrl+p+q 容器不停止退出
【4】启动容器
docker start 容器ID或者容器名
【5】重启容器
docker restart 容器ID或者容器名
【6】停止容器
docker stop 容器ID或者容器名
【7】强制停止容器
docker kill 容器ID或者容器名
【8】删除已停止的容器
docker rm 容器ID或者容器名
【9】删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
【10】查看容器日志
docker logs -f -t -tail 容器ID
-t:加入时间
-f:跟随最新的日志打印
--tail 数字,显示最后多少条
【11】查看容器内部细节
docker inspect 容器ID
【12】进入正在运行的容器并以命令交互
docker exec -it 容器ID 【可在容器外执行命令并退出容器 也可进入容器里面操作】
docker attach 容器ID 进入容器
【13】从容器内拷贝文件到宿主主机上
docker cp 容器ID:容器内部文件 目的主机路径
7、镜像详解
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行软件的所有内容。
8、复制镜像称为一个新的镜像
docker commit -a="作者" -m="提交的信息" 容器ID 目标镜像名:[标签]
9、容器数据卷
容器数据卷用来持久化保存容器数据,并且还可实现宿主机和容器的资源共享。
【1】使用命令来完成资源共享
docker run -it -v /宿主机路径目录 :/容器内目录 镜像名
容器停止退出后,主机修改数据后一样可以同步
【2】使用DockerFile添加
(1)在宿主机新建mydocker文件夹并进入
(2)创建dockerfile文件,并编写
(3)build 构建一个新的镜像
(4)运行镜像
(5)查看对应宿主机的数据卷
(6)测试数据卷数据共享
10、容器间传递数(--volumes-from)
berserk_goodall与dc02容器中的数据卷内容可以相互传递共享。比如在berserk_goodall容器卷中创建一个文件,dco2容器中也会自动生成相同的文件。
11、Docker File
docker file 是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本文件。
12、Docker File保留字
FROM :基础镜像,当前镜像是基于哪个镜像的
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN:容器构建是需要执行的命令
EXPOSE:当前容器对外暴露出的端口号
WORKDIR:指定创建容器后,终端默认登录进来的工作目录
ENV:用来构建镜像过程中设置的环境变量
ADD:将宿主机目录下文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中
VOLUME:容器数据卷,用来将数据保存和持久化工作
CMD:指定一个容器启动是要运行的命令(DockerFile中可以有多个命令,但是只有最后一个生效)
ENTRYPOINT:与CMD一样,都是在指定容器启动程序及参数(多个不会覆盖之前的,等同于追加)
ONBUILD:父镜像在被子镜像继承后父镜像的onbuild被触发。