创建docker
创建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
结果会出现如下图类似的画面
其过程可以简单地描述为:
- Unable to find image ' httpd: latest' locally
- 无法在本地找到图像' httpd: latest'
- latest: Pulling from library/httpd
- 从Docker Hub下载httpd镜像。镜像中已经安装好了Apache HTTP Server。
- Status: Downloaded newer image for httpd: latest
- 启动httpd容器,并将容器的80端口映射到host的80端口。
下面可以通过浏览器验证容器是否正常工作。
在浏览器中输入http://[对应ip]/,如下图所示。
可以访问容器的HTTP服务了,看到上图所示的页面,表示第一个容器运行成功!
注意:如果访问不了,请查看防火墙是否阻拦
镜像下载加速
由于Docker Hub的服务器在国外,下载镜像会比较慢。
DaoCloud为我们提供了免费的国内镜像服务。
使用镜像服务
- 在daocloud.io免费注册一个用户。
- 登录后,单击顶部菜单“加速器”。
-
- copy“加速器”命令并在host中执行
- 重启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的更多相关文章
- 创建docker私人仓库
关于创建docker私人仓库 1.1. 安装步骤 1.1.1. 直接从公共库上面下载register镜像在本地执行 1.1.1.1. ...
- docker 创建docker用户组,应用用户加入用户组
在Linux系统下使用docker,为了避免每次输入命令都需要sudo,可以把用户加入docker用户组 创建docker用户组 sudo groupadd docker 普通用户加入docker用户 ...
- 一步步创建第一个Docker App —— 2. 创建 Docker化 主机
原文:https://docs.docker.com/engine/getstarted-voting-app/node-setup/ 部署voting app的第一步,是为集群节点(swarm no ...
- zun 不能创建 docker 容器,报错: datastore for scope "global" is not initialized
问题:zun不能创建docker容器,报错:datastore for scope "global" is not initialized 解决:修改docker 服务配置文件 ...
- linux 创建docker基础镜像
通过Dockerfile创建镜像时,一般都是基于 Docker Hub 提供的官方镜像.以下分别介绍在ubuntu16和centos7 两个系统上创建个人私有基础镜像的方法. 一.ubuntu16创 ...
- 使用Spring Boot创建docker image
目录 简介 传统做法和它的缺点 使用Buildpacks Layered Jars 自定义Layer 简介 在很久很久以前,我们是怎么创建Spring Boot的docker image呢?最最通用的 ...
- Spring Boot 创建 Docker 镜像
随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Dock ...
- Docker笔记--镜像&基于GO项目创建Docker镜像
Docker笔记--镜像&基于GO项目创建Docker镜像 核心概念 Doker镜像--包含一个基本的操作系统运行环境和应用程序,镜像是创建Docker容器的基础. Docker容器--如果把 ...
- 使用自签名的方式创建Docker私有仓库
Docker推荐使用CA机构颁发的TLS(Transport Layer Security Protocol)证书来保护docker仓库的安全,但是我们也可以选择使用HTTP或者自签名证书的方式实现本 ...
- 创建docker镜像,初始化jdk8与tomcat环境
一.创建Dockerfile文件: 创建Dockerfile文件,下载jdk与tomcat放在Dockerfile同目录下. Dockerfile文件内容: FROM Ubuntu:14.10 MAI ...
随机推荐
- Failed to download metadata for repo ‘PowerTools‘: Cannot prepare internal mirrorlist: No URLs in mi
Failed to download metadata for repo 'AppStream' [CentOS] - Techglimpsehttps://techglimpse.com/faile ...
- go http请求如果参数中带有"等特殊字符,参数传输可能会出现问题
编码完整的URL url.QueryEscape(urlStr) 编码完整的URL 如果我们要对完整的 URL 进行编码呢? 就是PHP中 urlencode() 函数的功能. 在 GO 语言下可以直 ...
- ansible系列(20)--ansible的变量详解
目录 1. Ansible Variables 1.1 变量定义的方式 1.2 在playbook中定义变量 1.2.1 使用vars方式定义变量 1.2.2 使用vars_file方式定义变量 1. ...
- nim 2. 变量与函数
对于系统的学习,官网上的相应的资料, 这里通过一个简单的例程,演示一下. 这个例程里有一个根据半径计算圆面积的方法,以及调用的示例: 演示代码 1 #计算圆的面积 2 proc calcArea(r: ...
- C语言:输入一个整数并让其逆反输出。123->321
主要思想为: a)计算输入的位数有多少个 b)计算出最高位的单位(若最高位为是万位, 那么需要一个变量存储最高位数值1000) c)用取模的方法从个位数开始进行取出每一个单位上的数字 d)从个位数开始 ...
- IDEA文件夹注释插件TreeInfotip使用
目录 前景提要 环境整合 构建工具(参考工具部署方式) 下载插件 使用 前景提要 很多开源代码或者公司代码,因为层级比较多,所以查阅困难,发现一个TreeInfotip插件可以对这样的文件做注释 环境 ...
- pageoffice6在线编辑word 文件禁止鼠标右键
有时让用户使用PageOffice只读模式(OpenModeType.docReadOnly)打开Word文件后,为了更好的只读效果,还希望禁用Word中的右键菜单,实现此效果只需创建com.zhuo ...
- Asp .Net Core 系列:集成 CAP + RabbitMQ + MySQL(含幂等性)
简介 官网:https://cap.dotnetcore.xyz/ CAP 是什么? 是一个 EventBus,同时也是一个在微服务或者 SOA 系统中解决分布式事务问题的一个框架.它有助于创建可扩展 ...
- Validate插件的自定义验证方法入门(结合Ajax实现用户名的数据库查重)
概述 本文介绍Validate自定义表单校验方式.Validate插件虽然提供了丰富的验证规则,但在很多时候仍然很难满足我们的开发需求,在注册页面我们需要通过ajax验证用户输入的用户名是否已经被他人 ...
- CSS——动画
@keyframes 规则 要创建 CSS 动画,您首先需要了解 @keyframes 规则,@keyframes 规则用来定义动画各个阶段的属性值,类似于 flash 动画中的关键帧,语法格式如下: ...