创建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 ...
随机推荐
- Docker使用docker compose部署zfile 实现在线浏览下载
需要先安装docker-compose curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-c ...
- LLM生态下爬虫程序的现状与未来
最近出现一批与LLM有关的新的爬虫框架,一类是为LLM提供内容抓取解析的,比如 Jina Reader 和 FireCrawl ,可以将抓取的网页解析为markdown这样的对LLM友好的内容,例如m ...
- n个人围成一圈,顺序排号从1到n。从第一个人开始报数(从一到三如此循环)。凡是报到三的出局,最后剩下的一个人原始编号为?
#include<stdio.h> int main(){ int num,n,i=0,flag=0; //num记录剩余人数,n记录总人数,i为原始编号,flag为编号123时的编号 p ...
- fastposter发布1.4.3 跨语言的海报生成器
fastposter发布1.4.3 跨语言的海报生成器 v1.4.3 增加golang语言支持,优化生成器代码,完善官方文档 昨天喝了点小9️⃣,发版慢了些. future: 增加golang语言支持 ...
- cesium教程6-用entity绘制点线面label和billboard广告牌
注意:billboard显示的图片是立体的,会跟随角度而变化的. pinBuilder.fromText()用于创建自定义地图图钉 完整示例代码: <!DOCTYPE html> < ...
- vue实现的常见的动画效果
本文包括的动画: zoom-in zoom-in-left zoom-in-right zoom-in-top zoom-in-bottom zoom-in-center-x zoom-in-cent ...
- 张同乐-从零开始,打造高效可靠的Locust性能测试
一.前言 欢迎来到Locust负载测试的世界!Locust是一款开源的负载测试工具,它可以模拟成千上万的用户同时访问你的应用程序,以测试其性能和稳定性. 这个工具具有易于使用.可扩展和高度可定制化等特 ...
- MindSponge分子动力学模拟——体系控制(2024.05)
技术背景 在传统的分子动力学模拟软件中,对于分子体系的控制,例如控制体系的相对位置亦或是绝对位置,通常都是通过施加一些约束算法来实现的.例如用于限制化学键的LINCS算法,又比如水分子体系非常常用的S ...
- Java21 GA新特性-虚拟线程详解
本文转载至:虚拟线程 - VirtualThread源码透视 - throwable - 博客园 (cnblogs.com) 一. 前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟 ...
- Django 的 ORM
Django 的 ORM: 注意: 需要提前创建好数据库,Django不会自动创建数据库