1.什么是Docke

1.网上有很多

2.为什么要使用Docker?    

优点

更高效的利用系统资源

更快速的启动时间

一致的运行环境

持续交付和部署

更轻松的迁移

更轻松的维护和扩展

3.Docker的使用

3.1安装docker

以ubuntu16.04为例

官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/

删除旧版本

  $ sudo apt-get remove docker docker-engine docker.io

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先 需要添加使用 HTTPS 传输的软件包以及 CA 证书。

  $ sudo apt-get update

  $ sudo apt-get install -y \

  apt-transport-https \

  ca-certificates \

  curl \

  software-properties-common

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。 为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

  $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

  $ sudo add-apt-repository \

  "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \

  $(lsb_release -cs) \

  stable"

更新 apt 软件包缓存,并安装 docker-ce:

  $ sudo apt-get update

  $ sudo apt-get install -y docker-ce

# 开机启动

  $ sudo systemctl enable docker

# 启动docker服务

  $ sudo systemctl start docker

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安 全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需 要使用 docker 的用户加入 docker 用户组。

# 建立 docker 组:

  $ sudo groupadd docker

# 将当前用户加入 docker 组:

  $ sudo usermod -aG docker $USER

# 重新登录ssh

# 验证安装

  docker run hello-world

3.2 配置文件:/etc/docker/daemon.json

官方文档: https://docs.docker.com/engine/reference/commandline/dockerd/#daemonconfiguration-file

# 编辑配置文件

  $ sudo vi /etc/docker/daemon.json

     {

      "registry-mirrors": ["], # 镜像加速的地址

      "insecure-registries": [""], # 非https私有仓库地址

      "data-root": "/var/lib/docker" # docker安装目录

    }

3.3 创建容器

  docker pull nginx

  docker run -d --name web -p 80:80 nginx

  查看容器运行状态

    docker ps

  浏览器打开:http://127.0.0.1

  echo "hello world" > hello.html

  docker run -d --name web -p 80:80 -v `pwd`:/usr/share/nginx/html nginx

  -d 后台运行

  --name 指定容器名

  -p 映射端口

  -v 映射数据卷

3.4 镜像(Image)和容器(Container)的关系

  镜像是静态的定义,容器是镜像运行时的实体。

  容器可以被创建、启动、停止、删除、暂停等。

  举例:

    镜像      容器

    类class Apple       对象 new Apple()

    安装盘ISO    虚拟机

3.5创建自己的镜像

  官方文档:https://docs.docker.com/develop/develop-images/dockerfile_bestpractices/

  vi Dockerfile

    FROM nginx RUN

    echo "hello world" > /usr/share/nginx/html/hello.html

    docker build -t my-web:1.0 .  (注意这个点,必须有)

    查看镜像

      docker images

    启动容器

      docker run -d --name web -p 80:80 my-web:1.0

3.5.1 环境变量

  vi start.sh

    echo "hello world ${MY_NUM}" > /usr/share/nginx/html/hello.html

    nginx -g "daemon off;"

  

  vi  Dockerfile

    FROM nginx

    ENV MY_NUM="100"

    ADD start.sh /start.sh

    CMD sh /start.sh

  启动容器

  docker build -t my-web:2.0 .  (注意这个点,必须有)

  # 无环境变量运行

    docker run -d --name web -p 80:80 my-web:2.0

  # 有环境变量运行

    docker run -d --name web -p 80:80 -e MY_NUM=200 my-web:2.0

  # 基础镜像

    FROM nginx

  # 预置环境变量

    ENV MY_NUM="100“

  # 制作镜像的操作,尽量减少RUN的个数,可以有效减少镜像大小

    RUN echo "hello world" > /usr/share/nginx/html/hello1.html

  # 添加制作镜像的文件

    ADD start.sh /start.sh

  # 容器启动命令

  # 注意区分CMD和RUN的区别

  #CMD ["nginx", "-g", "daemon off;"]

  #CMD nginx -g "daemon off;“

  CMD sh /start.sh

  

  FROM nginx

  RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file

  RUN rm -f /root/100MB.file

  #RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file && rm -f /root/100MB.file

  docker build -t test:1.0 .

  docker build -t test:2.0 .

2.docker-compose

  官方文档: https://docs.docker.com/compose/install/ https://docs.docker.com/compose/compose-file/

  官网安装

    $ sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/dockercompose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

    $ sudo chmod +x /usr/local/bin/docker-compose

  公司内网安装

    $ sudo curl -L http://ftp.fzyun.io/lib/docker-compose/1.23.1/docker-composeLinux-x86_64 -o /usr/local/bin/docker-compose

    $ sudo chmod +x /usr/local/bin/docker-compose

  

  docker run -d --name web -p 80:80 -e MY_NUM=200 \ -v `pwd`/web:/usr/share/nginx/html/ my-web:2.0

  vi docker-compose.yml

    version: "3.5"

    services:

      web:

        image: nginx

        restart: always

        ports: - "80:80"

      volumes:

        - ./web:/usr/share/nginx/html/

      environment:

        MY_NUM: 200

  多服务样例:

    version: "3.5"

    services:

      web:

        image: nginx:1.15.12-alpine

        restart: always

        ports: - "80:80"

      mysql:

        image: mysql:5.7

        restart: always

        ports: - “3306:3306"

      environment: MYSQL_ROOT_PASSWORD: ***(root用户密码)

Docker入门到实践的更多相关文章

  1. 《Docker 入门与实践》 已经出版了~欢迎有须要的朋友关注。

    在云计算时代.开发人员将应用转移到云上已经攻克了硬件管理的问题,然而软件配置和管理相关的问题依旧存在. Docker的出现正好能帮助软件开发人员开阔思路.尝试新的软件管理方法来解决问题. 通过掌握Do ...

  2. Docker 入门到实践(四)Docker 使用镜像

    一.获取镜像 Docker Hub 上有大量的高质量的镜像让我们获取,命令为: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 具体的选项可以 ...

  3. Docker 入门到实践(三)Docker 安装

    注意:不要在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker. 一.准备工作 系统要求 Docker CE 支持一下版本的 Ubuntu 操作系统 Cosmic 18 ...

  4. Docker入门与实践

      一.Docker介绍 docker官网:https://www.docker.com/ Docker hub地址: https://hub.docker.com/   1.基本概念 Docker ...

  5. Docker入门与实践之 Dockerfile 语法详解

    一.Dockerfile 概述 Dockerfile是docker程序的解释脚本文件,Dockerfile 是一条一条的指令,Docker程序将dockerfile中的一条条指令编译成Linux可执行 ...

  6. Docker入门与实践之 docker安装与了解

    一.Docker 概述 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  7. Docker入门到实践——简单操作

    1.对比传统虚拟机总结 特性 容器 虚拟机 启动 秒级 分钟级 硬盘使用 一般为MB 一般为GB 性能 接近原生 弱于 系统支持量 单机支持上千个容器 一般几十个 2.基本概念 Docker包括三个基 ...

  8. Docker 入门实践

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...

  9. Docker 从入门到实践(一)Docker 简介

    读前须知:本教程大部分都是[Docker 从入门到实践 ]一书的知识,有兴趣可以直接观看书籍.同时,借鉴书籍的知识,如有侵权,请告知我,我会删除处理.谢谢. 一.什么是 Docker? Docker ...

随机推荐

  1. Guest Editors’ Introduction: Special Issue on Advances in Management of Softwarized Networks

    文章名称:Guest Editors’ Introduction:Special Issue on Advances in Management of Softwarized Networks 发表时 ...

  2. 一文了解Python的线程

    问题 什么是线程? 如何创建.执行线程? 如何使用线程池ThreadPoolExecutor? 如何避免资源竞争问题? 如何使用Python中线程模块threading提供的常用工具? 目录 1. 什 ...

  3. springBoot+ vue+ Element-ui实现合并多图上传(一次请求多张图片)

    这次上传使用的是Elemet-ui的uoload上传组件,组件预留的钩子回调还是比较充足的. 1:  实现多图上传主要用到以下两个属性: 下面讲一下属性使用: <el-upload :actio ...

  4. [Android] Android 最全 Intent 传递数据姿势

    我们都是用过 Intent,用它来在组件之间传递数据,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的 ...

  5. WebGL教程

    https://www.w3cschool.cn/webgl/rleo1oh7.html

  6. struts2 s2-032漏洞分析

    0x01Brief Description 最近面试几家公司,很多都问到了s2漏洞的原理,之前调试分析过java反序列化的漏洞,觉得s2漏洞应该不会太难,今天就分析了一下,然后发现其实漏洞的原理不难, ...

  7. C++变量/函数命名规范

    ## 参照Google C++编程规范之变量命名 1. 变量 变量名一律小写,单词间以下划线相连.类的成员变量以下划线结尾. 普通变量命名 举例: string window_name; // OK ...

  8. P5301 [GXOI/GZOI2019]宝牌一大堆

    题目地址:P5301 [GXOI/GZOI2019]宝牌一大堆 这里是官方题解(by lydrainbowcat) 部分分 直接搜索可以得到暴力分,因为所有和牌方案一共只有一千万左右,稍微优化一下数据 ...

  9. 开源智能英文单词提取翻译工具(C#)

    WordsTool 这个工具用于分析文本文件中所有的英语单词 并且通过内置字典数据库工具对这些单词进行解析 可以生成表格形式 并且支持导出到excel文件中 用于学习单词 本代码禁止商业用途 如需要商 ...

  10. @RunWith注解作用

    @RunWith就是一个运行器 @RunWith(JUnit4.class)就是指用JUnit4来运行 @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Sp ...