Dock-应用容器化

Docker 应用容器化

Docker 简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker组成部分:

dockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

Docker的典型使用场景:

Automating the packaging and deployment of applications(使应用的打包与部署自动化)
Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)
Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)
Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)

Docker 架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像

在这里插入图片描述

Docker 的基本概念

在这里插入图片描述
从上图我们可以看到,Docker 中包括三个基本的概念:

  • Image(镜像)
  • Container(容器)
  • Repository(仓库)
    镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是 Docker 的核心。

安装DOCKER

查看CentOS系统内核版本,需要高于3.10

  • 移除旧版本
$ sudo yum remove docker \
              docker-client \
              docker-client-latest \
              docker-common \
              docker-latest \
              docker-latest-logrotate \
              docker-logrotate \
              docker-selinux \
              docker-engine-selinux \
              docker-engine

安装必要的系统工具$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum缓存$ sudo yum makecache fast
安装Docker-ce$ sudo yum -y install docker-ce
启动Docker后台服务$ sudo systemctl start docker
运行hello-word
从仓库中下载该镜像并在容器中运行。在这里插入图片描述

  • 镜像加速
    /etc/docker/daemon.json文件(如果没有,自行创建)中添加:
jason
{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

docker基本操作

查看镜像$ docker images
查看容器$ docker ps,如果想要查看已经关闭的镜像可以加上-a参数
删除镜像$ docker rmi <image-name/id>,强行删除加上-f参数
删除容器$ docker rm <container-name/id>,强行删除加上-f参数
构建镜像$ docker build -t .,.表示当前路径,可以使用具体路径代替
运行容器$ docker run -p <本机端口>:<docker容器内部端口> --name -d ;-d参数表示在后台运行容器,并返回容器ID
交互模式运行容器$ docker exec -it /bin/bash;-i以交互模式运行容器、-t为容器重新分配一个伪输入终端
标记本地镜像,将其归入某一仓库$ docker tag <image-name[:tag]> <registryhost/username/image-name[:tag]>
查看docker日志$ docker logs

使用MySQL容器

  1. 启动服务器

    shell
    #--name DokerTest 为容器指定一个名称
    #-e MYSQL_ROOT_PASSWORD=test 设置环境变量(这里设置了数据库密码)
    #-p(注意是小写!!): 端口映射,格式为:主机(宿主)端口:容器端口
    #-d: 后台运行容器,并返回容器ID
    docker run -p 3306:3306 --name DockerTest -e MYSQL_ROOT_PASSWORD=test -d mysql:5.7
    
  2. 挂载卷Volume保存db

    • 查看数据库文件

      shell
      #进入正在运行的容器DockerTest内部,同时运行bash
      docker exec -it DockerTest bash
      ls /var/lib/mysql
      

在这里插入图片描述

  • 目前所挂载的卷

    dockerfile
    VOLUME /var/lib/mysql
    

    表明每次启动 MySQL容器,docker 创建一个文件卷挂载在容器内/var/lib/mysql位置

    shell
    docker volume ls
    docker inspect -f "{{.Mounts}}" DockerTest
    docker volume inspect $Volume_name
    

在这里插入图片描述
可以看到这个卷在宿主机(host)的 /var/lib/docker/volumes/ 目录下

  • 创建卷

    首先我们得删除之前的容器和卷

    shell
    #-f Force the removal of a running container (uses SIGKILL)
    #-v Remove the volumes associated with the container
    #直接通过容器ID删除
    docker rm a735137b8b6f
    #当容器较多时,可通过grep获取对应容器名的docker ps -a行,然后awk切片输出所需内容
    docker rm $(docker ps -a|grep DockerTest|awk '{print $1}') -f -v
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m02Lv6UL-1579029013690)(pics/rm.png)]

    创建卷

    shell
    docker volume create testdb
    

在这里插入图片描述

  • 挂载

    shell
    docker run --name DockerTest -e MYSQL_ROOT_PASSWORD=test -v testdb:/var/lib/mysql -d mysql:5.7
    

在这里插入图片描述

  • 启动客户端容器链接服务器

    shell
    #--link 添加链接到另一个容器,指定容器间的关联,使用其他容器的IP、env等信息
    # DockerTest表示你需要通信的容器名,mysql表示内部访问,即客户端可通过它访问服务器
    docker run --name testClient --link DockerTest:mysql -it mysql:5.7 bash
    

环境变量

在这里插入图片描述

服务端

在这里插入图片描述

Docker图形化管理工具

参考

这可能是最详细的Docker教学

发布了5 篇原创文章 · 获赞 0 · 访问量 70
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览