前言

为什么要使用 Docker?

  • Docker 容器的启动在秒级
  • Docker 对系统资源利用率高,一台主机上可以同时运行数千个 Docker 容器。
  • Docker 基本不消耗系统资源,使得运行在 Docker 里面的应用的性能很高。

相比于传统的虚拟化技术,Docker 有哪些优势?

  • 更快速的支付和部署:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。
  • 更高效的虚拟化:Docker 容器的运行不需要额外的 Hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效。
  • 更轻松的迁移和扩展:Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
  • 更简单的管理:使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

接下来,我们开始 Docker 的学习之旅。

1. Docker 安装

由于 APT 官方库里的 Docker 版本可能比较旧,所以先卸载可能存在的旧版本:

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

更新 APT 包索引:

sudo apt-get update

安装以下包以使apt可以通过HTTPS使用存储库(repository)

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

添加 Docker 官方的 GPG 密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

使用下面的命令来设置 stable 存储库:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再更新一下 APT 包索引:

sudo apt-get update

安装最新版本的 Docker CE:

sudo apt-get install -y docker-ce

2. 验证 Docker 安装是否成功

查看 Docker 服务是否启动:

systemctl status docker
root@ubuntu:/home/hadoop/workspace/compose/composeapp# systemctl status docker
docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-10-03 12:25:14 PDT; 2 days ago
Docs: https://docs.docker.com
Main PID: 1436 (dockerd)
Tasks: 27
CGroup: /system.slice/docker.service
├─ 1436 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
└─42652 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 2345 -container-ip 172.17.0.3 -container-port 12345

若未启动,则启动 Docker 服务:

systemctl start docker

运行经典的 Hello world:

docker run hello-world

 
在这里插入图片描述

3. 获取 Docker 镜像

镜像是一个模板,运行镜像便可得到 Docker 容器,可以从镜像服务器上获取做好的镜像, 使用 docker pull 命令来获取需要的镜像。Docker Hub 上已经有很多构建好的镜像,我们可以直接使用,在制作镜像之前,有必要搜索一下看是否已经有人共享了相关的镜像,减少制作成本。通过 docker search 实现搜索,docker pull 拉取镜像。

搜素镜像

搜索ubuntu镜像

docker search ubuntu

 
在这里插入图片描述

获取镜像

docker pull ubuntu

 
在这里插入图片描述

查看本地镜像

docker images

 
在这里插入图片描述

如果 Docker Hub 中没有自己中意的镜像,怎么办呢?当然就是自己制作镜像了,接下来介绍制作镜像的两种方式。

4. 创建自己的镜像

常见的创建镜像的方式有两种。

使用容器的快照制作镜像

小而精的 Docker 项目,为什么要使用 Docker? Docker 容器的更多相关文章

  1. docker开启2376端口CA认证及IDEA中一键部署docker项目

    嘿,大家好,今天更新的内容是docker开启2376端口CA认证及IDEA中一键部署docker项目... 先看效果 我们可以通过idea一键部署docker项目,还以通过idea的控制台实时查看容器 ...

  2. SpringBoot项目部署初体验【Docker】

    前言 一个微服务项目,小到几个模块,大到十几二十几个模块,每个模块都是单独的SpringBoot工程,这么多模块的部署,部署成本真的很高,而且每个服务的部署,都是手动部署,打成war或者jar ?,一 ...

  3. Docker 实战(3)- 搭建 Gitlab 容器并上传本地项目代码

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 搭建 Gitlab 容器 搜索 ...

  4. Docker项目demo

     Docker数据持久化 4.1 Volume (1)创建mysql数据库的container (2)查看volume (3)具体查看该volume docker volume inspect 485 ...

  5. windows环境30分钟从0开始快速搭建第一个docker项目(带数据库交互)

    前言 小白直接上手 docker  构建我们的第一个项目,简单粗暴,后续各种概念边写边了解,各种概念性的内容就不展开,没了解过的点击 Docker 教程 进行初步了解. Docker 是一个开源的应用 ...

  6. 如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目

    如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目 #1:前提准备 1.1 首先请确认你的电脑是windows10专业版或企业版,只有这 ...

  7. node项目自动化部署--基于Jenkins,Docker,Github(1)安装Jenkins

    前言 每次项目代码更新后都要重新部署,如果只有一台服务器还好. 但是如果是分布式系统,动不动就很多台服务器,所以代码的自动部署就显得十分重要了. 这里用几篇文章来记录一下如何使用Jenkins,Doc ...

  8. docker项目ssl 安全证书的种种

    一,证书挂着宿主的nginx上 这个很简单,只需要修改宿主nginx的配置文件即可 server { ssl default; server_name www.abc.com; #项目域名 ssl_c ...

  9. 使用nginx实现一个主机部署多域名指向不同docker项目

     1,安装 docker yum install docker 使用Docker 中国加速器 vim /etc/docker/daemon.json 添加下面代码 { "registry-m ...

随机推荐

  1. spring boot:使用validator做接口的参数、表单、类中多字段的参数验证(spring boot 2.3.1)

    一,为什么要做参数验证? 永远不要相信我们在后端接收到的数据, 1,防止别人通过接口乱刷服务:有些不怀好意的人或机构会乱刷我们的服务,例如:短信接口, 相信大家可能很多人在工作中遇到过这种情况 2,防 ...

  2. CentOS 8 安装 oniguruma 和 oniguruma-devel

    一,oniguruma是什么? oniguruma是一个处理正则表达式的库,我们之所以需要安装它, 是因为在安装php7.4的过程中,mbstring的正则表达式处理功能对这个包有依赖性, 所以我们要 ...

  3. matplotlib条形图

    三个班级平均分 import matplotlib.pyplot as plt import matplotlib as mpl classes = ['class1','class2','class ...

  4. 数组列表(ArrayList)

    2020-10-20        longzqa@163.com        stronglzq [摘要]针对数组容量固定无法扩展的问题,引入数组列表(ArrayList).主要对数组列表的声明及 ...

  5. WebSocket的理解

    Websocket相对于无状态的HTTp协议,是在一次成功连接之后,在关闭请求之前,服务器和客户端能顺利进行信息传输.而不用像HTTP那样每一次都要告诉服务器这个请求者是谁(身份鉴别信息). 在HTT ...

  6. Bitmap缩放(二)

    先得到位图宽高不用加载位图,然后按ImageView比例缩放,得到缩放的尺寸进行压缩并加载位图.inSampleSize是缩放多少倍,小于1默认是1,通过调节其inSampleSize参数,比如调节为 ...

  7. Spring Boot 学习摘要--关于日志框架

    date: 2020-01-05 16:20:00 updated: 2020-01-08 15:50:00 Spring Boot 学习摘要--关于日志框架 学习教程来自:B站 尚硅谷 1. 关于日 ...

  8. vue-cli 工程目录结构介绍 详细介绍

    vue-cli目录结构: vue-cli目录解析: build 文件夹:用于存放 webpack 相关配置和脚本.开发中仅 偶尔使用 到此文件夹下 webpack.base.conf.js 用于配置 ...

  9. 将字符串反转的 Java 方法

    Java中经常会用到将字符串进行反转的时候,程序员孔乙己总结了7种反转方法,如下: //方法1 递归方法 public static String reverse1(String s) { int l ...

  10. ActiveMQ第一个示例

    首先先安装ActiveMQ:https://www.cnblogs.com/hejianliang/p/9149590.html 创建Java项目,把 activemq-all-5.15.4.jar ...