docker保姆级教程

一、初识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架构

docker保姆级教程_第1张图片

4.docker配置镜像加速器

1、 打开阿里云,搜索容器镜像服务
docker保姆级教程_第2张图片

2、将配置加速器的代码复制运行即可
docker保姆级教程_第3张图片

二、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保姆级教程_第4张图片

进入容器

docker exec 参数 # 退出容器,容器不会关闭

停止容器

docker stop 容器名称

启动容器

docker start 容器名称

删除容器:如果容器是运行状态则删除失败,需要容器停止才能删除

docker rm 容器名称

查看容器信息

docker inspect 容器名称

三、docker容器的数据卷

1.数据卷概念及其作用

思考:

  • Docker 容器删除后,在容器中产生的数据也会随之销毁
  • Docker 容器和外部机器可以直接交换文件吗?
  • 容器之间想要进行数据交互?

为解决以上问题,数据卷应运而生

什么是数据卷

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以被挂载多个数据卷

数据卷作用

  • 容器数据持久化
  • 外部机器和容器间接通信
  • 容器之间数据交换
  • docker保姆级教程_第5张图片

2.配置数据卷

创建启动容器时,使用 –v 参数 设置数据卷

docker run ... –v 宿主机目录(文件):容器内目录(文件) ... 

docker保姆级教程_第6张图片
示例:

  1. 创建启动c3数据卷容器,使用 –v 参数 设置数据卷
docker run –it --name=c3 –v /volume centos:7 /bin/bash 
  1. 创建启动 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.镜像原理

docker保姆级教程_第7张图片
docker保姆级教程_第8张图片
docker保姆级教程_第9张图片
docker保姆级教程_第10张图片

2.镜像制作

docker保姆级教程_第11张图片

3.dockerfile概念

  • Dockerfile 是一个文本文件
  • 包含了一条条的指令
  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
  • 对于开发人员:可以为开发团队提供一个完全一致的开发环境
  • 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了
  • 对于运维人员:在部署时,可以实现应用的无缝移植

Dochub网址:https://hub.docker.com

4.dockerfile关键字

点击此处查看

5.dockerfile常用命令

docker保姆级教程_第12张图片

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 启动应用
  • docker保姆级教程_第13张图片

2.Docker Compose 安装使用

点击此处查看

七、docker私有仓库

1.概念

Docker官方的Docker hubhttps://hub.docker.com是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像 到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜 像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。

2.搭建使用教程

点击此处查看

八、docker容器虚拟化 与 传统虚拟机比较

  • 容器就是将软件打包成标准化单元,以用于开发、交付和部署。
  • 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
  • 容器化软件在任何环境中都能够始终如一地运行。
  • 容器赋予了软件独立性,使其免受外在环境差异的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

相同:

  • 容器和虚拟机具有相似的资源隔离和分配优势

不同:

  • 容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
    传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统
    docker保姆级教程_第14张图片
    docker保姆级教程_第15张图片
    docker保姆级教程_第16张图片

你可能感兴趣的:(docker,docker,运维,centos)