Docker离线安装与基本使用

it2023-06-25  76

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)多任务按比例分享 CPU3)限制 CPU 内核使用 2.对内存使用的限制3.对 blkio 的限制

一、Docker概述

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

1.Docker和虚拟机的区别

特性Docker容器虚拟机启动速度秒级分钟级计算能力损耗几乎无损耗50%左右性能接近原生弱于系统支持量(单机)上千个几十个隔离性资源限制完全隔离

2.Docker的使用场合

打包应用程序简化部署 可脱离底层硬件任意迁移——如:服务器从腾讯云迁移到阿里云

3.Docker三大核心

镜像(Image)

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

容器(Container)

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

仓库(Repository)

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

二、安装 Docker

主机名操作系统IP地址DockerCentOS7192.168.1.1 实验所需软件包从这个链接下载:https://pan.baidu.com/s/1v2Y3gyq2AgRRyJMlLGSOlA提取码:y7xd [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

查看 Docker 版本

[root@localhost ~]# docker version

三、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

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:镜像大小。

还可以根据镜像的唯一标识 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

3)删除镜像

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

有两种方式:

根据镜像标签 [root@Docker ~]# docker rmi centos7:centos7 Untagged: centos7:centos7 [root@Docker ~]# docker images

根据镜像 ID [root@Docker ~]# docker rmi -f 75835a67d134 [root@Docker ~]# docker images

再重新加载一下镜像

[root@Docker ~]# docker load < centos7

4)存出镜像

当需要把镜像进行迁移的时候,需要保存为本地文件,这样过程叫存出镜像。 [root@Docker ~]# docker save -o test centos:latest

5)载入镜像

将文件导出,成为镜像,这一过程叫做载入镜像。 [root@Docker ~]# docker rmi centos:latest [root@Docker ~]# docker load < test [root@Docker ~]# docker images

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

启用容器:

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

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

命令格式:docker run [选项] 镜像 运行的程序 [root@Docker ~]# docker run --name zhangsan centos:latest /bin/bash -c ls

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

[root@Docker ~]# docker ps -a

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

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

2.容器的运行与停止

关闭容器:docker stop 容器名称或 ID 简写删除容器:docker rm 容器名称或 ID 简写 [root@localhost ~]# docker stop lisi #关闭容器 [root@localhost ~]# docker rm lisi #删除容器

容器的暂停运行

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

3.进入容器

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

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

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

命令格式:cat 文件名 | docker import - 生成的镜像名称:标签 [root@Docker ~]# cat centos-test | docker import - centos:test [root@Docker ~]# docker images

五、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

2)多任务按比例分享 CPU

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

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

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

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

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

最新回复(0)