Docker的安装及镜像加速器
1 Docker 简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
- DockerClient客户端
- Docker Daemon守护进程
- Docker Image镜像
- DockerContainer容器
2 Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建
。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
3 Docker的安装和部署
(1)编辑安装docker的仓库(使用阿里云的源):/etc/yum.repos.d/docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=0
- 由于docker安装过程中存在大量的依赖性,为了一次性解决这个问题在这里我们采用阿里CentOS7的epel源,根据阿里云官方的步骤配置
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
(2)安装docker-ce: yum install docker-ce -y
(3)设置docker服务开机启动并立刻生效:systemctl enable --now docker.service
(4)用docker info
命令来检查Docker的安装是否正确
- 显示 Docker 系统信息,包括镜像和容器数:
docker info
- 查看Linux内核参数:sysctl -a |grep bridge-nf-call-iptables
- 修改Linux内核参数,编辑
/etc/sysctl.d/
的子配置文件:vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
- 重新加载所有的配置文件:
sysctl --system
- 确认Linux内核参数已经被修改:
sysctl -a |grep bridge-nf-call-iptables
- 命令补全:
yum install -y bash-*
- 验证Docker 是否成功安装:
docker info
,不再有错误提示
4 Docker 镜像加速
国内从 DockerHub 拉取镜像速度会比较慢而且容易出错
我们可以通过配置镜像加速器解决,这里使用阿里云的Docker 镜像加速器,只需注册登陆阿里云即可获取
- 通过修改daemon配置文件使用镜像加速:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://jfb56f9n.mirror.aliyuncs.com"]
}
- 重新加载服务的配置文件:
systemctl daemon-reload
- 重启docker服务:
systemctl restart docker.service
- 测试:
使用镜像加速器拉取的速度明显加快:docker pull busybox
5 Docker的常用命令
(1)查看docker所有的镜像:docker images
(2)查看镜像的历史版本:docker history busybox:latest
(3)使用docker中的busybox镜像启动一个容器 :docker run -it busybox
[root@server1 sysctl.d]# docker run -it busybox
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
/ #
- 显示操作系统的发行版号:uname -r,镜像和只是主机的一致
(4)退出并结束容器
-
启动容器:
docker run -it busybox
-
ctrl+d:直接退出并结束容器
-
查看所有状态的容器:
docker ps -a
-
强制删除容器(IP):
docker rm -f 82d1c6fc573c
rm 删除一个或多个容器,默认只能删除非运行状态的容器,-f参数可以强制删除
(5)退出不关闭容器
- 启动容器:
docker run -it busybox
- ctrl+p+q:推出容器不关闭容器
- 查看当前运行的容器:
docker ps
- 将终端依附到容器上,进入ID为08edb376d680的容器:
docker attach 08edb376d680
- ctrl+p+q:推出容器不关闭容器
- 查看所有状态的容器:
docker ps -a
- 强制删除容器:docker rm -f 08edb376d680
(6)在容器退出后,自动删除容器:docker run -it --rm busybox(ctrl+d)
- 查看所有状态的容器:
docker ps -a