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. uboot2012(一)分析重定位

    目录 引入 环境配置 编译体验 入口查找 代码分析 board_init_f pie 内存分布分析 SP设置 board_init_f 重定位 代码段重定位实现 变量地址修改 参考 title: ub ...

  2. Vue学习笔记七:Vue中的样式

    目录 两种样式 class样式 内联样式 两种样式 Vue中使用样式方式有两种,一种是class样式,一种是内联样式也就是style class样式 class样式使用的方式有5种,HTML如下 &l ...

  3. hive字段名、注释中文显示问号

    问题如下图: 解决方法: header1的/etc/my.conf文件,在[mysqld]分组下面添加配置:character-set-server=utf8init_connect='SET NAM ...

  4. 对于Sobel算子的学习

    本来想说很多目前对于 Sobel 算子的认识,但最终还是觉得对于其掌握程度太低,没有一个系统的理解,远不足以写博客,但为了12月不至于零输出,还是决定把自己学习过程中找到的相关资料进行分享. 等到一月 ...

  5. day23单例模式 , 日志处理 , 项目结构目录

    # day23笔记 ## 一.补充,作业 ### 1.字符串格式化 ```pythonmsg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'alex', 'n2' ...

  6. 浅谈 JSP & Servlet

    body { text-align: center; } div.develon { background-color: #cccccc; font-size: 20px; } 背景 相信大家都见过这 ...

  7. java ,用公司框架写的显示列表 Table控件

    <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" lan ...

  8. EXCEL上传POI

    Java SpringMVC POI上传excel并读取文件内容 2017年11月27日 15:26:56 强人锁男. 阅读数:15329   用的SSM框架,所需要的jar包如图所示:,链接地址:j ...

  9. JVM中的方法分派

    解析调用是一个静态的过程,在编译期间就完全确定,在类装载的解析阶段就会把涉及的符号引用全部转变为可确定的直接引用,不会延迟到运行期再去完成.而分派调用则可能是静态的也可能是动态的,根据分派依据的宗量数 ...

  10. MySQL1:客户端/服务器架构

    一.MySQL的客户端/服务器架构 前言 之前对MySQL的认知只限于会写些SQL,本篇算是笔记,记录和整理下自己对MySQL不熟悉的地方. 大致逻辑: MySQL的服务器程序直接和我们存储的数据打交 ...