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. 编写高质量的Python代码系列(六)之内置模块

    Python预装了许多写程序时会用到的重要模块.这些标准软件包与通常意义上的Python语言联系得非常精密,我们可以将其当成语言规范的一部分.本节将会讲解基本的内置模块. 第四十二条:用functoo ...

  2. shiro 介绍和基本使用

    一.什么是shiro 它是一个功能强大且易于使用的Java安全框架,可以执行身份验证.授权.加密和会话管理.使用Shiro易于理解的API,您可以快速且轻松地保护任何应用程序——从最小的移动应用程序到 ...

  3. Ubuntu16.04的图形化界面无法启动问题

    昨晚在 Ubuntu 下试图安装笔记本触控板的驱动的时候,突然 Ubuntu 的图形化界面不见了,尝试了 Ctrl + Alt + F1.F2.F3...无果,又在一些博客的指导下尝试在命令行使用 s ...

  4. P5283 [十二省联考2019]异或粽子

    考场上想到了没打完,细节思路还是不是很优,我原先的想法是每一次找完后标记那个点,下次再继续找(并不是这个意思,说不清楚)但实际上和平衡树一样加个大小就很好写了 #include<bits/std ...

  5. 第30月第11天 Xcode 9.0中新增的API版本检查@available

    1.Xcode 9.0中新增的API版本检查@available https://www.jianshu.com/p/0a94baa6c3dd https://www.jianshu.com/p/b8 ...

  6. 自编译Apache Spark2.3.3支持CDH5.16.1

    1 下载源代码文件 https://archive.apache.org/dist/spark/spark-2.3.3/ 2 解压后导入编辑器,修改依赖的Hadoop版本,下面截图是修改后的,要看自己 ...

  7. raw_input与input

    raw_input 不管用户输入的是什么,最后打印的类型都会是str字符串类型 input 会根据用户的输入变换成相应的类型,但是需要注意的是我们用户在输入字符或者字符串的时候,需要给他们加上双引号, ...

  8. word20170108逛景点 Sightseeing有用的词和句子

    有用的词: sights and attractions: 景点 ticket booth: 售票处 will call ticket: 网络售票 guided tour: 带导游的游览 audio ...

  9. sonar6.7.2启动报错

    sonar6.7.2启动报错:错误信息如下: es.log java.lang.RuntimeException: can not run elasticsearch as rootsonar.log ...

  10. 清北学堂2019NOIP提高储备营DAY1

    今天是第二次培训的第一天,关于NOIP的基础算法,主要内容如下: $1.枚举 $2.搜索 $3.贪心 $1.枚举: •定义: 枚举又叫做穷举,是一种基础的算法,其思路主要是:从问题中有可能的解集中一一 ...