Docker学习笔记及实操

容器与虚拟机

虚拟机

传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,包括应用,必要的二进制和库,是一个完整的用户操作系统。

容器

容器是和宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中是以分离的进程运行的。容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响

虚拟机与容器的差异

虚拟机是一个运行在宿主机之上的完整的操作系统,虚拟机运行会占用较多的CPU、内存、硬盘资源,相对容器而言是重量级的

容器需要的资源更少,对系统的利用率更高,启动更加快速,部署更加便捷,是进程级别的隔离,相对虚拟机是轻量级的

Docker的概念

Docker是基于GO语言实现的云开源项目,是Linux容器的一种封装,Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。每个容器运行着一个应用,不同的容器之间相互隔离,同时也可以建立通信。容器的启动和停止都非常快速,如同操作一个轻量级的虚拟机,并且用户无需关注系统底层的操作。

Docker的特点


你可以认为Docker就是在操作系统中的一个进程,而这个进程里面装着一个虚拟化的操作系统,Docker将你需要的应用和运行依赖都装了到里面,并且Docker为我们屏蔽了底层的操作系统,所以你并不需要关心它底层是怎么实现的,只需要简单的命令就能使用

核心概念

Docker镜像(Image)

Docker镜像是创建Docker容器的基础,Docker镜像类似虚拟机的镜像,是一个面向Docker引擎的只读模板。提供容器运行时所需的程序、库、资源、配置等文和一些为运行时参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。用户可以通过网上下载已经做好的应用镜像,通过简单的命令使用。或者是用户可以将通过自己制作镜像,将自己需要的应用及依赖打包起来成为镜像,然后就可以拿着这个镜像迁移到任何的系统中,同样只需要简单的命令就能实现

Docker容器(Container)
Docker仓库(Repository)

Docker仓库的概念跟Git 类似,是集中存放镜像文件的场所,而仓库注册服务器(Registry)可以理解为 GitHub 这样的托管服务。一个 仓库注册服务器中可以包含多个Docker仓库,每个仓库可以包含多个标签(Tag),每个标签对应着一个镜像。一个仓库可能会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 Latest 作为默认标签。仓库又可以分为两种形式Public(公有仓库)和 Private(私有仓库)Docker Registry 公有仓库是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。当用户创建了自己的镜像之后就可以使用 Push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 Pull 下来就可以了。目前国外最大的公开仓库是Docker Hub,国内最大的公开仓库是Docker Pool,都可以提供用户下载镜像

Docker的安装

安装docker需要在centos7以上版本

  • 1、检查docker安装源 yum list docker
  • 2、 yum install docker.x86_64 安装docker

    提示时直接输入y
  • 3、查看 docker 版本 : docker --version


  • 4、启动 docker : systemctl start docker和查看 docker状态 : systemctl status docker
    看到active (running)证明启动成功


Docker安装MySql5.7

  • 拉去mysql5.7版本的镜像 docker pull mysql:5.7

  • 查看镜像docker images

  • 创建容器

docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

命令说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
--name mysql5.7:mysql5.7是容器的名称
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

  • 查看容器的进程信息docker ps -a

  • 大功告成

Docker发布springcloud项目

我这里要部署一个8761和8762的注册中心

  • 创建存放服务的文件夹
  • 先部署eureka-server
    这是我项目的配置文件
server:
  port: 8761

eureka:
  instance:
    #eureka 实例的hostname,可以是hostname,也可以自定义配置hostname
    hostname: localhost
    #该实例的IP地址
    ip-address: localhost
    #该实例注册到服务中心的唯一ID
    instance-id: localhost:eureka-server:8761
    #注册时客户端是否使用自己的IP而不是主机名,默认是false
    prefer-ip-address: true
  service-url:
    defaultZone: http://localhost:8762/eureka/

spring:
  application:
    name: eureka-server
  profiles: pre01

---
server:
  port: 8762

eureka:
  instance:
    #eureka 实例的hostname,可以是hostname,也可以自定义配置hostname
    hostname: localhost
    #该实例的IP地址
    ip-address: localhost
    #该实例注册到服务中心的唯一ID
    #instance-id: ${eureka.instance.ip-address}:${spring.application.name}:${server.port}
    instance-id: localhost:eureka-server:8762
    #注册时客户端是否使用自己的IP而不是主机名,默认是false
    prefer-ip-address: true
  service-url:
    defaultZone: http://localhost:8761/eureka/

spring:
  application:
    name: eureka-server
  profiles: pre02

打包
  • 先拉取jdk8的镜像docker pull java:8

  • 配置Dockerfile
    先配置Dockerfile8761

FROM java:8
MAINTAINER tzb "1017432592@qq.com"
ENV LANG zh_CN.utf-8
USER root
RUN mkdir -p /home/springcloudconsole/eureka-server/8761 
COPY ./eureka-server-0.0.1-SNAPSHOT.jar /home/springcloudconsole/eureka-server/8761/
COPY ./eureka8761.sh  /home/springcloudconsole/eureka-server/8761/
WORKDIR /home/springcloudconsole/eureka-server
RUN chmod +x 8761/eureka8761.sh
EXPOSE 8761
ENTRYPOINT ["8761/eureka8761.sh"]

然后配置Dockerfile8762,只需将上面配置的写有8761的地方改为8762

  • 配置eureka.sh
    先配置eureka8761.sh,这段shell脚本下面的for循环只是为了docker在后台启动完springcloud注册中心后不要退出
#!/bin/bash
nohup java -jar /home/springcloudconsole/eureka-server/8761/eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=pre01 > /dev/null 2>&1 &

for (( ; ; ))
do
  sleep 5
done

然后配置eureka8762.sh,同样的将上面配置的8761改为8762,pre01改为pre02

  • 将文件全部扔到虚拟机的文件夹中

    我这里全部扔到了/home/springcloudconsole/eureka-server中
  • 构建镜像 docker build -f Dockerfile8761 -t eureka-server:8761 .
    查看镜像,已经成功生成
  • 启动容器
    docker run --privileged=true -d -p 8761:8761/tcp --name eureka-server eureka-server:8761 或者 docker run -itd -p 8761:8761 eureka-server:8761
    其中8761:8761中第一个8761是宿主机对外暴露的端口,第二个8761是dockerfile配置的EXPOSE,是docker里应用程序的端口
  • 查看容器运行状态docker ps -a

  • 其他命令总结:
    查看镜像文件docker images
    查看容器运行状态docker ps -a
    停止容器 docker stop 容器id
    删除容器 docker rm 容器id
    删除镜像文件 docker rmi 容器id
    查看容器日志 docker logs -f --tail 2000 容器id
    进入容器 docker exec -it 容器ID /bin/bash
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容