一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。开发和运维之间协做需要很多东西尤其是各个版本的迭代之后,不同版本环境的兼容,docker应运而生。
Docker是基于Go语言实现的开源项目,解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
docker三要素:镜像、仓库、容器。
docker对比虚拟机优势
1、docker有着比虚拟机更少的抽象层。由于docker不需要hypervisor实现硬件资源虚拟化运行docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在cpu、内粗利用率上docker将会在效率上有明显优势。
2、docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍然避免引寻、加载操作系统内核比较费资源的过程。虚拟机加载Guest OS是分钟级别的。docker直接利用宿主机操作系统,忽略了反个过程,只需要几秒。
容器和 VM 之间的差异
-
容器是一个进程集合,具有自己独特的视图视角;
-
镜像是容器所需要的所有文件集合,其具备一次构建、到处运行的特点;
-
容器的生命周期和 initial 进程的生命周期是一样的;
-
容器和 VM 相比,各有优劣,容器技术在向着强隔离方向发展。
centos Docker安装
支持一下centos本本:
centos7(64-bit),要求系统为64位、系统内核版本为3.10以上
centos6.5(64-bit)或更高版本,要求系统64位,系统内核版本为2.6.32-431或者更高版本。
doctor 安装:
1、centos6.5+上命令 yum install -y epel-release
centos7+
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、centos6.5+上命令 yum install -y docker-io centos7.0+ yum install -y docker-ce
3、安装后的配置文件: /etc/sysconfig/docker centos7.0+ /etc/docker/deamon.json来使用加速器
4、启动Docker后台服务centos6.5+上命令: service docker start centos7.0+ systemctl start docker
5、docker version 验证 ps -ef|grep docker
CentOS Docker 安装
使用官方安装脚本自动安装
安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
手动安装
卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装 Docker Engine-Community
使用 Docker 仓库进行安装
1、设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
device-mapper-persistent-data \
lvm2
使用以下命令来设置稳定的仓库。
使用官方源地址(比较慢)
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
可以选择国内的一些源地址:
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
清华大学源
$ sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
2、安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io
Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。
要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:
1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
启动 Docker。
$ sudo systemctl start docker
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
$ sudo docker run hello-world
镜像加速
Docker镜像加速器:
/etc/docker/daemon.json
{
"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]
}
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
sudo systemctl daemon-reload
sudo systemctl restart docker
常见错误
检查 /etc/docker/daemon.conf文件内容是否多了“,”等其他位置符号,或者格式不正确
{"registry-mirrors": ["http://34df6785.m.daocloud.io"],}
Docker常用命令
帮助命令
1.docker version 2.docker info 3.docker --help
镜像命令
1.docker images
选项说明: REPOSITORY:TAG表示镜像仓库源 TAG:镜像的标签 IMAGEID:镜像id CREATED:镜像创建时间 SIZE 镜像:大小
参数 -a:列出所有镜像 -q:只显示镜像ID --digests:显示镜像的摘要信息 --no-trunc:显示完整的镜像信息
2.docker search 某个镜像的名字
网站 https://hub.docker.com
命令 -f starts=30 其他查看 docker search --help
3.docker pull 某个镜像的名字 用于从镜像仓库中拉取或更新指定镜像 等价于 docker pull tomcat:latest
4.docker rmi 某个镜像名字ID
-f:删除单个
docker rimi -f hello-world
删除多个,中间加空格
docker rmi -f hello-word nginx
删除全部
docker rmi -f &(docker images -q)
容器命令
运行容器 docker run 容器id
创建一个新的容器并运行一个命令
--name=“容器新名字”:为容易指定一个名称;
-d:后台运行容器,并返回ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i使用;
-P:随机端口映射;
-p:指定端口映射,有以下四种格式
查看容器 docker ps
列出当前所有正在运行的容器
-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 rm -f $(docker ps -qa) docker ps -aq|xargs docker rm
启动守护式容器 后台运行docker
docker run -d centos
查看容器日志 docker logs -f -t 容器ID 参数:-t是加入时间戳 -f更随最新日志打印 --tail数字显示最后多少条
查看容器内运行的进程 docker top 容器ID
查看容器内部的细节 docker inspect 容器ID
启动容器并以命令交互
docker exec -it 容器ID /bin/bash或bash 是在容器中打开新的终端,并且可以启动新的进程
docker exec -it 98ef9a0b5e52 bash
重新进入docker attach 容器ID 直接进入容器启动命令的终端,不会启动新的进程
从容器内拷贝文件到主机上 docker cp 容器ID:目标文件 本机文件
docker cp b11f8ebc0ef6:/tmp/a.txt /root/cc/b.txt
如果是配置了国内镜像,并且镜像文件为
/etc/docker/daemon.json
,则修改文件后缀为.conf
即可正常启动docker
服务