创建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 dockersystemctl 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中执行

- 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 ...
随机推荐
- SpringBoot使用JSch操作Linux
推荐使用Hutool的Jsch工具包(它用的连接池的技术) 一.SSH远程连接服务器 SSH更多见:http://t.csdnimg.cn/PrsNv 推荐连接工具:FinalShell.Xshell ...
- python执行SQL语句中有格式化时是否需要加引号
import pymysqldb = pymysql.connect(host='localhost', user='root', password='123456', database='test' ...
- Mybatis的逆向工程(generator)
Tips:Mybatis generator官网 http://www.mybatis.org/generator/configreference/commentGenerator.html Myba ...
- Oracle删除列操作:逻辑删除和物理删除
概念 逻辑删除:逻辑删除并不是真正的删除,而是将表中列所对应的状态字段(status)做修改操作,实际上并未删除目标列数据或恢复这些列占用的磁盘空间.比如0是未删除,1是删除.在逻辑上数据是被删除了, ...
- d3d12龙书阅读----绘制几何体(下)
d3d12龙书阅读----绘制几何体(下) 本节在上一节的基础上,对整个绘制过程进行优化,将绘制单个几何体的内容拓展到了多个几何体,同时对根签名进行了进一步地探索. 帧资源 在之前绘制每帧的结尾,我们 ...
- 4G EPS 中的消息类型
目录 文章目录 目录 消息 MIB(主消息块) SIBs(多个系统消息块) 系统消息的映射和调度 系统信息的更改通知 消息 LTE 的系统消息是蜂窝网络与 UE 互相交互的与 LTE 系统相关的.特殊 ...
- apisix~authz-keycloak插件介绍
参考:https://apisix.apache.org/docs/apisix/plugins/authz-keycloak/ kc插件源码梳理及原理说明 如果只是进行keycloak颁发的toke ...
- Android 13 - Media框架(8)- MediaExtractor
关注公众号免费阅读全文,进入音视频开发技术分享群! 上一篇我们了解了 GenericSource 需要依赖 IMediaExtractor 完成 demux 工作,这一篇我们就来学习 android ...
- WPF多显示器问题 - WindowState
标签 wpf multiple-monitors 一段时间以来,我一直试图让我的 WPF 应用程序跨越多个监视器,并且几乎可以正常工作.当我设置以下行时,问题似乎出现了: win1.WindowSta ...
- Keil_MDK中无法打开map文件的解决办法
如果在MDK中打开map文件 我们在STM32的开发过程中,经常会查看.map文件 .map文件是MDK在编译过程中生成的一个包含镜像文件信息的重要文件,在程序编译后自动生成,比方这里我的工程下自动将 ...