Docker的用途
docker可以提供轻量、快速的环境帮助开发者运行项目以及部署到测试环境里头。
它提供简单轻量的建模方式
使用docker开发人员只需要关心程序运行、运维人员只需要关注容器环境
于是它可以避免额外的调试部署的开销
它鼓励单个容器只运行一个应用程序或者进程
高内聚、低耦合、避免在不同服务器上部署应用的时候相互之间产生影响
相比虚拟机它不需要模拟物理内核以及机器一些的行为,所以更轻量级
Docker的基本组成
-
Docker Client 客户端 ------ C/S架构(作为客户端而不是浏览器端)
-
Docker Daemon 守护进程 ------ 后台运行,可以作为server端
-
Docker Image 镜像
1、容器基于镜像启动
2、镜像是一个引导文件系统(bootfs)+root文件系统(centos等等)+联合加载多个其他的文件系统
3、一个镜像一个镜像添加上去,有基础镜像,有上层镜像,组成了复杂的个性化的镜像
-
Docker Container 容器
1、容器怎么通过镜像启动
2、docker在最顶层加载一个读写层,如果有什么变化都会加载到读写层上面
-
Docker Registey 仓库
1、DOCKER HUB 公有仓库,国外仓库,需要科学上网网速才会快,因此后面会教怎么配阿里云的镜像地址
2、私有仓库
Docker特点
1、docker Namespaces命名空间:可以理解为系统资源的隔离(进程、文件系统、网络),使得容器以为自己在一个独立的环境下,就像一台机器一样
2、docker隔离
PID隔离 | |
NET隔离 | 同一台机器的不同容器之间默认是互联,通过docker0的虚拟网桥连接 |
IPC隔离 | 管理跨进程通信访问 |
MNT隔离 | 管理挂载点,也就是文件系统 |
UTS隔离 | 隔离内核和版本标识 |
3、docker controll groups 控制组
管理隔离的资源
资源限制 每个docker都有自己的文件系统、进程环境、网络接口、资源隔离
优先级设定
资源计量
Docker的安装和配置
1、首先排查自己的Linux内核,查看是否为3.10以上的内核
uname -a
2、使用yum update更新yum源
3、(可跳过)yum update kernal,更新安装的Linux的内核,如果内核版本是超过3.10就不用了
https://www.cnblogs.com/cnwangshijun/p/7405153.html
4、yum install docker
5、docker run ubuntu echo "hello world" ,使用exit 退出,验证docker是否安装成功
6、(可跳过)扩充根目录磁盘的空间
https://www.cnblogs.com/lxyuuuuu/p/9717231.html
补充说明:之所以要升级Linux是因为如果是3.10以下的版本,在下载docker的过程当中会提示当前setLinux -->29等错误,这个错误在你下载其他的版本的docker也会发生。而如果直接使用yum update会提示你已经升级到最新的版本,这是因为你使用的镜像是存在官方版本的,想要升到更高版本的内核就需要手动下载、编译、安装内核。
Docker容器的基本操作
1、创建容器,echo一个值
docker run -i -t ubuntu /bin/bash // (标准输入+伪TTY终端),使用exit退出
docker run ubuntu echo "hello world"
2、查看所有容器和正在运行的容器
docker ps //查看正在运行的容器
docker ps -a //查看所有创建过的容器
docker ps -l //查看最近一个创建过的容器
3、其他操作
docker inspect + id //查看某个容器具体情况
docker start -i +id //打开某个容器
docker rm +id //移除没有在启动的容器
docker run --name=container01 -i -t ubuntu /bin/bash //自定义名字创建一个容器
此时可以使用docker inspect + container01来查看这个容器的基本情况
守护形式运行容器
1、守护式容器可以长期运行、没有交互式会话、适合运行应用程序和服务
2、【后台退出】docker 运行一个容器之后,不使用 exit退出,用Ctrl+P Ctrl+Q 的形式退出,此时ps就能查看当前运行容器
3、【重新进入后台】docker attach + id 重新进入后台容器
4、【-d 表示运行的是守护式容器】docker run --name dc1 -d ubuntu /bin/sh -c "while true; do echo hello world;sleep 1; done" -a 用来后台运行容器,这里做了一个循环间隔一秒打印 hello world 的操作
5、【查看日志】docker logs -f -t --tail=1000 ubuntu 查看正在运行的容器的日志-f 跟踪查看,-t(timestamp), --tail==1000 查看结尾处最后1000条数据,不指定就返回所有日志
6、【查看运行中的容器情况】docker top +容器名,查看运行中容器的情况,可以查看相关的进程
7、【启动容器的某条指令】在运行中的容器内启动新进程
docker exec -i -t+容器名+/bin/bash 在容器内启动一个新进程
8、【停止该容器】docker stop 容器名 (结束容器,等待容器结束)
docker kill 容器名 (结束容器,直接杀死容器)
在容器中部署静态网站
1、设置容器的端口映射
设置网站就需要访问容器的8080端口,docker run -p/-P
2、Nginx部署流程
-
创建映射80端口的交互式容器
-
安装Nginx
-
安装文本编辑器vim
-
创建静态页面
-
修改Nginx配置文件
-
运行Nginx
-
验证网站访问
docker run -p 80 --name web -i -t /bin/bash
apt-get update 获取最新的apt
apt-get install -y nginx
apt-get install -y vim
mkdir -p /var/www/html
cd /var/www/html/
vim index.html
然后编写一个index的html文件,随便的就行
whereis nginx 查看nginx的目录
ls /etc/nginx
ls /etc/nginx/sites-enabled/
vim /etc/nginx/sites-enabled/default
将root里头的目录改为 /var/www/html/
cd /
nginx
后台退出(ctrl p ctrl q)
docker ps -ef 查看当前运行情况
docker port web 查看web映射端口
docker top web 查看web里头的进程
curl http://127.0.0.1:32768 其中32768是我的映射的端口,此时你也可以使用linux浏览器查看
docker inspect web //查看容器的ip地址172.17.0.2
curl http://172.17.0.2 也可以查看
那如果stop web ,再start -i web,然后后台退出,然后 docker exec web nginx,再查看端口,它的分配端口会改变吗,现在的结论是,新版本的docker不会
查看和删除镜像
1、docker镜像
docker镜像是使用联合加载的只读文件加载系统
2、docker info 查看docker的镜像存储的位置,不过一般是放在了 /var/lib/docer底下的
3、ls -l /var/lib/docker 查看有哪些镜像
4、查看和删除镜像
-
列出镜像
-
镜像标签和仓库
-
查看仓库
-
删除仓库
docker images --no-trunc //返回的 是非折叠id的镜像列表
(repository 仓库 一系列镜像的集合)
(tag 标签 不同的镜像是由不同tag来指定)
docker images -q //只返回镜像id
docker images ubuntu //返回所有镜像名为ubuntu的镜像
docker inspect + id
docker rmi ubuntu:14.04 //这里使用的是名称+tag的形式来指定到这个镜像
docker rmi + image id //删除通个id的多个标签,慎用删除命令
获取和推送镜像
docker有自己的官方镜像仓库dockerHub,但是因为它的速度比较慢,所以在获取和推送镜像的时候我们需要获取国内的镜像源,加速镜像的下载和推送速度,阿里云可以提供给你加速地址,然后它也可以帮你建立自己的私有仓库以便与你推送和保存自己的镜像。拉取镜像是为了获得官方的镜像或者其他人的镜像,推送镜像是为了将自己的个性化之后的镜像保存到云端仓库中。
1、查找镜像
dockerhub 访问它,在里头搜ubuntu,可以看到官方标星的仓库
docker images -a 看到之前已经安装的镜像
docker pull ubuntu:14.04 安装docker ubuntu镜像,但是这个下载速度很慢,于是我们需要进行一波国内镜像设置,你需要在阿里云上注册一个账号,然后进入到开发者平台中,获取自己的加速器地址,然后配置到镜像设置中,具体教程如下:
https://help.aliyun.com/document_detail/60750.html?spm=a2c4g.11186623.6.549.487246853Kna7V
2、拉取镜像
获取镜像的时候如果速度很慢的话,那就是从dockerHub上下载的速度慢了,建议使用阿里云的镜像地址。
docker pull mysql
docker images
3、推送镜像
说先得有一个自己的阿里的仓库,先进入到控制台
然后搜索进入容器镜像服务
点击创建一自己的仓库,创建
然后在最后一步选择本地仓库。创建完成。
接着点进管理,你会看到一系列教你配置的过程。
别忘了结束之后,如果你设置的是公开的仓库,可以在镜像搜索里头找到自己的仓库。
都结束了之后,可以尝试,现在本地删除自己的仓库,再从阿里云上把自己的镜像pull下来。