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. Tomcat系列(11)——Tomcat 部署web应用的4种方法

    核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下) (2)利用控制台进行部署(tomcat的man ...

  2. Tomcat系列(5)——Tomcat配置详细部分

    Tomcat的架构图 Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层 ...

  3. crm 一级菜单排序,二级菜单选中并且展开,非菜单权限的归属,权限粒度控制到按钮级别

    排序 /rbac/templatetags/rbac.py from django import template from django.conf import settings import re ...

  4. clickhouse的使用和技巧,仅个人

    centos 安装clickhouse curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script. ...

  5. 一个网站SQL注入的案例

    网站的页面提交参数做了md5转换,而且参数会带入两个SQL语句中执行. 注入是肯定存在的,但是SQLMAP怎么都跑不出来(可能原因是其中有个SQL语句总是报错). 尝试手工,发现 order by 报 ...

  6. CSS3 Background-clip

    上一节在<CSS3 background-size>详细的介绍了CSS3为background新增属性之一,今天和大家一起来学习CSS3中有关于Background的第二新属性Backgr ...

  7. 肺结节CT影像特征提取(五)——肺结节CT影像ROI区域灰度直方图及其图形化

    在博客肺结节CT影像特征提取中,已经实现了肺结节的灰度.纹理和形态特征的提取.但是,对于进一步了解ROI区域像素值或者说CT值的分布来说,还存在一定的不足,不能够很好的显示ROI区域. 因此,本文将进 ...

  8. node命令行工具—cf-cli

    音乐分享: 钢心 - <龙王> 初喜<冠军>后喜<龙王> (PS:听一次钢心乐队的演出后采访才知道 “龙王”隐喻的是一起喝酒的老铁....) ——————————— ...

  9. pwnable.tw calc

    题目代码量比较大(对于菜鸡我来说orz),找了很久才发现一个能利用的漏洞 运行之发现是一个计算器的程序,简单测试下发现当输入的操作数超过10位时会有一个整型溢出 这里调试了一下发现是printf(&q ...

  10. Elasticsearch一些使用笔记(持续更新)

    这篇博客记录这一些运维ES的一些经验. 1.节点磁盘使用率过高,导致ES集群shard无法分配,丢失数据? 有两个配置,分配副本的时候 参数名称 默认值 含义 cluster.routing.allo ...