Docker安装以及使用

1.Docker概念

• Docker 是一个开源的应用容器引擎 • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)

• Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。

• 容器是完全使用沙箱机制,相互隔离 • 容器性能开销极低。

• Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

2.安装Docker

2.1Docker可以运行在MAC,Windows,CentOS,UBUNTU等操作系统上。官网地址:http://www.docker.com/

2.2安装示例,CentOS7操作系统安装:

(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镜像加速器

Docker安装以及使用_第2张图片

4.1配置示例:阿里云配置示例

(1)进到阿里云控制台,搜索镜像加速器。

(2)进入到当前页面,选择打勾处的脚本,粘贴到CentOS7操作系统里面,进行执行就可以了。

Docker安装以及使用_第3张图片

Docker进程相关命令

(1)启动docker服务:systemctl start docker

(2)停止docker服务:systemctl stop docker

(3)重启docker服务:systemctl restart docker

(4)查看docker服务状态:systemctl status docker

(5)设置开机启动docker服务:systemctl enable docker

Docker镜像相关命令

(1)查看镜像:查看本地所有的镜像

docker images; docker images -q; 查看所有镜像的id

(2)搜索镜像:从网络中查找需要的镜像

docker search 镜像名称

(3)拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。 如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。

docker pull 镜像名称

(4)删除镜像:删除本地镜像

docker rmi 镜像id;删除指定本地镜像 docker rmi ‘docker images -q’; 删除所有本地镜像

Docker容器相关命令

(1)查看容器:docker ps; 查看正在运行的容器 docker ps –a; 查看所有容器

(2)创建并启动容器:docker run 参数

参数说明:

* -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中 ,退出容器后,容器自动关闭。

* -t:为容器重新分配一个伪输入终端,通常与-i同时使用。

* -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec进入 容器。退出后,容器不会关闭。

* -it:创建的容器一般称为交互式容器,-id创建的容器一般称为守护式容器。

* --name:为创建的容器命名。

(3)进入容器:docker exec 参数;退出容器,容器不会关闭

(4)停止容器:docker stop 容器名称

(5)启动容器:docker start 容器名称

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

docker rm 容器名称

(7)查看容器信息:docker inspect

Docker容器的数据卷

数据卷概念

Docker安装以及使用_第4张图片

配置数据卷

Docker安装以及使用_第5张图片

数据卷容器

Docker安装以及使用_第6张图片

配置数据卷容器

(1)创建启动c3数据卷容器,使用 –v 参数 设置数据卷

docker run –it --name=c3 –v /volume centos:7 /bin/bash

(2)创建启动 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

数据卷小结

(1)数据卷概念:宿主机的一个目录或文件,前提是挂载到容器所对应的目录或文件。

(2)数据卷作用:1.容器数据持久化。2.客户端和容器数据交换。3.容器间数据交换。

(3)数据卷容器:创建一个容器,挂载一个目录,让其它容器继承该容器;通过简单的方式实现数据卷配置

Docker 应用部署

部署MySQL

Docker安装以及使用_第7张图片

(1)搜索mysql镜像:docker search mysql

(2)拉取mysql镜像:docker pull mysql

(3)创建容器,设置端口映射、目录映射:

在/root目录下创建mysql目录用于存储mysql数据信息

mkdir ~/mysql

创建容器

docker run -id -p 3307:3306 --name=mysql1 -v /mysql/conf:/etc/mysql/conf.d -v /mysql/log:/etc/mysql/log -v /mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

  • 参数说明:
    • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
    • -v $PWD/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 /mysql/conf/ 挂载到容器的 /etc/mysql/my.cnf。配置目录
    • -v $PWD/mysql/log:/log:将主机当前目录下的 /mysql/log 目录挂载到容器的 /log。日志目录
    • -v $PWD/mysql/data:/var/lib/mysql :将主机当前目录下的/mysql/data目录挂载到容器的 /var/lib/mysql 。数据目录
    • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

(4)当我们退出容器后,可以借助下面这个命令进入容器:

docker exec –it c_mysql /bin/bash

Dockerfile

Docker 镜像原理

Docker安装以及使用_第8张图片

Docker安装以及使用_第9张图片

总结:

(1)Docker镜像的本质是一个分层文件系统.

(2)Docker的复用技术,使Docker中拉取centos镜像时,只需要拉取rootfs基础镜像,而复用了当前宿主机上的bootfs,因为不同的liunx发行版上所使用的bootfs基本一样,所以,拉取centos时只有70M左右,而一个centos操作系统的iso文件就要几个G。

(3)但拉取tomcat时,却有500M左右,比我们平时获取tomcat的安装包大了许多,其实这是因为,tomcat在拉取时,需要指定其它的父镜像,因为它需要依赖与这些环境,比如rootfs基础镜像,jdk镜像,然后再是tomcat镜像;几个镜像叠加在一起,就会变得很大。

镜像制作

1.容器转为镜像:

(1)把容器转换为镜像:docker commit 容器id 镜像名称:版本号

(2)把镜像压缩成文件以方便传输:docker save -o 压缩文件名称 镜像名称:版本号

(3)把镜像文件进行解压缩,恢复成镜像:docker load –i 压缩文件名称

Docker安装以及使用_第10张图片


2. Dockerfile

Dockerfile概念:

Docker安装以及使用_第11张图片


Dockerfile 关键字

关键字 作用 备注
FROM 指定父镜像 指定dockerfile基于那个image构建
MAINTAINER 作者信息 用来标明这个dockerfile谁写的
LABEL 标签 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN 执行命令 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN ["command" , "param1","param2"]
CMD 容器启动命令 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD ["command" , "param1","param2"]
ENTRYPOINT 入口 一般在制作一些执行就关闭的容器中会使用
COPY 复制文件 build的时候复制文件到image中
ADD 添加文件 build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV 环境变量 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG 构建参数 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME 定义外部可以挂载的数据卷 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"]
EXPOSE 暴露端口 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR 工作目录 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER 指定执行用户 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK 健康检查 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD 触发器 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL 发送信号量到宿主机 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL 指定执行脚本的shell 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell

自定义一个centos7镜像。要求:

(1)默认登录路径为/usr

(2)可以使用vim

实现步骤:

(1)定义父镜像:FROM centos:7

(2)定义作者信息:MAINTAINER 作者信息或者邮箱

(3)执行安装vim命令:RUN yum install -y vim

(4)定义默认的工作目录:WORKDIR /usr

(5)定义容器启动执行的命令:CMD /bin/bash

(6)通过dockerfile构建镜像:docker build -f dockerfile文件路径 -t 镜像名称:版本 .

(7)构建镜像命令示例:

Docker安装以及使用_第12张图片


定义一个springboot项目镜像

实现步骤:

(1)定义父镜像:

(2)定义作者信息:MAINTAINER 波

(3)将jar包添加到容器:ADD springboot.jar app.jar

(4)定义容器启动执行的命令:CMD java -jar app.jar

(5)通过dockerfile构建镜像:docker build -f dockerfile文件路径 -t 镜像名称:版本 .

(6)构建镜像命令示例:docker build -f ./文件名 -t app:1 .

Docker安装以及使用_第13张图片

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