说明
- Docker是一个容器化平台,它将应用程序及其所有依赖项以容器的形式打包在一起,以确保应用程序在任何环境(无论是开发环境、测试环境还是生产环境)中无缝运行。
- Docker容器,将一个软件包在一个完整的文件系统中,其中包含运行所需的一切:代码、运行时、系统工具、系统库等任何可以安装在服务器上的东西。
- 它都将始终运行相同的程序,无论软件的环境如何。
1.环境准备
1、虚拟机or物理机
2、centos7系统(版本稳定,对docker支持友好)
笔者是在虚拟机安装的centos7
cat /etc/redhat-release //查看centos的版本
CentOS Linux release 7.7.1908 (Core) //笔者的版本,发行版7的都可以
2.安装
1.删除旧版本的docker,旧版本的 docker 的叫做 docker 或者 docker-engine,如果系统中已经安装旧版本,则需要删除。
yum remove docker docker-common docker-selinux docker-engine
2.添加新docker的yum源,新的 docker 叫做 docker-ce ,如果第一次安装 docker-ce 需要设置 docker-ce 的 yum 源。
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
3.配置国内镜像源拉去镜像
为了提高Docker镜像的安装速度,改成从国内镜像源拉取镜像
mkdir /etc/docker
vim /etc/docker/daemon.json
添加以下配置
[root@sshtc /]
{
"graph":"/home/docker",
"registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn",
"https://reg-mirror.qiniu.com",
"https://hub-mirror.c.163.com"]
}
4.安装docker
yum update
yum install -y docker-ce
5.启动docker服务
#启动docker
systemctl start docker
#设置开机自启动
systemctl enable docker
6.查看docker的运行状态,看看是否安装成功
systemctl status docker
7.查看docker已经安装的镜像,刚完成安装完为空
这里笔者和大家说明一下什么是docker镜像什么是docker容器:
- Docker镜像是Docker容器的源代码。换句话说,Docker镜像用于创建容器。使用build命令创建镜像,并且在使用run启动时它们将生成容器。镜像存储在Docker注册表中,registry.hub.docker.com因为它们可能变得非常大,镜像被设计为由其他镜像层组成,允许在通过网络传输镜像时发送最少量的数据。
- Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,在主机操作系统的用户空间中作为独立进程运行。Docker容器不依赖于任何特定的基础架构:它们可以在任何计算机,任何基础架构和任何云中运行。
3.Docker与VM虚拟机对比
特性 | Docker | VM |
---|---|---|
启动速度 | 秒级 | 分钟级 |
硬盘使用 | MB | GB |
性能 | 接近原生 | 弱于原生 |
系统支持量 | 单机支持上千容器 | 一般十几个 |
4.镜像加速
由于国外网络问题,需要配置加速器来加速,
修改 /etc/docker/daemon.json来配置国内镜像源。
vim /etc/docker/daemon.json
将原来的源替换成163的
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
5.卸载docker、操作容器、操作镜像
1. 卸载docker:
- 查看docker的运行状态
systemctl status docker
- 查询安装过的包
yum list installed | grep docker
- 删除安装的软件包
yum -y remove docker.x86_64
2. 操作容器:
- 列出所有的容器
#查看所有正在运行的容器
docker ps
#查看所有容器
docker ps -a
#用一页列出所有容器,按Esc,wq退出
docker ps | less -S
- 停止、启动、杀死、重启一个容器
docker stop 容器ID
docker start 容器ID
docker kill 容器ID
docker restart 容器ID
- 删除容器
#删除容器
docker rm -f 容器ID
#删除所有容器
docker rm -f `docker ps -a -q`
- 进入容器内部,同时运行bash
docker exec -it 容器ID /bin/bash
以root身份进入docker容器根目录
docker exec -ti -u root 容器ID /bin/sh
如果出现 ls: can’t open ‘.’: Permission denied错误,也就是无法进入该目录
原因是centos7.x及以上系统默认的selinux进程会iu禁用部分权限,可使用以下方式解决
setenforce 0 //setenforce [0|1], 0宽容模式 1强制模式 默认强制模式(Enforcing)
systemctl daemon-reload //重新加载配置文件
systemctl restart docker //重启docker
- 查看容器启动日志
docker logs --tail 300 -f 容器ID
3. 操作镜像:
- 列出、搜索、拉取、删除镜像
docker images
docker search 镜像名
docker pull 镜像名
docker rmi 镜像ID
查看镜像历史
docker history 镜像ID