创建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显示容器正在运行

posted @ 2023-04-05 15:12  0x1e61  阅读(92)  评论(0)    收藏  举报