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

相关文章
|
2月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
7天前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
59 3
docker 安装 Postgres 17.6
|
5月前
|
存储 安全 C++
Odoo 安装方式选择:源码安装 vs Docker
Odoo部署常采用源码编译或Docker容器化,但分别面临依赖复杂、版本风险和服务化难题,以及镜像臃肿和扩展受限的问题。Websoft9提出混合方案,融合两者优势:通过智能环境适配、三阶段部署流程(环境预检、混合模式选择、持久化配置)及声明式YAML配置,实现高效、灵活的双模运行时。此方案显著降低依赖冲突解决时间(从83分钟至0),生产环境构建耗时缩短至8分钟,并达100% CVE漏洞修复率,适合ERP定制开发与规模化部署的企业需求。
|
3月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
392 4
|
2月前
|
Linux Docker Windows
windows docker安装报错适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
适用于 Linux 的 Windows 子系统需更新至最新版本(如 wsl.2.4.11.0.x64.msi)以解决 2025 年 Windows 更新后可能出现的兼容性问题。用户可通过运行 “wsl.exe --update” 或访问提供的链接下载升级包进行更新。
815 0
|
3月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
124 1
|
4月前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
307 5