Docker的使用

168 阅读4分钟

安装

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 download.docker.com/linux/cento…

4、 安装docker,出现输入的界面都按 y

yum install -y docker-ce

5、 查看docker版本,验证是否验证成功

docker -v

镜像

  • 常用的docker命令:
  • 拉取镜像:
    • docker pull nginx
  • 查看镜像:
    • docker images ls -a
  • 使用dockerFile 构建镜像
    • yeasy.gitbook.io/docker_prac…
    • 创建DockerFile
    • 编写DockerFile
    • 在Dockerfile所在的目录构建镜像:
      • docker build -t nginx:v3 .
      • 正确理解此处【.】的含义,此处是指构建的上下文所在的路径,一般是创建空白的文件夹,然后在空白的文件夹中创建Dockerfile, 如果需要哪些文件,则将需要的文件复制到此空白文夹中。
      • 同时构建也支持从远程URL中构建;使用tar压缩包构建;使用标准输入构建等。【如果发现标准输入的文件格式是 gzip、bzip2 以及 xz 的话,将会使其为上下文压缩包,直接将其展开,将里面视为上下文,并开始构建。】

-  查看镜像是否构建成功 -  docker 删除: -  docker rmi <镜像id或者容器名称>

容器

  • 创建容器
    • -i:一直运行
    • -t:交互式运行
    • -d 后台运行的容器,如果不使用后台运行则exit后会退出当前容器。
    • /bin/bash 使用bash的shell交互
  • 启动镜像:
    • $ docker run --name webserver -d -p 80:80 nginx
  • 新建并启动:
    • $ docker run ubuntu:18.04 /bin/echo 'Hello world'
    • $ docker run -t -i ubuntu:18:18.04 /bin/bash
      • -t 选项让Docker分配一个伪终端
        • i 则让容器的标准输入保持打开
    • 启动已经终止的容器
      • docker container start
    • -d 后台启动
      • docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
  • 进入【后台运行的容器】
    • docker attach 3e
    • 注意:此命令如果从这个 stdin 中 exit,会导致容器的停止。
  • docker exec -t -i 3e51 bash
    • 从stdin中exit,不会导致容器停止。
  • 导入导出
  • 删除:
    • docker container rm trusting_netton
    • 使用 -f 删除正在执行中的容器
  • 清理所有处于终止状态的容器
    • docker container prune
  • 查看容器:
    • docker ps
      • 查看所有运行中的容器
    • docker ps -a
      • 查看关闭所有的容器(包含关闭的容器)
  • 启动:
    • docker container start c1
  • 关闭
    • docker container stop c1
  • docker ps -aq
    • a :所有容器,包含没有运行中的
    • q: 查看容器的id.
  • docker inspect c2
    • 查看c2容器的信息

数据卷

数据卷的概念

  • 将容器内目录与宿主机目录相互关联,容器目录信息改了会影响宿主机的目录内容;反之亦然

image.png

配置数据卷

  • 挂载的数据卷【容器内】目录必须是绝对路径,宿主机目录可以是相对路径。
docker run -it --name=centos -v /Users/liuzongshuai/Documents/otherTest/docker/centos/data:/root/dataContainer centos

image.png

  • 通过数据卷实现容器内数据的持久化
  • 查看数据卷信息 docker inspect name|id

image.png

将多个容器挂在到同一个容器卷上

  • 多个容器挂载同一个宿主机的数据卷实现内容的共享、交换。

数据卷容器

image.png

image.png

创建数据卷容器
docker run -it --name=c3 -v /volumn centos /bin/bash
挂在数据卷
docker run -it --name=c1 --volumes-from c3 centos /bin/bash

  • 在centos的跟目录下创建数据卷/volumn
  • 查看v3

image.png

  • 查看v1

image.png

应用部署

部署mysql

image.png

docker run -it -p 3309:3306 --name=c_mysql2 -v  /mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=root123456 mysql:8.0

Dockefile

镜像原理

镜像是分层的。

image.png

镜像制作

  • 默认挂载的文件是不会被打入镜像的。【根据此镜像启动容器的时候重新挂载就可以】
  • 镜像是不能被传输的,需要打包成压缩文件进行传输,用load -i 进行解压缩。
  • 可以通过commit指令或者Dockfile。

image.png

Dockfile

  • 包含一条条的指令:
    • AINTAINER :作者信息。
    • FROM:基于基础镜像
    • CMD: 基于镜像创建的容器启动的时候默认执行的指令。
    • WORKDIR: 工作目录
    • ADD
    • ENV
    • 举例:
      image.png

Dockerfile:案例:发布SpringBoot|创建自己的centOs。

image.png

  • 本人写的
FROM java:8
MAINTAINER  Ryan<Ryan@163.com>
ADD springBootDockerfile-1.0-SNAPSHOT.jar app.jar
CMD java -jar app.jar
  • 打包成镜像: docker build -f ./Dockerfile -t myspring:v2 .
  • 启动镜像 docker run -it --name=c2 -p 8080:8080 myspring:v2

服务编排

dockerpose 定义

image.png

dockerpose 编排nginx 和springboot

一、安装Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

二、卸载Docker Compose

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

三、 使用docker compose编排nginx+springboot项目

  1. 创建docker-compose目录
mkdir ~/docker-compose
cd ~/docker-compose
  1. 编写 docker-compose.yml 文件
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
  app:
    image: app
    expose:
      - "8080"
  1. 创建./nginx/conf.d目录
mkdir -p ./nginx/conf.d
  1. 在./nginx/conf.d目录下 编写itheima.conf文件
server {
    listen 80;
    access_log off;

    location / {
        proxy_pass http://app:8080;
    }
   
}
  1. 在~/docker-compose 目录下 使用docker-compose 启动容器
docker-compose up
  1. 测试访问
http://192.168.149.135/hello

私有仓库

容器VS虚拟机

image.png

附录