创建docker

准备实验环境

1. 安装前准备

Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。

1.1 查看当前的内核版本

uname -r

1.2 使用 root 权限更新 yum 包

yum -y update

这个命令不是必须执行的,看个人情况,后面出现不兼容的情况的话就必须update了

注意

yum -y update:升级所有包同时也升级软件和系统内核;

yum -y upgrade:只升级所有包,不升级软件和系统内核

1.3 卸载旧版本(如果之前安装过的话)

yum remove docker docker-common docker-selinux docker-engine

2. 安装Docker的详细步骤

2.1 安装需要的软件包

yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

2.2 设置 yum 源

设置一个yum源,下面两个都可用

(中央仓库)
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo

(阿里仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

假如出现报错信息

except yum.Errors.RepoError, e:

原因:
yum采用Python作为命令解释器,而我们将Python升级为Python3之后,由于python版本之间兼容性不太好,使得2.X版本与3.0版本之间存在语法不一致问题,CentOS 7自带的yum采用的是python2.7,当系统将python升级到3.7后,出现语法解释错误.

修改方式

到指定文件添加2.7版本的注明,使用旧版本

vi /usr/bin/yum-config-manager

2.3 选择docker版本并安装

2.3.1 查看可用版本有哪些

yum list docker-ce --showduplicates | sort -r

2.3.2 选择一个版本并安装:

yum install docker-ce-版本号

当然也可以不选,让它自己选择最新的。

yum install docker-ce

2.3.3 启动 Docker 并设置开机自启

systemctl start docker

systemctl enable docker

运行第一个容器

环境就绪,马上运行第一个容器,执行命令:

docker run -d -p 80:80 httpd

结果会出现如下图类似的画面

其过程可以简单地描述为:

  1. Unable to find image ' httpd: latest' locally
  • 无法在本地找到图像' httpd: latest'
  1. latest: Pulling from library/httpd
  • 从Docker Hub下载httpd镜像。镜像中已经安装好了Apache HTTP Server。
  1. Status: Downloaded newer image for httpd: latest
  • 启动httpd容器,并将容器的80端口映射到host的80端口。

下面可以通过浏览器验证容器是否正常工作。

在浏览器中输入http://[对应ip]/,如下图所示。

可以访问容器的HTTP服务了,看到上图所示的页面,表示第一个容器运行成功!

注意:如果访问不了,请查看防火墙是否阻拦

镜像下载加速

由于Docker Hub的服务器在国外,下载镜像会比较慢。

DaoCloud为我们提供了免费的国内镜像服务。

使用镜像服务

  1. 在daocloud.io免费注册一个用户。
  2. 登录后,单击顶部菜单“加速器”。
    1. copy“加速器”命令并在host中执行
  1. 重启Docker deamon
  • systemctl daemon-reload

     systemctl restart docker

容器是如何工作的

1.Docker架构

Docker的核心组件包括:

● Docker客户端:Client

● Docker服务器:Docker daemon

● Docker镜像:Image

● Registry

● Docker容器:Container

Docker采用的是Client/Server架构。

客户端向服务器发送请求,服务器负责构建、运行和分发容器。

客户端和服务器可以运行在同一个Host上,客户端也可以通过socket或REST API与远程的服务器通信。

2.Docker客户端

最常用的Docker客户端是docker命令。

通过docker我们可以方便地在Host上构建和运行容器。

docker支持很多操作(子命令)。

除了docker命令行工具,用户也可以通过REST API与服务器通信。

3.Docker服务器

Docker daemon是服务器组件,以Linux后台服务的方式运行。

Docker daemon运行在Docker host上,负责创建、运行、监控容器,构建、存储镜像。

默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听,步骤如下:

1.编辑配置文件

   /etc/systemd/system/multi-user.target.wants/docker.service,在环境变量ExecStart后面添加 -H tcp://0.0.0.0,允许来自任意IP的客户端连接。

2.重启Docker daemon

  systemctl daemon-reload 重新加载 systemd的配置文件

  systemctl status docker.service 查看状态

3.连接服务器

  docker -H 192.168.1.1 info

  服务器IP为192.168.1.1,客户端在命令行里加上-H参数,即可与远程服务器通信

  info子命令用于查看Docker服务器的信息。

4.Docker镜像

可将Docker镜像看成只读模板,通过它可以创建Docker容器。

例如某个镜像可能包含一个Ubuntu操作系统、一个Apache HTTP Server以及用户开发的Web应用。

镜像有多种生成方法:

(1)从无到有开始创建镜像;

(2)下载并使用别人创建好的现成的镜像;

(3)在现有镜像上创建新的镜像。

可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作dockerfile,通过执行docker build 命令可以构建出Docker镜像

5.Docker容器

Docker容器就是Docker镜像的运行实例。

用户可以通过CLI(Docker)或是API启动、停止、移动或删除容器。

可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。

6.Registry

Registry是存放Docker镜像的仓库,Registry分私有和公有两种。

Docker Hub(https://hub.docker.com/)是默认的Registry,由Docker公司维护,上面有数以万计的镜像,用户可以自由下载和使用。

出于对速度或安全的考虑,用户也可以创建自己的私有Registry。

docker pull命令可以从Registry下载镜像。

docker run命令则是先下载镜像(如果本地没有),然后再启动容器。

7.一个完整的例子

启动容器

(1)Docker客户端执行docker run命令。

(2)Docker daemon发现本地没有httpd镜像。

(3)daemon从Docker Hub下载镜像。

(4)下载完成,镜像httpd被保存到本地。

(5)Docker daemon启动容器

docker images可以查看到httpd已经下载到本地

docker ps或者docker container ls显示容器正在运行

创建docker的更多相关文章

  1. 创建docker私人仓库

    关于创建docker私人仓库 1.1.           安装步骤 1.1.1.            直接从公共库上面下载register镜像在本地执行 1.1.1.1.             ...

  2. docker 创建docker用户组,应用用户加入用户组

    在Linux系统下使用docker,为了避免每次输入命令都需要sudo,可以把用户加入docker用户组 创建docker用户组 sudo groupadd docker 普通用户加入docker用户 ...

  3. 一步步创建第一个Docker App —— 2. 创建 Docker化 主机

    原文:https://docs.docker.com/engine/getstarted-voting-app/node-setup/ 部署voting app的第一步,是为集群节点(swarm no ...

  4. zun 不能创建 docker 容器,报错: datastore for scope "global" is not initialized

    问题:zun不能创建docker容器,报错:datastore for scope "global" is not initialized   解决:修改docker 服务配置文件 ...

  5. linux 创建docker基础镜像

    通过Dockerfile创建镜像时,一般都是基于 Docker Hub 提供的官方镜像.以下分别介绍在ubuntu16和centos7 两个系统上创建个人私有基础镜像的方法.  一.ubuntu16创 ...

  6. 使用Spring Boot创建docker image

    目录 简介 传统做法和它的缺点 使用Buildpacks Layered Jars 自定义Layer 简介 在很久很久以前,我们是怎么创建Spring Boot的docker image呢?最最通用的 ...

  7. Spring Boot 创建 Docker 镜像

    随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Dock ...

  8. Docker笔记--镜像&基于GO项目创建Docker镜像

    Docker笔记--镜像&基于GO项目创建Docker镜像 核心概念 Doker镜像--包含一个基本的操作系统运行环境和应用程序,镜像是创建Docker容器的基础. Docker容器--如果把 ...

  9. 使用自签名的方式创建Docker私有仓库

    Docker推荐使用CA机构颁发的TLS(Transport Layer Security Protocol)证书来保护docker仓库的安全,但是我们也可以选择使用HTTP或者自签名证书的方式实现本 ...

  10. 创建docker镜像,初始化jdk8与tomcat环境

    一.创建Dockerfile文件: 创建Dockerfile文件,下载jdk与tomcat放在Dockerfile同目录下. Dockerfile文件内容: FROM Ubuntu:14.10 MAI ...

随机推荐

  1. EXCEL-统计sheet个数、统计指定单元格个数

    Excel的函数,可以直接在里面执行 1.统计sheet个数 =SHEETS() 参考:https://office.tqzw.net.cn/excel/excel/8168.html 2.统计单元格 ...

  2. 对象存储服务的Lambda特性

    AWS S3提供了Lambda服务,详见Amazon S3 Object Lambda. 技术方案 作为兼容AWS S3能力的对象存储服务,交付Lambda特性时,关注点有: 实现方式 SDK 独立进 ...

  3. SpringBoot3.1.5对应新版本SpringCloud开发(2)-Eureka的负载均衡

    Eureka的负载均衡 负载均衡原理 负载均衡流程 老版本流程介绍 当order-servic发起的请求进入Ribbon后会被LoadBalancerInterceptor负载均衡拦截器拦截,拦截器获 ...

  4. 【股票爬虫教程】我用100行Python代码,爬了雪球网5000只股票,还发现一个网站bug!

    目录 一.爬取目标 二.分析网页 三.爬虫代码 四.同步视频 五.get完整源码 一.爬取目标 您好,我是@马哥python说,今天继续分享爬虫案例. 爬取网站:雪球网的沪深股市行情数据 具体菜单:雪 ...

  5. Mysql5.7 Linux编译安装教程

    1.系统约定 安装文件下载目录:/data/software Mysql目录安装位置:/usr/local/mysql 数据库保存位置:/usr/local/mysql/data 日志保存位置:/tm ...

  6. java里面的方法。

    java里面的方法. java方法是语句的组合,他们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建在其他地方被引用 方法类似于其他语言里面的函数 e ...

  7. Advanced .Net Debugging 8:线程同步

    一.介绍 这是我的<Advanced .Net Debugging>这个系列的第八篇文章.这篇文章的内容是原书的第二部分的[调试实战]的第六章[同步].我们经常写一些多线程的应用程序,写的 ...

  8. 痞子衡嵌入式:从JLink V7.62开始优化了手动增加新MCU型号支持方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是JLink 7.62优化了手动增加新MCU型号支持方法. JLink 工具可以说是搞单片机开发的必备神器,JLink 包括一个硬件仿真器 ...

  9. ClickHouse 初步认识

    概述 Clickhouse 是分析型数据库,真正的面向列式存储,支持高维度表.它免费开源.具备高效的数据导入和查询性能,能达到 50M/200M 每秒.支持实时查询.支持不同功能底层存储引擎,例如:M ...

  10. Android项目代码规范

    项目代码规范 Android Studio的代码Style检查和inspect Code功能已经很强大,规范只负责代码结构和文件结构 带?的内容为可选或团队内协商内容 核心目标 提高可维护性: MVV ...