美文网首页
Docker 基础入门

Docker 基础入门

作者: 风之化身呀 | 来源:发表于2019-01-05 17:22 被阅读6次

1、Docker 扫盲

1.1、Docker是干嘛的

    软件开发最大的麻烦事之一,就是环境配置。举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量。而且换一台机器,就要重来一次。Docker可以解决这个问题

1.2、Docker 是什麽

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。容器是进程级别的,相比虚拟机有很多优势:(1)启动快;(2)资源占用少(3)体积小。
    Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

1.3、Docker 怎么玩儿

// 确保安装成功
docker version
// 启动 docker
sudo systemctl start docker
// 将当前用户加入docker用户组,避免每次要输入 sudo
sudo groupadd docker
sudo usermod -aG docker $USER

1.4、Docker 基本概念

  • Image(镜像)文件
    1、Docker 把 应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器
    2、image 文件可以看作是容器的模板,Docker 根据 image 文件生成容器的实例。
    3、同一个 image 文件,可以生成多个同时运行的容器实例。
    4、image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用
    5、Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库
# 列出本机的所有 image 文件
$ docker image ls
# 删除 image 文件
$ docker image rm [imageName]
  • Container(容器)文件
    1、image 文件生成的容器实例,本身也是一个文件,称为容器文件。
    2、一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
    3、终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除
// 拉取 镜像文件
docker image pull hello-world
// 基于镜像文件生成容器文件,每次都会生成一个新的容器文件
docker container run hello-world
// 基于镜像文件生成容器文件,复用存在的容器文件
docker container start [containerID]
// 列出本机正在运行的容器,会包含containID信息
$ docker container ls
// 列出本机所有容器,包括终止运行的容器
$ docker container ls --all
// 停止某个容器,不会删除容器文件
docker container kill [containID]
// 移除某个容器,删除容器文件
docker container rm [containerID]
// 从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法
docker container cp [containID]:[/path/to/file] .

1.5、docker 的可视化工具

2、Docker 进阶

本小节介绍如何制作 image 文件,以及 docker 的一些高级用法

2.1、制作 image

主要是编写 Dockerfile 文件,此外用.dockerignore文件排除不想打包的文件。Dockerfile 文件它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

// Dockerfile 文件示例
FROM node:8.4 // 该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node
COPY . /app // 将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录
WORKDIR /app 指定接下来的工作路径为/app
RUN npm install --registry=https:\/\gistry.npm.taobao.org //在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
EXPOSE 3000 // 将容器 3000 端口暴露出来, 允许外部连接这个端口。
CMD node demos/01.js  // 容器启动后自动执行 node demos/01.js

然后执行docker image build -t 容器名称 . 即可构建一个 image

2.2、微服务架构

微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。如何管理这多个容器呢,即一行命令同时启动或关闭多个容器。Docker Compose可以做到。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。

// 一个 docker-compose.yml 示例
mysql:   // 容器名称
    image: mysql:5.7  // 镜像名称
    environment:
     - MYSQL_ROOT_PASSWORD=123456  // 所需的环境变量
     - MYSQL_DATABASE=wordpress
web:
    image: wordpress
    links:        // 需要链接到 mysql 容器
     - mysql
    environment:
     - WORDPRESS_DB_PASSWORD=123456
    ports:
     - "127.0.0.3:8080:80"
    working_dir: /var/www/html
    volumes:   // 将当前目录内容 映射到容器的 /var/www/html 目录
     - wordpress:/var/www/html

docker-compose up // 启动
docker-compose stop // 关闭以后,这两个容器文件还是存在的,写在里面的数据不会丢失。下次启动的时候,还可以复用。
docker-compose rm // 把这两个容器文件删除

3、参考

相关文章

  • Docker 基本用法

    Docker 参考 极客学院Wiki:Docker入门基础教程 Gitbook:Docker —— 从入门到实践 ...

  • Spring Boot与Docker部署

    了解Docker的一些基础知识Docker——入门实战Docker —— 从入门到实践 Centos7上安装doc...

  • docker入门

    Docker基础命令学习及redis集群搭建 本堂课内容 一、Docker 入门 Docker是什么? Docke...

  • Docker相关

    基础篇 CentOS7安装Docker Docker入门教程 国内yum源安装docker-ce 应用篇 持续集成...

  • Docker入门系列学习教程

    为了方便大家对Docker的快速入门学习,本人将一些Docker入门基础知识进行整理,供大家进行学习参考,希望会对...

  • 1.Docker容器学习之新生入门必备基础知识

    [TOC] 0x00 Docker 快速入门 1.基础介绍 描述:Docker [ˈdɑ:kə(r)] 是一个基于...

  • URLOS开发入门基础:docker容器使用教程

    URLOS本是基于docker容器运行,在入门URLOS开发之前,我们首先需要掌握docker的相关基础知识,本篇...

  • docker实战总结-基础篇

    最近由于工作上又用到了Docker,所以在此重新整理了下整体Docker的入门基础知识 Docker instal...

  • Docker基础入门

    Docker简介 Docker是开源应用容器引擎,轻量级容器技术。 基于Go语言,并遵循Apache2.0协议开源...

  • Docker基础入门

    Docker作为一种虚拟化容器技术,为项目的开发提供了统一的环境,为环境备份、迁移创造了条件。 前言 Docker...

网友评论

      本文标题:Docker 基础入门

      本文链接:https://www.haomeiwen.com/subject/vxhrlqtx.html