Docker的概念:
Docker 是一个开源的应用容器引擎,基于Ga语言 并遵从Apace2.0协议开源Docker 可以让开发者打包他们的应用以及依赖包到轻量级、可移植的容器中流行的 Linux 机器上,也可以实现虚拟化。
然后发布到任何容器是完全使用沙箱机制,相互之间不会有任何接口(类似IPhone 的 app),更重要的是容器性能开销极低。
Docker应用场景:
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker的优点:
1、简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker 中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的 处理下,只需要数秒就能完成。
2、避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你打包你的纠结!比如 Docker 镜像;Docker 镜像中 包含了运行环境和配置,所以 Docker可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数 据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
3、节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高 价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也 改变了虚拟化的方式。
Docker的安装:
ubuntu的安装
1.更新软件源
2.执行安装
3.查看安装状态
安装成功就启动了
4.跑一个入门镜像
5.查看安装的镜像
centos的安装:
1. 更新yum源
让yum源最新
2.执行安装
安装完成之后查看一下:
3.启动docker
启动之后查看状态:
4.跑一个入门镜像
5.查看安装的镜像
Docker在centos7上安装完毕,还有很多方式可以安装docker,比如通过gostcloud安装,还有官方脚本安 装,等待,自行去拓展。
Docker的使用:
1. 运行hello-world
Hello-world是官方推荐的学习入门镜像,功能很简单,运行之后会打印出一句话. 这个镜像我们已经运行过,但是里面有很多我们不清楚的地方,那么现在来解。
由上面的截图我们可以看到执行之后又对应的输出.这条命令包含了三个部分:
- Docker : docker的客户端程序
- Run: 子命令,用于运行容器
- Hello-world : 镜像的名字
这条命令首先回去本地查找是否有hello-world这个镜像,如果没有则会从dockerhub(docker主仓库)去拉 取,之后会启动一个容器,会把镜像装载到容器中运行.
所有的docker命令格式都是如下格式:
现在来查看本地的镜像:
通过docker images 可以看到本地到底有哪些镜像.这里我们看到有一个hello-world镜像.
对应参数的解释:
Repository : 镜像的名字
Tag: 镜像版本,类似git的tag,如果run的时候不带版本,那么就会拉取最新的latest.
Image id : 这个是镜像的截取后的唯一id
Created: 这个镜像是在什么时候创建的,指的是仓库里面的创建时间.
Size: 镜像的大小.
2. 容器和镜像
容器和镜像是docker最核心的部分.使用docker实际上就是在容器里面运行一个镜像.
容器的概念
很多人认为docker容器就是轻量级的虚拟机,实际上docker容器和虚拟机区别很大,从根本上来说,容器就 是运行在操作系统上的一个进程.只不过加入了对资源的隔离和限制.
镜像的概念
容器是一个动态的概念,那么镜像是一个相对静止的概念,简单来说:镜像就是容器中的文件系统.
容器和镜像的关系
容器和镜像是密切相关的,二者缺一不可,也是可以相互转换的:
Docker的镜像最初是从官方拉取的,通过docker run 即可启动一个容器运行,当容器需要转化为镜像时,可 以通过docker commit进行转化。
3. docker的入门操作
入门操作涉及到的命令:
- docker info
- docker search
- docker pull
- docker ps
- docker start/stop
查看容器基本信息**:docker** info
Docker info 是经常用来查看运行状态及版本信息的命令,是整个docker daemon守护进程运行状况的缩 影,包括容器个数,镜像个数,daemon版本,使用的存储驱动等信息。
查找镜像:docker search
如果要拉取某个镜像,可以先对镜像进行查询.
下载镜像:docker pull
我们来下载一个Ubuntu(官方推荐的基础镜像)
查看一下:
如果本地有,就不会再去仓库里面下载:
如果镜像下载很慢,可以配置一个官方的中国加速镜像, 修改 /etc/docker/daemon.json(如果文件不存 在请新建该文件)
加上:
重启docker服务即可生效.
运行含shell终端的容器
Ubuntu大家都知道是一个系统,我们来通过交互的方式运行一下。
这样就一键拥有了一个ubuntu系统,是不是很惊讶!这就是容器的魅力.
相关参数的解释:
-i : 交互模式
-t : 表示使用pseudo-TTY,关联到容器的stdin和stdout
ubuntu: 表示要运行的镜像
/bin/bash : 表示启动时要运行的命令(这里就是shell命令)
退出交互容器运行直接使用:exit
如果想让容器后台运行可以直接加-d参数就可以了.这个后台运行不是说让容器一直运行**,而是:** 不占 用当前终端**.**
下面一串字母就是容器的id,这样后台运行的ubuntu 运行完就停止了, 如果想要一直后台运行就需要加一 句代码:
docker run -d ubuntu /bin/bash -c "while true; do echo hello docker; sleep 1;
done"
这时进入后台正在运行的容器的命令:
docker exec -it 容器ID /bin/bash
注意:
Docker 每次run都会创建一个新的容器
运行一个Apache容器
先搜索:
拉取:
启动:
浏览器直接访问:
复制文件:docker copy
容器的空间相对隔离,改变容器中的文件就变得不是那么容易。使用docker cp命令
可以复制宿主机文件到容器内部。
命令:
复制宿主机文件到容器 : docker cp 宿主机目录及文件 容器名称:容器目录 。
准备一个文件: my.html
进行复制
先要看容器里面的根目录:
docker cp my.html gxa-apache:/usr/local/apache2/htdocs/my.html
挂在虚拟目录
主要是在run的时候进行挂载
apche的根目录: /usr/local/apache2/htdocs
挂载的参数: -v 宿主机的目录:容器的目录
docker run -d -p 8089:80 -v /s337:/usr/local/apache2/htdocs --name s337-httpd
httpd
查看所有容器: docker ps
图中可以看到运行的容器
如果要列举出所有的容器就需要加一个参数 -a:
停止运行中的容器:docker stop 容器ID/名字
Docker停止运行中的全部容器的命令:
docker stop $(docker ps -q)
重新启动容器:docker start/restart 容器ID/容器名字
Start:
删除容器: docker rm 容器ID/容器名字
一键删除所有容器:docker rm $(docker ps -aq)
删除镜像:docker rmi 镜像ID或镜像名称
如删除hello-world
总结:
现在来总结一下docker的基本使用命令:
Docker search: 搜索镜像
Docker pull : 拉取镜像
Docker run : 运行容器
Docker images : 列出所有镜像
Docker ps : 查看容器
Docker stop/start/restart/kill 容器的启停
Docker rm: 删除容器
Docker rmi : 删除镜像 Docker logs: 查看容器的日志
Docker搭建lamp
查询镜像lamp
拉取
创建并启动容器
配合docker hub说明启动:
https://registry.hub.docker.com/r/mattrayner/lamp
docker run -d --name lamp -p "8080:80" -v /var/app:/app mattrayner/lamp:latest