Docker简介、Centos安装Docker、Docker常用命令和本地镜像推送到阿里云仓库

一、Docker简介

1、Docker是什么

Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

2、Docker能干什么

  • 一次构建、随处运行

  • 更快速的应用交付和部署

    • 传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
  • 更便捷的升级和扩缩容

    • 随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
  • 更简单的系统运维

    • 应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
  • 更高效的计算资源利用

    • Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率。

3、Docker基本组成

(1)镜像(image)

Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统。相当于容器的“源代码”,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

(2)容器(container)

从面向对象角度,Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

从镜像容器角度,可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

(3)仓库(repository)

仓库(Repository)是集中存放镜像文件的场所,分为公开仓库(Public)和私有仓库(Private)两种形式。

最大的公开仓库是 Docker Hub(https://hub.docker.com/)

(4)容器和镜像的关系

Docker 面向对象
镜像
容器 对象

二、Centos安装Docker步骤

帮助文档:https://docs.docker.com/engine/install/centos/

1、前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x。

2、安装步骤

(1)查看自己的内核

uname -r
3.10.0-1160.76.1.el7.x86_64

(2)卸载旧版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

(3)yum安装gcc相关

yum -y install gcc
yum -y install gcc-c++

(4)安装需要的软件包

yum install -y yum-utils

(5)设置stable镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(6)更新yum软件包索引

yum makecache fast

(7)安装DOCKER CE

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

(8)启动docker

systemctl start docker

(9)测试

docker version
docker run hello-world

(10)卸载

systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

3、配置阿里云镜像加速

https://promotion.aliyun.com/ntms/act/kubernetes.html

(1)获得加速器地址连接

登陆阿里云开发者平台
点击控制台
选择容器镜像服务
获取加速器地址,如:https://****.mirror.aliyuncs.com

(2)粘贴脚本直接执行

# 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://****.mirror.aliyuncs.com"]
}
EOF

注:将上面脚本中的地址修改为自己第一步获得的加速器地址

(3)重启服务器

sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker常用命令

1、帮助启动类命令

启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help

2、镜像命令

(1)列出本地主机上的镜像

docker images
-a :列出本地所有的镜像(含历史映像层)
-q :只显示镜像ID
选项 说明
REPOSITORY 表示镜像的仓库源
TAG 镜像的标签版本号
IMAGE ID 镜像ID
CREATED 镜像创建时间
SIZE 镜像大小

注:同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

(2)查看镜像/容器/数据卷所占的空间

docker system 镜像/容器/数据卷ID

(3)删除镜像

docker rmi 某个XXX镜像名字ID
删除单个:docker rmi  -f 镜像ID
删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部:docker rmi -f $(docker images -qa)

3、容器命令

(1)新建+启动容器

docker run [OPTIONS] 镜像名称/ID
OPTIONS说明:
--name="容器新名字"       为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
-p 参数 说明
-p hostPort:containerPort 端口映射 -p 8080:80
-p ip:hostPort:containerPort 配置监听地址 -p 10.0.0.100:8080:80
-p ip::containerPort 随机分配端口 -p 10.0.0.100::80
-p hostPort:containerPort:udp 指定协议 -p 8080:80:tcp
-p 81:80 -p 443:443 指定多个

(2)列出当前所有正在运行的容器

docker ps [OPTIONS]
OPTIONS说明:
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。

(3)启动已停止运行的容器

docker start 容器ID或者容器名

(4)重启容器

docker restart 容器ID或者容器名

(5)停止容器

docker stop 容器ID或者容器名

(6)强制停止容器

docker kill 容器ID或容器名

(7)删除已停止的容器

docker rm 容器ID

一次性删除多个容器实例

docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

(8)启动交互式容器(前台命令行)

docker run [OPTIONS] 容器ID或者容器名 /bin/bash
OPTIONS说明:
-i: 交互式操作。
-t: 终端。

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入 exit

四、将本地镜像推送到阿里云仓库

1、进入阿里云开发者平台创建镜像仓库

阿里云开发者平台:https://promotion.aliyun.com/ntms/act/kubernetes.html

  • 选择控制台,进入容器镜像服务
  • 选择个人实例
  • 命名空间—继续
  • 仓库名称—继续
  • 进入管理界面获得脚本

2、将镜像推送到阿里云

(1)登录阿里云Docker Registry

docker login --username=***@aliyun.com registry.cn-hangzhou.aliyuncs.com
username填自己的阿里云用户名
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。

(2)从Registry中拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong:[镜像版本号]

(3)将镜像推送到Registry

docker login --username=[email protected] registry.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

(4)选择合适的镜像仓库地址

从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。

猜你喜欢

转载自blog.csdn.net/LCHONSEONE/article/details/129034395
今日推荐