docker在centos上的使用

文章目录

  • Docker包括三个基本概念
    • 镜像
    • 容器
    • 仓库
  • 安装
    • 官方文档
      • 官方文档
      • 安装centos版本
    • 在 CentOS上安装docker引擎
      • 先决条件
      • 设置镜像的仓库
      • 安装docker引擎相关
    • aliyun镜像加速
    • 启动docker
      • 启动,查看状态
      • 查看版本
      • 启动helloworld
      • 查看下载的镜像
      • 卸载docker
  • 常用命令
    • 命令全貌
    • 基本命令
    • docker引擎命令
    • images命令
    • 容器命令
  • 使用docker
    • 安装nginx
      • 搜索应用
      • 下载镜像
      • 查看镜像
      • 运行镜像
    • tomcat
  • 提交镜像
  • 容器数据卷
  • docker file
  • docker 网络
  • compose
    • 简介
    • 安装compose
      • 下载
      • 授权
      • 建立软连接
  • swarm

Docker包括三个基本概念

镜像(Image)
容器(Container)
仓库(Repository)
在这里插入图片描述

镜像

一个特殊的文件系统
操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
Docker设计时,就充分利用Union FS的技术,将其设计为分层存储的架构。 镜像实际是由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

容器

镜像运行时的实体
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

按照Docker最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此, 使用数据卷后,容器可以随意删除、重新run,数据却不会丢失。

仓库

集中存放镜像文件的地方
镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。

一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。

这里补充一下Docker Registry公开服务和私有Docker Registry的概念:

Docker Registry公开服务是开放给用户使用、允许用户管理镜像的Registry服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

最常使用的Registry公开服务是官方的Docker Hub ,这也是默认的Registry,并拥有大量的高质量的官方镜像,网址为:hub.docker.com/ 。在国内访问Docker Hub可能会比较慢国内也有一些云服务商提供类似于Docker Hub的公开服务。

除了使用公开服务外,用户还可以在本地搭建私有Docker Registry 。Docker官方提供了Docker Registry镜像,可以直接使用做为私有Registry服务。开源的Docker Registry镜像只提供了Docker Registry API的服务端实现,足以支持Docker命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。
在这里插入图片描述

安装

官方文档

官方文档

在这里插入图片描述

安装centos版本

在这里插入图片描述

在 CentOS上安装docker引擎

先决条件

  • CentOS 7 以上的版本
  • centos-extras repository必需可用
    In CentOS 7 and 8 this is an upstream repository, as well as additional CentOS packages. The CentOS development team have tested every item in this repository and they all work with CentOS. This repository is shipped with CentOS and is enabled by default.
  • 卸载老的docker版本
[root@localhost ~]# yum remove docker \
>                   docker-client \
>                   docker-client-latest \
>                   docker-common \
>                   docker-latest \
>                   docker-latest-logrotate \
>                   docker-logrotate \
>                   docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
  • 需要的安装包
yum install -y yum-utils

设置镜像的仓库

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo  #默认来自国外,速度较慢

使用国内镜像地址

yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新索引
    我们在更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存
yum makecache fast

这个命令是将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度

yum clean all

yum 会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除缓存。

安装docker引擎相关

yum install docker-ce docker-ce-cli containerd.io

docker-ce是社区版,ee是企业版,官方推荐用ce

  • 提示公钥没安装
    在这里插入图片描述
    解决办法
wget https://get.docker.com/gpg
--2020-07-24 07:34:36--  https://get.docker.com/gpg
Resolving get.docker.com (get.docker.com)... 52.84.166.98, 52.84.166.105, 52.84.166.59, ...
Connecting to get.docker.com (get.docker.com)|52.84.166.98|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 975 [binary/octet-stream]
Saving to: ‘gpg’

aliyun镜像加速

aliyun登录–>容器镜像服务->镜像加速器
在这里插入图片描述
在这里插入图片描述
执行以下命令:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://1ql1ltd3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

启动docker

启动,查看状态

[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: active (running) since Fri 2020-07-24 07:40:51 EDT; 11s agoDocs: https://docs.docker.comMain PID: 17215 (dockerd)Tasks: 8Memory: 38.1MCGroup: /system.slice/docker.service└─17215 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

查看版本

[root@localhost ~]# docker version
Client: Docker Engine - CommunityVersion:           19.03.12API version:       1.40Go version:        go1.13.10Git commit:        48a66213feBuilt:             Mon Jun 22 15:46:54 2020OS/Arch:           linux/amd64Experimental:      falseServer: Docker Engine - CommunityEngine:Version:          19.03.12API version:      1.40 (minimum version 1.12)Go version:       go1.13.10Git commit:       48a66213feBuilt:            Mon Jun 22 15:45:28 2020OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.2.13GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429runc:Version:          1.0.0-rc10GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dddocker-init:Version:          0.18.0GitCommit:        fec3683

启动helloworld

在这里插入图片描述
docker hub在国外,有时被封,下载成功后如下
在这里插入图片描述
本地没有镜像,会到docker hub 拉取镜像

查看下载的镜像

在这里插入图片描述

卸载docker

  • 卸载安装的包
yum remove docker-ce docker-ce-cli containerd.io
  • 删除docker目录
rm -rf /var/lib/docker

在这里插入图片描述

常用命令

命令全貌

全景图在这里插入图片描述

基本命令

CommandDescription
docker attach“Attach local standard input, output, and error streams to a running container”
docker buildBuild an image from a Dockerfile
docker builderManage builds
docker checkpointManage checkpoints
docker commitCreate a new image from a container’s changes
docker configManage Docker configs
docker containerManage containers
docker contextManage contexts
docker cpCopy files/folders between a container and the local filesystem
docker createCreate a new container
docker diffInspect changes to files or directories on a container’s filesystem
docker eventsGet real time events from the server
docker execRun a command in a running container
docker exportExport a container’s filesystem as a tar archive
docker historyShow the history of an image
docker imageManage images
docker imagesList images
docker importImport the contents from a tarball to create a filesystem image
docker infoDisplay system-wide information
docker inspectReturn low-level information on Docker objects
docker killKill one or more running containers
docker loadLoad an image from a tar archive or STDIN
docker loginLog in to a Docker registry
docker logoutLog out from a Docker registry
docker logsFetch the logs of a container
docker manifestManage Docker image manifests and manifest lists
docker networkManage networks
docker nodeManage Swarm nodes
docker pausePause all processes within one or more containers
docker pluginManage plugins
docker portList port mappings or a specific mapping for the container
docker psList containers
docker pullPull an image or a repository from a registry
docker pushPush an image or a repository to a registry
docker renameRename a container
docker restartRestart one or more containers
docker rmRemove one or more containers
docker rmiRemove one or more images
docker runRun a command in a new container
docker saveSave one or more images to a tar archive (streamed to STDOUT by default)
docker searchSearch the Docker Hub for images
docker secretManage Docker secrets
docker serviceManage services
docker stackManage Docker stacks
docker startStart one or more stopped containers
docker statsDisplay a live stream of container(s) resource usage statistics
docker stopStop one or more running containers
docker swarmManage Swarm
docker systemManage Docker
docker tagCreate a tag TARGET_IMAGE that refers to SOURCE_IMAGE
docker topDisplay the running processes of a container
docker trustManage trust on Docker images
docker unpauseUnpause all processes within one or more containers
docker updateUpdate configuration of one or more containers
docker versionShow the Docker version information
docker volumeManage volumes
docker wait“Block until one or more containers stop, then print their exit codes”

docker引擎命令

images命令

容器命令

使用docker

安装nginx

搜索应用

docker search nginx

在这里插入图片描述

下载镜像

docker pull ngnix

在这里插入图片描述

  • 需要在docker hub注册一个账号
    https://hub.docker.com/

在这里插入图片描述

  • 重新执行pull命令
    在这里插入图片描述

查看镜像

在这里插入图片描述

运行镜像

指定名字niinx01和映射的端口8800

docker run -d  --name nginx01 -p 8800:80 nginx

在这里插入图片描述

  • 查看
    在这里插入图片描述

tomcat

docker run -it --rm tomcat:9.0

–rm 用完即删除的意思

提交镜像

类似git

docker commit   #提交容器成为一个新的镜像
docker commit  -m="提交的描述信息" -a="作者"  容器id 目标镜像名:[tag]

容器数据卷

  • 容器的持久化和同步操作,保证数据文件的安全,在容器被删除时,保留数据在本地。
  • 容器间也可数据同步
docker run -it -v /home/ceshi:/home centos /bin/bash

操作上类似宿主机和容器之间的端口映射,就是把宿主机的/home/ceshi映射到容器中的/home目录,在容器中home目录发生的的变化,会同步到宿主机对应目录。
在这里插入图片描述

docker file

在这里插入图片描述
在这里插入图片描述
小结
在这里插入图片描述

docker 网络

compose

简介

用来定义和运行多个容器的工具,compose是官方开源项目,docker环境没有,需要另外安装
三个步骤

  • 定义你的应用使用的dockerfile,使你的项目可以运行在任何地方
  • 在docker-compose.yml中定义一个服务,包含所有你的app,使他们能在一个独立的环境中运行
  • 运行docker-compose up,编排开始,整个应用运行。
    docker-compose.yml 类似这样
version: '2.0'
services:web:build: .ports:- "5000:5000"volumes:- .:/code- logvolume01:/var/loglinks:- redisredis:image: redis
volumes:logvolume01: {}

安装compose

下载

curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

在这里插入图片描述

授权

chmod +x /usr/local/bin/docker-compose

建立软连接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

在这里插入图片描述
成功

swarm

文档位置
在这里插入图片描述
在这里插入图片描述
新机器的网络
在这里插入图片描述
swarm命令

在这里插入图片描述
在这里插入图片描述
生成管理节点
在这里插入图片描述

其他主机作为worker加入这个集群

 docker swarm join --token SWMTKN-1-63aj96orfst4szd7xrikchplqbmy5uy0ayojevm8ad4zhfg002-29pxy29y26uzhmugco5x9949h 192.168.2.111:2377

报错
在这里插入图片描述
manager主机的防火墙未关闭
在这里插入图片描述
关闭后重新,执行join命令
在这里插入图片描述

管理节点查看
在这里插入图片描述
再加入一个worker节点

主机作为管理机加入集群,先生成token。

docker swarm join-token manager
docker swarm join --token SWMTKN-1-63aj96orfst4szd7xrikchplqbmy5uy0ayojevm8ad4zhfg002-a881hdjy2ksxep81hnft58ilk 192.168.2.111:2377

然后拿这个token命令,在第四台机上运行,同样要关闭防火墙
在这里插入图片描述
查看节点状态

在这里插入图片描述
raft协议:必需保证大多数节点存活,才可用;所以集群至少需要3台主节点,有两台存活时,是可用的,有一台就不行了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部