1. Docker简介
Docker官方网址: https://docs.docker.com/ 英文地址
Docker中文网址: http://www.docker.org.cn/ 中文地址
Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。
Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
Docker架构
2. Docker安装
要求:Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker
安装步骤:
① 通过 uname -r 命令查看你当前的内核版本
uname -r
② 使用 root 权限登录 Centos。确保 yum 包更新到最新
yum -y update
③ 卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
④ 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
⑤ 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
⑥ 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
⑦ 安装docker
sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
⑧ 启动并加入开机启动
systemctl start docker
systemctl enable docker
⑨ 验证安装是否成功(有client和server两部分表示docker安装启动都成功了)
docker version
3. 配置Docker阿里镜像加速
详细参考: https://cr.console.aliyun.com/cn-hangzhou/mirrors
进入上述网址,键入红框中的命令:
[root@localhost local]# sudo mkdir -p /etc/docker
[root@localhost local]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
> "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
此时cat一下,可以查看到配置的镜像地址
[root@localhost local]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
最后,键入以下命令,重启Docker即可:
[root@localhost local]# sudo systemctl daemon-reload
[root@localhost local]# sudo systemctl restart docker
4. Docker下载镜像文件
① 搜索镜像
[root@localhost local]# docker search java
可使用 docker search命令搜索存放在 Docker Hub(这是docker官方提供的存放所有docker镜像软件的地方,类似maven的中央仓库)中的镜像。执行该命令后, Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓库。
② 下载镜像(这里以下载java8为例)
[root@localhost local]# docker pull java:8
使用命令docker pull命令即可从 Docker Registry上下载镜像,执行该命令后,Docker会从 Docker Hub中的 java仓库下载最新版本的 Java镜像。如果要下载指定版本则在java后面加冒号指定版本。
③ 列出本地镜像(已下载的镜像)
[root@localhost local]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java 8 d23bdf5b1b1b 23 months ago 643MB
可以看到,刚才下载的java8已经在本地镜像列表中
5. Docker安装Nginx服务器
① 安装
[root@localhost local]# docker run -d -p 81:80 nginx //不指定端口号默认以最新的进行下载
参数说明:
-d 后台运行
-p 宿主机端口:容器端口 #开放容器端口到宿主机端口
浏览器访问http://Docker宿主机IP:81,即可访问成功:
② docker run 和 docker pull 的区别
docker run 会检测在本地images仓库有没有镜像文件,如果没有,就会去远程仓库下载,放到images,同时会创建一个容器运行,但必须指定端口号(一般docker run用的比较多)
docker pull只会下载镜像文件放到images里面去
③ docker ps 命令 --> 列出正在运行的容器
[root@localhost local]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f0b6cd60181 nginx "nginx -g 'daemon of…" 14 minutes ago Up 14 minutes 0.0.0.0:81->80/tcp compassionate_northcutt
④ docker inspect containerid 命令 -->查看容器的信息
[root@localhost local]# docker inspect 7f0b6cd60181
可以看到以下信息:
此时通过curl命令可以访问到,而浏览器则访问不到。:
[root@localhost ~]# curl 172.17.0.2:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
⑤ 其他命令
systemctl restart docker 重启docker
systemctl stop firewalld 关闭防火墙
6. Docker配置Nginx负载均衡
通过Docker安装的Nginx如何配置nginx.conf?
Docker通过容器运行Nginx-----安装的目录 在容器中
/容器id/etc/nginx
/容器id/etc/mysql
默认情况下安装在 容器的etc目录
Docker 安装的软件如何修改配置文件的?
答案:容器挂载外部配置文件 –v(使用挂载方式,外部的配置文件覆盖内部容器配置文件)
详细步骤:
① 创建挂载目录
# mkdir -p /data/nginx/{conf,conf.d,html,logs}
上传配置好的nginx.conf配置文件到/data/nginx/conf目录下
② 停止/删除正在运行的docker的nginx容器:
docker stop 容器名(names属性)
docker rm 容器id(container_id属性)
③ 启动容器
其中第一个红色为宿主机的nginx配置文件绝对路径
第二个红色为nignx的docker容器的nginx配置文件的绝对路径
docker run --name mynginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx -d docker.io/nginx
④ 进入nginx的docker容器(重点)
docker container exec -it f0b1c8ab3633 /bin/bash
备注:f0b1c8ab3633指的是docker ps查出来的nginx的容器id(container id属性)
可以发现,命令行的前缀变为了 root@4938c1288b47:/#
nginx在docker容器的配置文件默认配置在虚拟容器的/etc/nginx目录下
⑤ 拓展
容器:即虚拟操作系统
宿主机的命令行:[root@localhost local]#
docker容器的命令行:root@4938c1288b47:/#
进入容器后,该docker是非常轻量的,默认没有vi插件,但也不必装,不建议直接在容器中更改配置文件等信息,所以采用挂载的方式进行容宿主机的配置文件和容器内的配置文件进行同步。
7. Docker常用命令
docker images 查看本地镜像文件
docker ps 查看正在运行的容器
docker ps –a 查看所有的容器
docker container exec -it container_id /bin/bash 进入到容器
exit 退出(docker容器中的命令,键入此命令,退回宿主机命令行)
docker version 查看版本
docker run -d -p 80:80 nginx 启动nginx容器
docker rmi imgage_id 删除镜像(docker imges查出来的结果)
docker rm 容器id 删除容器
docker stop 容器name 停止容器