1 概述
解决开发到运维的复杂配置问题,解决集群部署问题
镜像:应用相关的整套环境
理念:一次封装,到处运行
docker三要素:镜像 容器 仓库
docker秒级启动
容器没有自己的内核,也没有硬件虚拟
docker、mesos等容器技术使大规模动态调度称为可能
新浪、美团、蘑菇街...
镜像的实例即容器,一个镜像可以创建多个容器
镜像即模板
可以把容器看做简易版的linux环境
仓库集中存放镜像
docker-ce为社区版免费
环境搭建
centos6安装docker
# 要求centos 6.5以上
# docker-ce版要求centos7以上
# 安装docker依赖
yum install -y epel-release
# 安装docker
# 该命令由于gfw不可用
yum install -y docker-io
yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm
# 配置文件位置
/etc/sysconfig/docker
service docker start
docker version
centos7安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
yum clean all && yum makecache
yum -y install docker-ce-18.06.1.ce-3.el7
# 配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1vrs21kz.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 运行hello world
docker run hello-world
原理
docker是cs结构的系统
docker不虚拟硬件,在cpu 内存利用率有优势
常用命令
# 帮助类命令
docker version
docker info
# 类似linux man命令
docker help
# 镜像命令
# 列出本地镜像
docker images
# 含中间层
docker images -a
# 只显示镜像id
docker images -q
# 显示摘要信息
docker images --digests
# 不截取id
docker images --no-trunc
# 搜索镜像
docker search tomcat
# stars超过30的镜像
docker search -s 30 tomcat
# 拉镜像 默认使用latest
docker pull tomcat
# 删除镜像
docker rmi hello-world
# 提示无法删除,强制删除
docker rmi -f hello-world
# 删除多个镜像
docker rmi -f hello-world nginx
# 删除所有容器
docker rmi -f $(docker images -q)
# 容器命令
# 拉取centos
docker pull centos
# i 交互模式 t 分配伪终端
# --name 可指定容器名称
docker run -it 0d120b6ccaa8
# 列出容器
# -a 正在运行的和历史容器
# -l 上一次运行的容器
# -n 上n次运行的容器
docker ps
# 退出并关闭容器
exit
# 退出不关闭容器
ctrl + p + q
# 启动关闭的容器
docker start d61f2293dc34
# 重启容器
docker restart e20333d60fba
# 停止容器
docker stop e20333d60fba
# 强制停止容器
docker kill d61f2293dc34
# 查看过去运行的两个容器
docker ps -n 2
# 删除已停止的容器
docker rm e20333d60fba
# 后台运行容器
docker run -d tomcat
# 容器命令如果不是一直挂起的命令就会自动退出
# 查看容器日志
docker logs -t -f --tail 3 3da4b26aa8ea
# 查看容器内进程
docker top 3da4b26aa8ea
# 查看容器内部细节,以json形式展示
docker inspect 3da4b26aa8ea
# 进入正在运行的容器并以命令行交互
docker attach 2b0856486ca0
# 容器执行命令返回宿主机
docker exec -t 2b0856486ca0 ls -l /tmp
# exec也可以进入容器终端
docker exec -t 2b0856486ca0 /bin/bash
# 从容器内拷贝文件到主机
docker cp 2b0856486ca0:/tmp/ks-script-2n9owwnh /root
镜像
联合文件系统
docker镜像由一层层文件系统组成
bootfs 包含bootloader和kernel
bootfs之上是rootfs,即典型linux系统的标准目录和文件
镜像
docker镜像分层是为了共享资源
镜像都是只读的
# 端口映射
docker run -it -p 8080:8080 tomcat
# 随机分配端口
docker run -it -P tomcat
# 根据运行中容器提交镜像
docker commit -a "vincent" -m "tomcat without docs" ac43cad04aec vincent
/mycat:1.2
# 删除所有容器
docker rm -f $(docker ps -q)
网友评论