docker安装
环境:centos7
官网中文安装手册:官网中文安装手册
yum 安装gcc相关
yum -y install gcc
yum -y install gcc-c++
安装需要的软件包:
yum install -y yum-utils device-mapper-persistent-data lvm2
设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
安装docker(我安装ce版不行会报错)
yum -y install docker-ce(安装ce版)
yum install docker(博主直接使用这个命令安装成功)(二选一)
启动docker
systemctl start docker
测试是否成功
docker version
帮助命令:
docker version
docker info
docker --help
镜像命令
docker images
作用:查看本机镜像
docker images-a列出本地所有镜像
docker images-q只显示镜像ID
docker images–digests显示镜像的摘要信息
docker images–no-trunc显示完整的镜像信息
docker search 某个镜像名字
作用:查看所有镜像
docker search --no-trunc:新鲜事完整的镜像描述
docker search -s:列出收藏数小于指定值的镜像
docker search --automated :只列出automated build类型的镜像
docker pull 某个镜像名
作用:下载镜像
docker pull 镜像名
删除镜像
删除单个:docker rmi -f 镜像名
删除多个:docker rmi -f 镜像名 镜像名
删除全部:docker rmi -f $(docker images -qa)
容器命令
前提:需要有centos镜像才能创建容器 docker pull centos
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS选项说明:
–name=“容器新名字”: 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
列出当前所有正在运行的容器
docker ps【options】
options说明:
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
–no-trunc :不截断输出。
退出容器(两种方式)
exit:容器停止退出
Ctrl+p+q:容器不停止退出(类似后台进程)
启动容器
docker start 容器名或容器ID
重启容器
docker restart 容器名或容器ID
停止容器
docker stop 容器名或容器ID
强制停止容器
docker kill 容器名或容器ID
删除已停止的容器
docker rm 容器ID
启动守护式容器
docker run -d 容器名
查看容器日志
docker run -d centos /bin/sh -c “while true;do echo xzl;sleep 2;done”
docker logs -f-t–tail
-f:加入时间戳
-t:跟随最新的日志打印
-tail 数值:显示最后多少条
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
进入正在运行的容器并命令行交互
docker exec -it 容器ID bashShell
重新进入docker attach 容器ID
两者区别
attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程
从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
镜像原理
镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件
unionfs(联合文件系统)
unionfs是一种分层,轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来一层层叠加,同时可以将不同的目录挂载到同一个虚拟文件系统下,union是docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像,可以制作具体的应用镜像
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
docker镜像加载原理
docker的镜像实际由一层层的文件系统组成,这种层级的文件系统unionfs
linux由bootfs和rootfs组成
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。
rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。
平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M??
对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供 rootfs 就行了。由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs。
分层的镜像
在pull的时候,就可以在一层层的下载
docker镜像commit操作补充
docker commit提交容器副本使之成为一个新的镜像
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
docker容器数据卷
能干嘛?容器的持久化,容器间继承+共享数据
直接命令添加
创建主机和容器共享目录
docker run -it -v 主机目录:/容器目录 centos
例:docker run -it -v /myDataVolume:/dataVolumeContainer centos
docker run -it -v 主机目录:/容器目录 ro centos
只读不可写
dockerfile
- 手动编写一个dockerfile文件,要符合file规范
- 有了文件,直接docker build执行,获得一个自定义的镜像
- run
docker是什么?
dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本
构建三步骤
1. 手动编写一个dockerfile文件,要符合file规范
2. 有了文件,直接docker build执行,获得一个自定义的镜像
3. run
FROM:基础镜像
from centos
ENV mypath /tmp
WORKDIR $mypath
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD /bin/bash
持续更新~