首页 > 其他分享 >创建docker

创建docker

时间:2023-04-05 15:23:26浏览次数:40  
标签:容器 创建 yum 镜像 docker Docker 客户端

创建docker

准备实验环境

1. 安装前准备

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

 

1.1 查看当前的内核版本

uname -r

fig:

 

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

fig:

 

2.3 选择docker版本并安装

2.3.1 查看可用版本有哪些

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

 

2.3.2 选择一个版本并安装:

yum install docker-ce-版本号

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

yum install docker-ce

fig: fig:

 

2.3.3 启动 Docker 并设置开机自启

systemctl start docker

systemctl enable docker

fig:

 

运行第一个容器

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

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服务了,看到上图所示的页面,表示第一个容器运行成功!

fig:

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

 

镜像下载加速

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

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

使用镜像服务

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

     systemctl restart docker

 

容器是如何工作的

1.Docker架构

Docker的核心组件包括:

● Docker客户端:Client

● Docker服务器:Docker daemon

● Docker镜像:Image

● Registry

● Docker容器:Container

fig:

Docker采用的是Client/Server架构。

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

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

 

2.Docker客户端

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

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

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

fig:

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

 

3.Docker服务器

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

fig:

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的客户端连接。

fig:

 

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已经下载到本地

fig:

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

标签:容器,创建,yum,镜像,docker,Docker,客户端
From: https://www.cnblogs.com/Wesuiliye/p/17289472.html

相关文章

  • Docker 下 RedisCluster 分片集群搭建
    1.Cluster分片集群1.1Cluster集群的结构和作用redis哨兵模式虽然提供了redis⾼可⽤、高并发读的解决方案,但是在海量数据应用场景下,仍然存在海量数据存储问题和高并发写的问题。当只有⼀个Master对外提供服务时,如果数据量特别⼤,内存占⽤问题严重,数据的高并发写、数......
  • Docker 网络
    1.Docker网络1.1Docker网络模式使用Docker时,宿主机和容器内系统、容器和容器之间都需要网络连接,必须要考虑容器和宿主机、容器和容器之间的网络连接方式,因此了解docker的网络模式对正确使用docker非常重要。Docker启动后,它默认会创建三个网络,使用docker......
  • Docker
    Docker1Docker简介1.1什么是虚拟化​ 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新......
  • Docker
    env华为云HECSUbuntu22.04server64bit#安装sudoapt-getinstalldocker-cedocker-ce-clicontainerd.iodocker-buildx-plugindocker-compose-plugin#启动sudoservicedockerstart#测试sudodockerrunhello-world查版本dockerversion查信息:dockerin......
  • Docker 如何开发容器
    Docker基本使用Docker的核心价值在于虚拟化或者说环境隔离【通过虚拟化技术实现虚拟环境】,解决环境配置和部署的依赖问题实现解耦我对虚拟化的理解源自《OperatingSystems:ThreeEasyPieces》,推荐阅读容器技术相关历史推荐知乎上的这篇文章:容器技术的历史Docker基本概......
  • Docker 下 Redis 数据库的持久化
    1、Docker容器的数据卷Docker是将系统与运行的环境打包成容器来运行,当容器删除后,容器里的系统自然也就没有了。但是,在实际的项目中,希望Docker容器产生的数据能够持久化,同时容器之间也能够共享数据。Docker提供了数据卷技术来实现这些需求。数据卷就是目录或文件,存......
  • java——maven——idea使用模板(骨架)创建maven工程——webapp(重点)
    黑马模板:                  本地:         ......
  • ROS用hector创建地图
    ROS用hector创建地图连接小车sshclbrobot@clbrobot激活树莓派roslaunchclbrobotbringup.launch打开hector_slam重新开终端打开hector_slamsshclbrobot@iproslaunchclbrobothector_slam.launch打开地图rosrunrvizrviz点击file,然后点击openconfig。路径:rik......
  • ROS机器人SLAM创建地图
    ROS机器人SLAM创建地图连接小车sshclbrobot@clbrobot激活树莓派roslaunchclbrobotbringup.launch开启雷达打开另一个终端输入:sshclbrobot@clbrobot注意:必须已经校正完成继续输入:#打开雷达roslaunchclbrobotlidar_slam.launchc出现“odomreceived!”就代......
  • 续:python 新环境的创建并在 spyder 中转换 - 如何解决转换环境时报错:invalid file pat
    原文地址blog.csdn.net目录重点问题描述解决方法各种尝试最终灵感重点不想看全文的直接看这里,不要安装一个和已有python环境一样版本的python(这里的一样指的是完全一样,比如都是python2.7.15),如果已有python2.7.15,可以创建python2.7.18的环境并在spyder中转换。如......