一、初识docker
1.Docker概念
- Docker 是一个开源的应用容器引擎
- 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
- 容器是完全使用沙箱机制,相互隔离
- 容器性能开销极低。
- Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
2.安装docker
1、yum 包更新到最新
- yum update
2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外-两个是devicemapper驱动依赖的
- yum install -y yum-utils device-mapper-persistent-data lvm2
3、 设置yum源
- yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4、 安装docker,出现输入的界面都按 y
- yum install -y docker-ce
5、 查看docker版本,验证是否验证成功
- docker -v
3.docker架构
4.docker配置镜像加速器
1、 打开阿里云,搜索容器镜像服务
2、将配置加速器的代码复制运行即可
二、docker命令
1.docker进程相关命令
- 启动docker服务
systemctl start docker
- 停止docker服务
systemctl stop docker
- 重启docker服务
systemctl restart docker
- 查看docker状态服务
systemctl status docker
- 设置开机启动docker服务
systemctl enable docker
2.docker镜像相关命令
- 查看镜像: 查看本地所有的镜像
docker images
docker images -q #查看所有镜像id
- 搜索镜像:从网络中查找需要的镜像
docker search 镜像名称
- 拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。
如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
docker pull 镜像名称
- 删除镜像:删除本地镜像
docker rmi 镜像id # 删除指定本地镜像
docker rmi `docker images -q` # 删除所有本地镜像
3.docker容器相关命令
- 查看容器
docker ps # 查看正在运行的容器
docker ps –a # 查看所有容器
- 创建并启动容器
docker run 参数
进入容器
docker exec 参数 # 退出容器,容器不会关闭
停止容器
docker stop 容器名称
启动容器
docker start 容器名称
删除容器:如果容器是运行状态则删除失败,需要容器停止才能删除
docker rm 容器名称
查看容器信息
docker inspect 容器名称
三、docker容器的数据卷
1.数据卷概念及其作用
思考:
- Docker 容器删除后,在容器中产生的数据也会随之销毁
- Docker 容器和外部机器可以直接交换文件吗?
- 容器之间想要进行数据交互?
为解决以上问题,数据卷应运而生
什么是数据卷
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
数据卷作用
- 容器数据持久化
- 外部机器和容器间接通信
- 容器之间数据交换
2.配置数据卷
创建启动容器时,使用 –v 参数 设置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
示例:
- 创建启动c3数据卷容器,使用 –v 参数 设置数据卷
docker run –it --name=c3 –v /volume centos:7 /bin/bash
- 创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷
docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
四、dockerfile
1.镜像原理
2.镜像制作
3.dockerfile概念
- Dockerfile 是一个文本文件
- 包含了一条条的指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
- 对于运维人员:在部署时,可以实现应用的无缝移植
Dochub网址:https://hub.docker.com
4.dockerfile关键字
点击此处查看
5.dockerfile常用命令
6.使用dockerfile创建镜像
# 1、创建目录
mkdir –p /usr/local/dockerjdk8 cd /usr/local/dockerjdk8
# 2、下载jdk-8u202-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录
# 3、在/usr/local/dockerjdk8目录下创建Dockerfile文件,文件内容如下:
vi Dockerfile
FROM centos:7
MAINTAINER ITCAST
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u202-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME /usr/local/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
# 4、执行命令构建镜像;不要忘了后面的那个 .
docker build -t='jdk1.8' .
# 5、查看镜像是否建立完成
docker images
7.基于镜像创建文件
# 创建并启动容器
docker run -it --name=testjdk jdk1.8 /bin/bash
# 在容器中测试jdk是否已经安装
java -version
五、docker服务编排
- 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
- 要从Dockerfile build image 或者去dockerhub拉取image
- 要创建多个container
- 要管理这些container(启动停止删除)
六、docker compose
1.概念
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。
- 使用步骤:
-
- 利用 Dockerfile 定义运行环境镜像
-
- 使用 docker-compose.yml 定义组成应用的各服务
-
- 运行 docker-compose up 启动应用
2.Docker Compose 安装使用
点击此处查看
七、docker私有仓库
1.概念
Docker官方的Docker hubhttps://hub.docker.com是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像 到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜 像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
2.搭建使用教程
点击此处查看
八、docker容器虚拟化 与 传统虚拟机比较
- 容器就是将软件打包成标准化单元,以用于开发、交付和部署。
- 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
- 容器化软件在任何环境中都能够始终如一地运行。
- 容器赋予了软件独立性,使其免受外在环境差异的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
相同:
- 容器和虚拟机具有相似的资源隔离和分配优势
不同:
- 容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统