一:介绍
本简明教程没有理论和思想,直接介绍怎么使用。
Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中
为什么时候Docker : 不同的应用程序所依赖的环境不一样,如果把他们依赖的软件都安装在一个服务器上,不仅需要调试很久,而且可能会有冲突。
如果想把两个应用程序隔离起来,可以在服务器上创建不同的虚拟机,不同的虚拟机放不同的应用,但是虚拟机的开销比较高。docker作为轻量级的虚拟机,是一个很好的工具。
二:思想
集装箱
标准化
隔离
三:docker有3大核心
1:镜像
Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
镜像不包含任何动态数据,其内容在构建之后也不会被改变
2:容器
运行程序的地方;镜像是静态的,每一层都只是可读的,而容器是动态的,里面运行着我们指定的应用。
3:仓库
仓库-存放镜像的地方
4: 大白解释
记住两点:
1:镜像就像是模板,不能直接使用,如我们下载的redis能直接启动运行吗?NO!
2: 镜像可以创建多个容器,我们运行使用的是容器,就像是你下载了redis 这个安装软件就是镜像,
你使用这个安装软件 在你机器上安装了2次redis,就相当于安装了2个redis容器。你可以这么理解!
但实际思想有区别,安装了2个redis就要占用2份空间,但docker不是这样。
四 docker安装
第1步: 删除原有docker
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
第2步:设置YUM源
yum install -y yum-utils device-mapper-persistent-data lvm2
第3步:阿里镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第4步:安装docker
yum -y install docker-ce
docker分(ce社区版) (ee->企业版) 一般都是安装社区版
五: docker基本命令
5.1 docker
5.1:启动 停止dockers
systemctl start docker 启动docker
systemctl restart docker 重启docker
systemctl stop docker 停止docker
systemctl status docker 查看docker状态
systemctl enable docker 开机启动docker
5.2: 镜像操作
docker pull 镜像名称:版本号
如下拉mysql:
docker pull mysql:8.0 – 下拉mysql 8.0 版本
docker rmi 镜像名称【镜像ID】 删除镜像
docker rmi -f $(docker images) 清空镜像
docker images 查看镜像
repository 镜像库中的镜像名称
TAG 版本
Image ID 镜像ID
CREATED 创建事件
SIZE 大小
5.3 容器操作
docker run 镜像名称:版本号(TAG) 创建一个容器
docker stop 容器名称[容器ID] 停止容器
docker start 容器名称[容器ID]
docker rm -f 容器名称 【容器ID】
docker rm -f $(docker ps -aq) 清空容器
docker logs -tf --tail num 容器ID 查看容器log
docker top 容器ID 查看容器进程
dockers inspect 容器ID 查看容器元信息
docker run -it 镜像名称| 镜像ID 启动容器并进入容器
docker exec -it 容器名称 | 容器ID 进入容器
拷贝容器内文件到本地(宿主机)
docker cp 容器ID或容器名称: 文件路径 空格 本地路径
使用docker ps -a 查看所有容器
CONTAINER ID 容器名称
IMAGE 使用那个镜像创建的容器
COMMAND 命令行
CREATED 创建日期
STATUS 当前状态,
PORTS docker内端口号
NAMES 容器名称
综合应用案例:
比以安装redis为例。
1: 首先启动docker
systemctl start docker
2:查看docker 是否启动成功
systemctl status docker
只要有绿色就代表成功了
3:设置开机启动
为了防止每次启动linux都要启动docker 麻烦 我们可以使用如下命令
system enable docker
这样下次运行无需再启动。
4: 查找dockerhub中是否用redis镜像
docker search redis
进入dockhub可以看到相应的安装指南 和 找到对应的版本号
我们安装6.2版本
5: 拉取镜像
docker pull redis:6.0
5:查看成功下载镜像
docker images
6: 删除镜像
docker rmi 66896772e1e2
7: 创建容器
docker run -d redis:6.0 // -d 后台启动 redis:6.0是镜像的名称
其实安装的这个镜像没啥用,只能在本地机 使用, 无法远程连接
8:建立能够远程连接的容器
认识几个参数
-p 宿主机端口号:镜像软件的端口号
–name 容器名称
-d 后端运行
-f 强制 linux命令
删除容器: docker rm -f 37e80e8e87f3
从新创建一个容器
docker run -d -p 6380:6379 --name redis2 redis:6.0
在window使用客户端连接,这样就可以远程调用了
六:创建镜像
提交自己的镜像
比如我们下载的centos镜像,没有vim 等一些命令,我们可以从新制作一个符合我们需要的镜像
如 下拉 centos7 镜像
docker pull centos:7
创建一个容器
docker run -it --name mycentos centos:7
此处使用了 -it 进入容器 即: 创建并进入容器
运行vim发现没有这个命令
yum install vim 下载vim
ok 打包成自己的镜像
退出容器 exit
语法结构
docker commit -m=“描述信息” -a=“作者名” 容器名|容器ID 你自己的镜像名称:版本号
docker commit -m="我安装了vim" -a="haojia" mycentos localcentos:1.0
容器数据卷
-v 挂载目录
docker安装后软件后,有时我们需要对配置文件修改,或查看log,一个方法是 使用命令
docker exec -it 容器名或容器ID /bin/bash 进入容器,找到相应的文件进行修改
麻烦
1: 每次都要输入上述命令。
2: docker集成的linux命令不全,需要随时下载命令。
所以我们可以将内部目录映射到linux机本地目录,这时,我们可以修改本地文件,docker会智能的映射到docker内对应的目录中
实现这种需求,需要我们使用容器卷方式 对 目录进行挂载
-v 语法格式:
-v 宿主机目录路径:容器目录路径
未完待续