Docker 离线安装与基本使用

简介: Docker 离线安装与基本使用

Docker 离线安装与基本使用



一、Docker 概述


    1.Docker 和虚拟机的区别

    2.Docker 的使用场合

    3.Docker 三大核心

    镜像(Image)

    容器(Container)

    仓库(Repository)


二、安装 Docker


三、Docker 镜像操作


    1.有网方式

    2.离线方式

      1)查看镜像信息

      2)添加新标签

      3)删除镜像

      4)存出镜像

      5)载入镜像

      6)镜像上传


四、Docker 容器操作


    1.容器创建与启用

    2.容器的运行与停止

    3.进入容器

    4.导出容器与导入容器


五、Docker 资源控制


    1.对 CPU 的控制

      1)限制 CPU 使用速率

      2)多任务按比例分享 CPU

      3)限制 CPU 内核使用

    2.对内存使用的限制

    3.对 blkio 的限制


一、Docker 概述



Docker 是在 Linux 容器里运行应用的开源工具,是一种轻量级的"虚拟机"。Docker 的 Logo 设计为蓝色鲸鱼,拖着许多集装箱。如下图,鲸鱼可以看作宿主机,而集装箱可以理解为相互隔离的容器。每个集装箱中都包含自己的应用程序。



image.png


1.Docker 和虚拟机的区别


image.png


2.Docker 的使用场合


打包应用程序简化部署


可脱离底层硬件任意迁移——如:服务器从腾讯云迁移到阿里云


3.Docker 三大核心


镜像(Image)


Docker 镜像是 Docker 容器运行时的只读模板,镜像可以用来创建 Docker 容器。每一个镜像由一系列的层(layers)组成。


容器(Container)


Docker 利用容器来运行应用,一个 Docker 容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。容器是从镜像创建的运行实例。它可以被启用,开始,停止,删除。每个容器都是互相隔离的,保证安全的平台。


仓库(Repository)


Docker 仓库是用来集中保存镜像的地方,当创建了自己的镜像后,可以使用 push 命令将它上传到共有仓库(Public)或者私用仓库(Private),这样一来当下次要在另外台机器上使用这个镜像时,只需要从仓库上拉取下来就可以了。


二、安装 Docker



image.png



[root@Docker ~]# ls
anaconda-ks.cfg  docker-18.06.1-ce.tgz
[root@Docker ~]# tar xf docker-18.06.1-ce.tgz 
[root@Docker ~]# ls
anaconda-ks.cfg  docker  docker-18.06.1-ce.tgz
[root@Docker ~]# cp docker/* /usr/bin/
[root@Docker ~]# dockerd &          #启用docker


image.png


查看 Docker 版本


[root@localhost ~]# docker version


image.png


三、Docker 镜像操作



1.有网方式


1)搜索镜像


  • 命令语法:docker search 关键字 //用来搜索远端官方仓库中的共享镜像


2)获取镜像


  • 命令语法:docker pull 名称


2.离线方式


把刚才提供链接里的 centos7,拖到虚拟机中


[root@Docker ~]# ls
anaconda-ks.cfg  centos7  docker  docker-18.06.1-ce.tgz
[root@Docker ~]# 
[root@Docker ~]# docker load < centos7        #load命令加载成镜像
f972d139738d: Loading layer  208.8MB/208.8MB
Loaded image: centos:latest


image.png


1)查看镜像信息


  • 命令语法:docker images


[root@localhost ~]# docker images       #查看本地所有镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              75835a67d134        2 years ago         200MB


注解:


  • REPOSITORY:镜像属于的仓库(名称)
  • TAG:镜像的标签信息,标记同一仓库中的不同镜像(默认为 latest)
  • IMAGE ID:镜像的唯一 ID号,唯一标识了该镜像。
  • CREATED:镜像创建时间。
  • SIZE:镜像大小。


image.png


还可以根据镜像的唯一标识 ID 号,获取镜像详细信息


[root@localhost ~]# docker inspect 75835a67d134


2)添加新标签


  • 命令语法:docker tag 原名称:原标签 新名称:新标签


只是一个标签,而不是新建一个镜像,只是为了方便:


[root@Docker ~]# docker tag centos:latest centos7:centos7
[root@Docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              75835a67d134        2 years ago         200MB
centos7             centos7             75835a67d134        2 years ago         200MB
再添加一个标签,方便后面实验:
[root@Docker ~]# docker tag centos:latest centos8:centos8


image.png


3)删除镜像


使用 docker rmi 命令可以删除多余镜像


有两种方式:


1.根据镜像标签


[root@Docker ~]# docker rmi centos7:centos7
Untagged: centos7:centos7
[root@Docker ~]# docker images


image.png


2.根据镜像 ID


[root@Docker ~]# docker rmi -f 75835a67d134
[root@Docker ~]# docker images


image.png


再重新加载一下镜像


[root@Docker ~]# docker load < centos7


4)存出镜像


  • 当需要把镜像进行迁移的时候,需要保存为本地文件,这样过程叫存出镜像。


[root@Docker ~]# docker save -o test centos:latest


image.png


5)载入镜像


  • 将文件导出,成为镜像,这一过程叫做载入镜像。


[root@Docker ~]# docker rmi centos:latest
[root@Docker ~]# docker load < test
[root@Docker ~]# docker images


image.png


6)镜像上传


本地存储的镜像越来越多,就需要指定一个专门的地方存放这些镜像—仓库。


  • 命令格式:docker push 名称:标签
  • 注意:因为镜像上传需要网络,所以暂不使用


四、Docker 容器操作



1.容器创建与启用


容器的创建必须在镜像的基础上,不可以单独创建,是镜像的可写层。


  • 命令格式:docker create [选项] 镜像 运行的程序


常用选项:


  • -i:表示让容器的输入保持打开。
  • -t:表示让 Docker 分配一个伪终端。
  • --name:指定名字


创建容器:


[root@Docker ~]# docker create -it --name test centos:latest /bin/bash
[root@Docker ~]# docker ps -a


image.png


启用容器:


[root@Docker ~]# docker start test
[root@Docker ~]# docker ps


image.png


如果用户想创建并启动容器,可以执行 docker run 命令


  • 命令格式:docker run [选项] 镜像 运行的程序


[root@Docker ~]# docker run --name zhangsan centos:latest /bin/bash -c ls


image.png


但是通过查看容器运行状态,发现,运行完命令就停止了,start 启动也没有用


[root@Docker ~]# docker ps -a


image.png


有时候需要在后台持续运行这个容器,就需要添加 -d 选项


[root@localhost ~]# docker run -d --name lisi centos:latest /bin/bash -c "while true;do echo ok;done"
[root@localhost ~]# docker ps -a


image.png


2.容器的运行与停止


  • 关闭容器:docker stop 容器名称或 ID 简写
  • 删除容器:docker rm 容器名称或 ID 简写


[root@localhost ~]# docker stop lisi        #关闭容器
[root@localhost ~]# docker rm lisi          #删除容器


image.png


容器的暂停运行


[root@localhost ~]# docker pause test       #暂停运行
[root@localhost ~]# docker unpause test     #继续运行


image.png


3.进入容器


[root@Docker ~]# docker exec -it test /bin/bash
[root@7e74f2e6a025 /]# ls
[root@7e74f2e6a025 /]# exit


image.png


4.导出容器与导入容器


导出容器:将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。


  • 命令格式:docker export 容器ID/名称 > 文件名


[root@Docker ~]# docker export test > centos-test
[root@Docker ~]# ls -lh centos-test 
-rw-r--r-- 1 root root 199M 12月  6 23:04 centos-test


image.png


导入容器:将容器文件生成镜像。


  • 命令格式:cat 文件名 | docker import - 生成的镜像名称:标签


[root@Docker ~]# cat centos-test | docker import - centos:test
[root@Docker ~]# docker images


image.png


五、Docker 资源控制



Cgroup 是 Control group 的简写,是 Linux 内核提供的一种限制所使用物理资源的机制,这些资源主要包括 CPU、内存、blkio。


1.对 CPU 的控制


1)限制 CPU 使用速率


只有在容器运行时才会在系统 CPU 路径下生成目录。


[root@Docker ~]# docker create -it --name aaa centos:latest /bin/bash
[root@Docker ~]# docker start aaa


image.png

image.png


2)多任务按比例分享 CPU


当多个容器任务运行时,很难计算 CPU 的使用率,为了使容器合理使用 CPU 资源,可以通过 --cpu-shares 选项设置 CPU 按比例共享 CPU 资源,这种方式还可以实现 CPU 使用率的动态调整。


[root@Docker ~]# docker run -itd --name bbb --cpu-shares 1024 centos:latest


image.png


3)限制 CPU 内核使用


在 Docker 中可以使用 --cpuset-cpus 选项来使某些程序独享 CPU 内核,以便提高其处理速度。真实的服务器 CPU 有多个内核;而虚拟机里,默认只有一个,内核0。


[root@Docker ~]# cat /proc/cpuinfo 
processor : 0         #这行就是CPU的编号的意思,如果有多个CPU ,会有多个这个段
vendor_id : GenuineIntel
cpu family  : 6
model   : 158
model name  : Intel(R) Core(TM) i5-9300HF CPU @ 2.40GHz
stepping  : 13
microcode : 0xc6
cpu MHz   : 2400.002
cache size  : 8192 KB
---------------------------------


创建一个新的容器 ccc,使该容器上的进程,只可以在内核 0 上运行:


[root@Docker ~]# docker run -itd --name ccc --cpuset-cpus 0 centos:latest
[root@Docker ~]# docker ps | grep ccc
[root@Docker ~]# cat /sys/fs/cgroup/cpuset/docker/根据容器ID号来写/cpuset.cpus
0


image.png


2.对内存使用的限制


在 Docker 中可以通过 docker run -m 命令来限制容器内存使用量,当内存超过了限制的容量,Linux 内核将会尝试收回这些内存,如果仍旧没法控制使用内存在限制范围之内,进程就会被杀死。


创建一个新的容器 ddd ,内存限制为 512 MB:


[root@Docker ~]# docker run -itd -m 512MB --name ddd centos:latest
[root@Docker ~]# docker ps | grep ddd
[root@Docker ~]# cat /sys/fs/cgroup/memory/docker/根据容器ID号来写/memory.limit_in_bytes


image.png


3.对 blkio 的限制


如果在一台服务器上进行容器的混合部署,那么会存在同时几个程序写入磁盘数据的情况,这时可以通过--device-write-bps 选项来限制每秒写 io 次数来限制指定设备的写速度。相应的还有--device-read-bps 选项可以限制读取的速度,但这种方式只能限制设备,不能限制分区。


限制新建容器的 /dev/sda 的写入速度为 1MB:


[root@Docker ~]# docker run -itd --name eee --device-write-bps /dev/sda:1M centos:latest
[root@Docker ~]# docker ps | grep eee
[root@Docker ~]# cat/sys/fs/cgroup/blkio/docker/根据容器ID号来写/blkio.throttle.write_bps_device


image.png

相关文章
|
1月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
278 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
18天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
52 2
|
20天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
48 2
|
21天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
30 3
|
1月前
|
监控 虚拟化 Docker
Window系统安装Docker
这篇文章提供了在Windows系统上安装与配置Docker的详细指南,包括Docker Desktop的安装及通过Docker来运行容器化应用的步骤。
120 1
Window系统安装Docker
|
1月前
|
存储 物联网 数据安全/隐私保护
Docker安装Mosquitto
这篇文章详细介绍了如何在Docker中安装和配置Mosquitto消息代理服务,包括拉取镜像、创建容器以及配置持久化存储等步骤。
71 0
Docker安装Mosquitto
|
24天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
197 3
|
8天前
|
Docker 容器
【赵渝强老师】使用二进制包方式安装Docker
本文介绍了在企业生产环境中无法直接访问外网时,如何使用Docker官方提供的二进制包进行Docker的离线安装。文章详细列出了从安装wget、下载Docker安装包、解压、复制命令到启动Docker服务的具体步骤,并提供了相关命令和示例图片。最后,还介绍了如何设置Docker为开机自启模式。
|
8天前
|
缓存 Ubuntu Linux
如何安装Docker
如何安装Docker
67 0
|
1月前
|
数据可视化 数据挖掘 Docker
Docker Desktop 安装 ClickHouse 超级简单教程
Docker Desktop 安装 ClickHouse 超级简单教程
46 1