Docker学习笔记

   日期:2020-05-31     浏览:110    评论:0    
核心提示:文章目录1. 了解linux基础2. Docker概述2.1 Docker简介2.2 Docker架构2.3 Docker架构图3. Docker的安装和简单测试CentOS7下Docker安装文档3.1 卸载旧的Docker版本(未使用过docker不必操作)3.2 安装Docker3.3 镜像加速(购买过阿里云服务器的读者)docker镜像加速参考文档4. Docker的常用命令4.1 镜像相关命令4.2 容器相关命令5. Docker安装Nginx6.Docker安装TomcatDockerHub地

文章目录

    • 1. 了解linux基础
    • 2. Docker概述
      • 2.1 Docker简介
      • 2.2 Docker架构
      • 2.3 Docker架构图
    • 3. Docker的安装和简单测试
      • CentOS7下Docker安装文档
      • 3.1 卸载旧的Docker版本(未使用过docker不必操作)
      • 3.2 安装Docker
      • 3.3 镜像加速(购买过阿里云服务器的读者)
      • docker镜像加速参考文档
    • 4. Docker的常用命令
      • 4.1 镜像相关命令
      • 4.2 容器相关命令
    • 5. Docker安装Nginx
    • 6.Docker安装Tomcat
    • DockerHub地址
    • 7.Docekr安装redis
    • 8. Docker数据管理
      • 8.1 数据卷
      • 8.2 数据卷容器
    • 9. DockerFile
      • 9.1DockerFile常用命令
      • 9.2使用DockerFile构建自己的springboot项目镜像
      • 9.3将自己的镜像发布到docker hub

1. 了解linux基础

Linux基础知识参考

2. Docker概述

2.1 Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

2.2 Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。

2.3 Docker架构图

3. Docker的安装和简单测试

CentOS7下Docker安装文档

3.1 卸载旧的Docker版本(未使用过docker不必操作)

yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine

3.2 安装Docker

1下载所需工具包
yum install -y yum-utils

2安装docker(使用阿里云镜像)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3启动docker
systemctl start docker

4测试hello-world
docker run hello-world

5查看本地docker镜像仓库
docker images

3.3 镜像加速(购买过阿里云服务器的读者)

docker镜像加速参考文档

4. Docker的常用命令

4.1 镜像相关命令

docker images 列出本地镜像

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  • -f : 显示满足条件的镜像
  • q :只显示镜像id

docker version 显示docker版本信息

docker info 显示docker系统信息,包括镜像和容器数

docker rmi : 删除本地一个或多少镜像。

  • -f : 强制删除

docker pull 从镜像仓库中拉取或者更新指定镜像

docker search : 从Docker Hub查找镜像

  • -s : 列出收藏值不小于指定值的镜像

4.2 容器相关命令

docker run 镜像名称/id:创建一个新的容器并运行一个命令

  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -d: 后台运行容器,并返回容器id
  • –name : 为容器指定一个名称;
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

docker start 容器名 :启动一个或多个已经被停止的容器
docker stop 容器名:停止一个运行中的容器
docker restart 容器名:重启容器

docker kill :杀掉一个运行中的容器。

docker rm :删除一个或多个容器。

docker ps: 列出所有的容器信息

  • -a :显示所有的容器,包括未运行的。
  • -n :列出最近创建的n个容器。
  • -q :静默模式,只显示容器编号。

docker inspect 镜像名称/id 获取镜像或容器的元数据

docker top :查看容器中运行的进程信息,支持 ps 命令参数。

docker attach 容器名 连接到正在运行的某个容器

docker events /镜像名: 从服务器获取实时事件

  • -f :根据条件过滤事件;
  • -since :从指定的时间戳后显示所有事件;
  • -until :流水时间显示到指定的时间为止;

docker logs 容器名 查看指定容器的日志

  • -f : 跟踪日志输出
  • –since :显示某个开始时间的所有日志
  • -t : 显示时间戳
  • –tail :仅列出最新N条容器日志

docker cp 主机文件路径 容器id容器路径 //将主机文件复制到容器中
docker cp 容器id容器路径 主机文件路径 //j将容器中的文件复制到主机

举例 : 将主机文件复制到容器中

docker diff : 检查容器里文件结构的更改。

docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。

docker create :创建一个新的容器但不启动它
用法同 docker run

5. Docker安装Nginx

  1. docker search nginx //搜索Nginx镜像
  1. docker pull nginx //远程拉取Nginx镜像到本地
  1. docker images //查看本地镜像仓库
  1. docker run --name nginx01 -p 8080:80 -d nginx //运行Nginx容器
    参数说明:
  • –name nginx01 :容器名称。
  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  • -d nginx: 设置容器在在后台一直运行。
  1. curl localhost:8080 本地测试8080端口的连通性

6.远程浏览器测试

6.Docker安装Tomcat

DockerHub地址

1.docker pull tomcat:9.0 //拉取镜像
2.docker run --name tomcat01 -p 8080:8080 -d tomcat:9.0 //创建并运行容器
3.docker -exec -it tomcat01 //在运行容器中执行命令
4.cp -r webapps.dist/* webapps //复制webapps.dist下的所有文件到webapps目录下
5.exit //退出容器

6.curl localhost:8080 //本地连接测试

远程访问
成功

7.Docekr安装redis

  1. docker pull redis //拉取镜像

docker run --name redis-test -p 8002:6379 -d redis //创建并运行容器

docker exec -it redis-test /bin/bash //进入容器运行命令
redis-cli //开启客户端

8. Docker数据管理

8.1 数据卷

数据卷是一个可供容器使用的特殊目录,他将主机操作系统目录直接映射进容器,可以将多个容器目录映射到同一个主机目录,实现容器之间数据的共享和同步。

实现主机目录与容器目录映射的俩种方式

  • 匿名挂载

1.创建容器进行匿名挂载,并在容器内已挂载目录上进行操作

2.docker inspect 容器名称
查看容器/home目录所挂载到的宿主机目录,在Mounts节点下查看,如图

3.可发现对容器内目录的操作已经同步到了宿主机目录

4.在宿主机目录下创建文件

5.在容器内home目录下进行查看,会发现宿主机下创建的目录同步到容器中

  • 具名挂载

具名挂载与匿名挂载类似,不同点在于具名挂载将容器的目录挂载到了指定的宿主机目录,而匿名挂载是将容器的目录挂载到宿主机默认的路径下(/var/lib/docker/volumes/)。

8.2 数据卷容器

数据卷容器是一个专门提供数据卷供其它容器使用,来实现多个容器之间数据持续同步的容器。
一个列子带你秒懂数据卷容器:
1.创建一个数据卷容器,并使用这个数据卷容器创建俩个容器

2.实现了centos01容器与centos02容器的数据同步

总结:centos-containers提供/home卷让centos01容器和centos02进行挂载,最后实现三个容器/home目录下的数据同步。

9. DockerFile

什么是DockFile?
DockFile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

9.1DockerFile常用命令

  • FROM : DockFile后续的操作都是基于FROM的镜像
  • RUN :用于执行后面跟着的命令行命令,在docker build时运行
  • COPY :复制上下文的目录或文件到容器的指定路径
  • ADD :和COPY指令类似,不同之处在于会自动解压tar压缩文件
  • CMD :和RUN指令类似,用于运行程序,在docker run时运行(如果DockerFile中存在多个CMD命令,仅最后一个生效)
  • ENTRYPOINT : 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序
  • ENV : 定义环境变量,如果设置了环境变量,那么在后续的命令中就可以使用了
  • VOLUME : 定义匿名数据卷,在启动时(docker run)忘记挂载数据卷,会默认挂载到这个匿名数据卷
  • EXPOSE :声明端口,在docker run -P 时候,会随机映射EXPOSE的端口
  • ARG :构建参数,与ENV类似,不同点在于ARG的作用域只在docker build的时候
  • WORDDIR :指定工作目录,该目录必须提前创建好,会存在于docker镜像的每一层
  • USER :用于指定后续命令的用户和用户组
  • HEALTHCHECK :用来指定某个程序或指令来监控docker服务的运行状态
  • ONBUILD :用于延迟构建命令的执行,简单来说就是本次dockerfile构建镜像时,不会执行其中的ONBUILD命令,当下一个DocekrFile在此DockerFile命令基础上构建镜像时,会执行之前DockerFIle文件里的ONBUILD指令

9.2使用DockerFile构建自己的springboot项目镜像

1.创建DockerFile文件,内容如下(同时将项目的jar包与DockerFIle文件放到同一个目录下)

FROM openjdk:8-jdk-alpine
MAINTAINER maoyu
ADD docker-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8081
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2.构建镜像

docker build -t docker-boot .        //构建镜像   (注意最后一个 .)

3.创建容器运行

docker run -d --name boot01 -p 8001:8001 docker-boot

4.测试

curl localhost:8001 //本机测试

远程测试

9.3将自己的镜像发布到docker hub

1.登录账号,push镜像

2.去自己的docker hub仓库查看

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服