创建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. 04.2 go-admin前后端打包为一个服务上线

    目录 一.思路: 二.打包go-admin-ui为静态文件 a.修改配置文件 b.打包 c.复制dist到go-admin的static目录里 三.配置go-admin a.配置路由 b.访问页面 视 ...

  2. WordPress对url做重定向处理

    在一个网站进行改版滞后,可能会产生大量的错误的urls,我们想让这些urls还是存在的,并跳转到新的url,此时就要做301重定向. 针对wordpress做重定向,一般推荐使用redirection ...

  3. 网络流量分析 | AnaTraf 网络故障排除万用表教程更新: 如何抓取两个 MAC / IP 地址之间的流量?

    AnaTraf 致力于提供国产化网络流量分析.网络可视化.网络故障排除解决方案. AnaTraf 网络万用表是一款实时的网络测量.流量分析工具,用于网络流量监控.识别网络性能瓶颈.快速排查网络问题. ...

  4. JDK源码阅读-------自学笔记(二十六)(java.util.Map 自定义讲解)

    一.简介 Map就是用来存储"键(key)-值(value)"对的. 通过键寻找value,所以键不能重复. 数组的本质也是一种键值对,区别就是索引一般是数字,而Map的Key可以 ...

  5. npm创建项目

    创建项目 创建项目目录 首先新建一个文件夹,这里存放着我们的项目. 创建项目文件 这里不使用任何项目模板,相当于使用空模板. 进入这个文件夹,再cmd中运行npm init. 然后按照提示输入pack ...

  6. apisix~集成服务发现注册中心

    摘要 当业务量发生变化时,需要对上游服务进行扩缩容,或者因服务器硬件故障需要更换服务器.如果网关是通过配置来维护上游服务信息,在微服务架构模式下,其带来的维护成本可想而知.再者因不能及时更新这些信息, ...

  7. spring boot整合maybatis plus 的 文件生成代码

    /** * 代码生成 */public class AutoGenerator_ { public static void main(String[] args) { AutoGenerator ge ...

  8. Vue cli单文件组件的使用

    整个项目是一个主文件index.html,index.html中会引入src文件夹中的main.js,main.js中会导入顶级单文件组件App.vue,App.vue中会通过组件嵌套或者路由来引用其 ...

  9. 7.13晚考试总结(NOIP模拟14)[队长快跑·影魔·抛硬币]

    樱花满地集于我心,楪舞纷飞祈愿相随 前言 终于没有令人头疼的数学了,总感觉这次考试的题目比较良心. 尤其是对于部分分的明细就非常到位(不像上一场的凭感觉给出部分分). 这就令我这种靠部分分暴力的菜鸡选 ...

  10. vue-devtools

    今天分享个vue的开发者工具,vue2和vue3都可以使用 先来看个效果: 如何安装? 打开官网vue-devtools 选择你需要版本 安装完记得重启下浏览器,不然是没效果的