docker阶段01 容器化概述, Docker介绍, 安装, 优化配置, 镜像特性和操作, 容器操作, 查看日志

1.容器化概述

容器: 泛指可以存放其他物品的一种容纳工具,部分和完全封闭的
单台服务器运行多个环境程序

假如让不同的环境程序运行在不同环境中 容器中

怎么实现:
1.通过虚拟化实现,如图,通过kvm相当于创建了多个独立的操作系统

2.通过容器实现,依赖于宿主机操作系统,更省资源。如图

容器实现名称空间隔离    NameSpace    资源隔离

六个资源隔离:
PID            进程编号            2.6.24+(内核版本要求)
NET            网络设备、网络协议栈 端口等    2.26.29+(内核版本要求)
IPC            信息量 消息队列 共享内存    2.6.19+(内核版本要求)
Mount        文件系统 挂载点           2.4.19+(内核版本要求)
UTS            主机名和主机域               2.6.19+
USER        操作进程的用户和用户组        3.8+

#创建docker虚拟环境
>2G        这里给4G操作速度快些
#centos7操作系统内核都是3.10以上
[root@docker01 ~]# uname -r
3.10.0-957.el7.x86_64

2.容器的历史

一个容器包含了完整的运行环境: 除了应用程序本身以外  将所需的依赖  库  二进制文件  配置文件  都统一打包到一个叫容器镜像的包中

容器的优点
    敏捷环境    创建速度快
    提高生产力
    运行环境可移植
    标准化
    版本控制
    安全

容器的缺点
    复杂性增加    平台工具管理    k8s/Mesos
    
容器化和虚拟化区别
    容器相对虚拟机来说更轻量化
    两个都是构建一套能够不依赖于具体环境而运行的应用程序
    虚拟化需要 hypervisor 作为虚拟机监视器  中间层  虚拟机启动都是hypervisor 进行分配资源
    容器不需要hypervisor

3.Docker介绍

Docker是基于容器技术的轻量化虚拟化的解决方案
容器引擎
基于go语言实现的
Docker引入了一整套容器管理的生态系统    包括分层的镜像模型    容器的注册库    API
C/S架构        容器    镜像
容器是隔离的,但是共享操作系统和适当的库和二进制文件    bins    libs

4.Docker安装部署

企业版EE    支持12个月的技术支持        社区版CE    只支持4个月的技术支持
2017年第一季度    使用YY.MM-xx格式
Docker-1.13        老格式


#环境准备,创建docker虚拟环境
4G内存    >50G硬盘

[root@docker01 ~]# iptables-save
[root@docker01 ~]# getenforce
Disabled
[root@docker01 ~]# date
Sat Jun 15 06:47:02 CST 2024
[root@docker01 ~]# uname -r
3.10.0-957.el7.x86_64
[root@docker01 ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
#确保有源,能上网
[root@docker01 ~]# ll /etc/yum.repos.d
total 8
-rw-r--r--. 1 root root 2523 Jun 14  2023 CentOS-Base.repo
-rw-r--r--. 1 root root  664 Jun 14  2023 epel.repo

#查看系统中默认docker软件
[root@docker01 ~]# yum list docker --show-duplicates
#1.13.1,是2017年的老版本(太老了)

#使用存储库安装
在新主机首次安装Docker Engine之前,需要设置Docker存储库。之后,可以从存储库安装和更新Docker。
设置存储库
安装yum-util软件包(提供yum-config-manager 使用程序)并设置稳定的存储库。

[root@docker01 ~]# yum install -y yum-utils
#设置存储库(官网这个测试无法访问,可以用下面国内存储库)
[root@docker01 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#国内存储库(阿里云库)
[root@docker01 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#执行完,查看yum是否有新的docker包
[root@docker01 ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
docker-ce-stable                                                                  | 3.5 kB  00:00:00 
(1/2): docker-ce-stable/7/x86_64/updateinfo                                       |   55 B  00:00:00 
(2/2): docker-ce-stable/7/x86_64/primary_db                                       | 152 kB  00:00:00
base/7/x86_64                          CentOS-7 - Base - mirrors.aliyun.com                        10,072
docker-ce-stable/7/x86_64              Docker CE Stable - x86_64                                      337
epel/x86_64                            Extra Packages for Enterprise Linux 7 - x86_64              13,791
extras/7/x86_64                        CentOS-7 - Extras - mirrors.aliyun.com                         526
updates/7/x86_64                       CentOS-7 - Updates - mirrors.aliyun.com                      6,149
#查看源里docker版本,这个名称是docker-ce
[root@docker01 ~]# yum list docker-ce --show-duplicates

#安装最新版本
[root@docker01 ~]# yum install -y docker-ce
#也可以提前下载包安装
[root@docker01 ~]# rz
docker-ce.tar.gz
[root@docker01 ~]# tar xf docker-ce.tar.gz
[root@docker01 ~]# yum localinstall -y opt/*.rpm

#启动docker,并加入开机自启动
[root@docker01 ~]# systemctl start docker.service
[root@docker01 ~]# systemctl enable docker.service

[root@docker01 ~]# mkdir -p /data/docker

#配置docker (编辑时把注释删掉)
[root@docker01 ~]# vim /etc/docker/daemon.json
{
"data-root": "/data/docker",        #指定工作目录(graph已废弃)
"storage-driver": "overlay2",    #存储驱动
"insecure-registries": ["registry.access.redhat.com","quay.io"], #仓库(这里是默认,可以加私有仓库)
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"], #镜像加速源(阿里云上给的加速地址)
"bip": "172.0.181.1/24", #docker容器IP地址(格式:172主机外网ip,0.181内网后两位,最后一位必须从1开始)
"exec-opts": ["native.cgroupdriver=systemd"], #本地的驱动
"live-restore": true #docker服务以外重启时容器自启动(故障自动恢复)
}

#重启,加载配置
[root@docker01 ~]# systemctl restart docker.service

#检查docker版本相关信息
[root@docker01 ~]# docker version
Client: Docker Engine - Community
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:32:04 2024
 OS/Arch:           linux/amd64
...

#查看docker信息,如果有返回,说明docker没问题
[root@docker01 ~]# docker info
#默认启动docker会启动iptables,这个iptable做了一些规则,不用管
[root@docker01 ~]# iptables-save

#查看docker命令
[root@docker01 ~]# docker image
#查看docker镜像(两条命令都行)
[root@docker01 ~]# docker image ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@docker01 ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

#显示所有的容器
[root@docker01 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

#启动第一个容器
[root@docker01 ~]# docker run hello-world    #会从docker官方仓库下载
...
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 #docker客户端联系docker守护进程
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 #docker守护进程从docker中心拉取镜像
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 #docker守护进程从镜像创建容器,可执行的程序
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
 #docker守护进程将输出流发送docker客户端,你的终端

#查看镜像是否被下载
[root@docker01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   2 years ago   13.3kB
#查看运行的容器(这里容器已经死了)
[root@docker01 ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS     NAMES
3c66e988f468   hello-world   "/hello"   8 minutes ago   Exited (0) 8 minutes ago             recursing_sinoussi

Docker 优化配置

#登录阿里云网站,搜容器镜像服务,在左侧镜像工具下镜像加速器,会有加速器地址(每个人都不一样)

[root@ubuntu2004 ~]#vim /etc/docker/daemon.json    #只要配一个就够了
{
"registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://xxxx.mirror.aliyuncs.com"    #阿里云上给的加速地址
 ]
}
[root@ubuntu ~]#systemctl restart docker
#查看是否生效
[root@ubuntu ~]#docker info
#镜像,启动容器都放在这个目录下(想彻底清理容器数据,把这个目录删了)(建议挂个高速大磁盘,提升docker运行速度)
Docker Root Dir: /var/lib/docker    

#追加公司内部是有仓库路径harbor.wang.org(信任内部http协议)
"insecure-registries": ["harbor.wang.org"],
"exec-opts": ["native.cgroupdriver=systemd"],    #k8s需要这个cgroup,老版本这个要改
"graph": "/data/docker",  #指定docker数据(镜像容器)目录(老数据可以拷过来);新版24.0.0不支持,实现(改服务配置文件):ExecStart=/usr/bin/dockerd --data-root=/data/docker
"max-concurrent-downloads": 10,        #同时下载的任务数量
"max-concurrent-uploads": 5,        #同时上传
#限制docker日志大小
"log-opts": {
   "max-size": "300m",   #指定容器日志文件的最大值
   "max-file": "2"       #指定容器日志文件的个数,循环写入日志文件,即一个日志满,会写入第二个文件
 },
 "live-restore": true,   #docker.service重启,不影响容器的运行(默认false)
 #配置代理
 "proxies": {           #代理 https://docs.docker.com/network/proxy/
    ...
 }

 

Docker镜像制作和管理

container --docker export  --> file ---docker import --> image

1 手动制作镜像 docker commit (了解)
官方image --> container -- exec 修改成我们需要样子 容器  --- docker commit  > image

2 自动制作镜像 docker build (生产一般用这种方式)
制作一个生成镜像脚本文件(自已格式)dockerfile
基于这个文件,docker build 自动构建镜像
#例:
#下个ubuntu镜像,然后安装nginx
docker commit mynginx mynginx:1.24
#做出的镜像比官方的容量大一倍(后面可以优化)

5.Docker镜像介绍

镜像        images
容器        container
仓库        repository    repositories    registry

镜像的结构    (查看镜像时名称显示格式)
注册表/仓库名称/镜像名称:版本号    #官方默认,可以不写注册表/仓库名称。非官方的要写
docker.io/library/hello-word:latest    #官方默认的情况真正的显示格式
${registry_name}/${repository_name}/${image_name}:${tag_name}

镜像仓库
https://hub.docker.com/  == https://dockerhub.com/    #会跳转

dockerhub    是一个提供docker镜像的仓库    提供了针对每个镜像的解决方案

#登录docker.io(官方镜像仓库),进去拉取镜像(即使不登录,拉取的也是官方镜像,如果是私有仓库,一定要登录)
[root@docker01 ~]# docker login docker.io
#只有登录成功,才能在这个仓库传镜像,下载镜像

#退出登录
[root@docker01 ~]# docker logout

#登录后,这里会存放用户登录信息
[root@docker01 ~]# cat /root/.docker/config.json

#搜寻镜像
[root@docker01 ~]# docker search alpine
NAME                               DESCRIPTION                                     STARS     OFFICIAL
alpine                             A minimal Docker image based on Alpine Linux…   10883     [OK]
alpinelinux/docker-cli             Simple and lightweight Alpine Linux image wi…   11        
alpinelinux/alpine-gitlab-ci       Build Alpine Linux packages with Gitlab CI      3         
alpinelinux/gitlab-runner-helper   Helper image container gitlab-runner-helper …   7         
...
#下载镜像
[root@docker01 ~]# docker pull alpine:3.12.0    #指定版本,不加版本为最新版本
[root@docker01 ~]# docker pull alpine            #下载最新版本

[root@docker01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   2 years ago   13.3kB
alpine        3.12.0    a24bb4013296   4 years ago   5.57MB
#镜像上传dockhub自己的私有仓库前要打镜像(这里自定义镜像仓库名称,qls仓库名称也是用户名)
#给镜像打标签(命令中image可以省略)
[root@docker01 ~]# docker image tag a24bb4013296 docker.io/qls/alpine:v3.12.0
#注:打完tag,用查看所有镜像,会有2个镜像,实际是做了引用,删掉原镜像,有tag的镜像也能用

#查看镜像,因为docker.io是官方的,所以版本显示里省略了
[root@docker01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   2 years ago   13.3kB
alpine        3.12.0    a24bb4013296   4 years ago   5.57MB
qls/alpine    v3.12.0   a24bb4013296   4 years ago   5.57MB

#查看资源命令,看镜像或容器都行
[root@ubuntu ~]#docker inspect a57d33a5c507
#推送镜像到自己的官方仓库 [root@docker01 ~]# docker push docker.io/qls/alpine:v3.12.0 #这里可以省略docker.io #从私有仓库下载镜像 [root@docker01 ~]# docker pull docker.io/qls/alpine:v3.10.5 #删除镜像(也可以通过镜像ID) [root@docker01 ~]# docker rmi alpine:3.12.0 [root@docker01 ~]# docker rmi 5a01c029c96b #强制删除(如果该镜像对应容器在运行,无法删除,可以强制删除) [root@docker01 ~]# docker rmi -f hello-world:latest

清理dangling状态的镜像

#dangling images表示TAG为<none>的镜像
[root@ubuntu2204 ~]#docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
alpine       latest   9ed4aefc74f6   3 weeks ago     7.05MB
<none>       <none>   0584b370e957   11 months ago   141MB

#清除dangling
[root@ubuntu1804 ~]#docker image prune

#清除dangling和不再使用的镜像
[root@ubuntu1804 ~]#docker image prune -a -f

 

7.Docker的镜像特性

Docker镜像位于bootfs(file system)或者rootfs之上    文件系统

每层镜像的下面一层镜像称为其父镜像 (父子关系)

第一层镜像都是Base image

容器在最顶层    容器是有状态的  running(UP)  exited  

其下的镜像的所有层都是readonly

Docker将readonly的fs(file system)层称之为image

8.Docker容器的基础操作

容器持续运行条件:
指定一个前台持续运行的进程作为容器默认命令

启动容器的流程

#查看本地容器的列表
[root@docker01 ~]# docker ps -all
[root@docker01 ~]# docker ps -a
-q 显示容器id
[root@ubuntu1804 ~]#docker ps -a -q
#启动容器 (运行镜像) docker run 命令格式 Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 选项: -i #表示启动一个可交互式的容器,并能持续打开进行输入(和-t一起使用) -t #表示使用终端关联到容器的输入输出(和-i一起使用) -d #将容器放入到后台运行 --rm #退出后即删除容器 --name #给容器起个名字
#如果docker stop停止容器后重启宿主机,always选项以外的其它选项的容器都不会随着宿主机启动而自动启动
--restart policy #可以指定四种不同的policy (no,on-failur[:max-retries],always,unless-stopped)
--ulimit ulimit #指定ulimit限制配置,比如: --ulimit nofile=10240:10240
COMMAND    #在容器里执行的命令
#例:开机自启
[root@ubuntu1804 ~]#docker run -d --name nginx --restart=always nginx:1.24
#启动一个容器(如果本地没有,先从官方下载,再启动。本地有就直接启动)
[root@docker01 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    feb5d9fea6a5   2 years ago   13.3kB
qls/alpine    v3.12.0   a24bb4013296   4 years ago   5.57MB
#启动容器并进入容器
#注意最小系统alpine里,只认识/bin/sh,没有/bin/bash
[root@docker01 ~]# docker run -ti docker.io/qls/alpine:v3.12.0 /bin/sh
#省略docker.io也可以,因为是默认路径
[root@docker01 ~]# docker run -ti qls/alpine:v3.12.0 /bin/sh
#退出容器,因为交互式容器会关闭
/ # exit
注意: 容器启动后,如果容器内没有前台运行的进程,将自动退出停止
从容器内退出,并停止容器
exit
从容器内退出,且容器不停止
同时按三个键,ctrl+p+q
#给容器起名字 [root@docker01 ~]# docker run -ti --name qls qls/alpine:v3.12.0 /bin/sh #放入后台运行,起个名称test [root@docker01 ~]# docker run -ti -d --name test qls/alpine:v3.12.0 /bin/sh 759aafa1b3bfe3435921d2fdbcd3777a42bcd639505fc7aa9a8d8939218d4e55 #创建一次性容器,退出后容器就没了。 docker ps -a查不到该镜像了 [root@docker01 ~]# docker run --rm -ti qls/alpine:v3.12.0 /bin/sh #启动一个非交互式后台运行容器,必须给命令,比如/bin/sh,不给控制不了(命令执行完容器就会结束) [root@docker01 ~]# docker run -d --name qiudao qls/alpine:v3.12.0 /bin/sleep 300 de478c960115b0581d6f6b4af1ebdaafcc9a0c58f2eb5a3d9dcebd23b8d621a6 [root@docker01 ~]# docker ps -a|grep qiudao de478c960115 qls/alpine:v3.12.0 "/bin/sh" 2 minutes ago Exited (0) 2 minutes ago qiudao #容器运行的sleep任务能在宿主机搜到,但是不影响其他人 [root@docker01 ~]# ps aux|grep sleep #进入容器 (使用exec命令) [root@docker01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 759aafa1b3bf qls/alpine:v3.12.0 "/bin/sh" 51 minutes ago Up 51 minutes test #输入容器id或者name都可以 (必须给命令,前台能够执行,才能挂住。否则进入不了) [root@docker01 ~]# docker exec -it 759aafa1b3bf /bin/sh [root@docker01 ~]# docker exec -ti test /bin/sh
#进入容器,执行命令,exit退出但容器不停止
[root@ubuntu1804 ~]#docker exec -it mynginx bash #有bash用bash,没有用sh
#停止容器    (输入容器id或者name都可以)
[root@docker01 ~]# docker stop test
test

#启动容器
[root@docker01 ~]# docker start test
test

#重启容器
[root@docker01 ~]# docker restart test

#删除容器(不在运行的)
[root@docker01 ~]# docker rm 0554e547cdcc
#强制删除在运行中的容器
[root@docker01 ~]# docker rm -f test
#删除所有容器
[root@ubuntu1804 ~]#docker rm -f `docker ps -a -q`
[root@ubuntu1804 ~]#docker ps -a -q | xargs docker rm -f
#批量删除已经死掉的容器
[root@docker01 ~]# for i in $(docker ps -a|grep -i exited|awk '{print $1}');do docker rm -f $i;done

#获取所有容器id
[root@docker01 ~]# docker ps -a -q
de478c960115
79f0afb35a0c
a794ce9de251
3d3b6b604d4e
3c66e988f468
#删除所有容器
[root@docker01 ~]# docker rm -f $(docker ps -a -q)

#可以在xshell里,查看下快速命令里设置批量删除快捷按钮,就不用记了

#修改/提交容器
#创建容器
[root@docker01 ~]# docker run -ti -d --name qls01 qls/alpine:v3.12.0 /bin/sh
a4704b2a191f3796f75ddfad4d041738ec9b1581eeb7fc97e468a6bdef3cb85e
#进入容器
[root@docker01 ~]# docker exec -ti qls01 /bin/sh
/ # echo "test" >> test.txt
/ # exit

#提交镜像
#速度快,添加增加的内容,底层有,不需要重新做镜像(不用管镜像多大,上传镜像只上传追加部分)
[root@docker01 ~]# docker commit -p qls01 docker.io/qls123/alpine:v3.12.0_create_test.txt
sha256:5a01c029c96b41a5718efaaca89aef3b8cc2ad10e4d991e75b062f2a2694797c
[root@docker01 ~]# docker images
REPOSITORY      TAG                       IMAGE ID       CREATED         SIZE
qls123/alpine   v3.12.0_create_test.txt   5a01c029c96b   6 seconds ago   5.57MB
qls/alpine      v3.12.0                   a24bb4013296   4 years ago     5.57MB

#运行一次性镜像,看里面内容
[root@docker01 ~]# docker run --rm docker.io/qls123/alpine:v3.12.0_create_test.txt /bin/cat test.txt
test

#导入导出镜像

#删除镜像
[root@docker01 ~]# docker rmi 5a01c029c96b

#导出镜像
[root@docker01 ~]# docker save a24bb4013296 > alpine_v3.12.0.tar  #通过id导入会没有版本和名称
#通过名称和版本导出,之后导入会有名称版本,这里为一次性导入多个
[root@ubuntu1804 ~]#docker save mysql:5.7.30 alpine:3.11.3 > /data/myimages.tar
#将一台主机的所有镜像传到另一台主机
[root@ubuntu1804 ~]#docker save `docker images | awk 'NR!=1{print $1":"$2}'` -o backup.tar
[root@centos8 ~]#docker image save `docker image ls --format "{{.Repository}}:{{.Tag}}"` -o all.tar
#导入镜像 [root@docker01 ~]# docker load < alpine_v3.12.0.tar #或者 [root@docker01 ~]# docker load -i alpine_v3.12.0.tar 50644c29ef5a: Loading layer 5.845MB/5.845MB Loaded image ID: sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e #导入后不认识版本和注册表信息 [root@docker01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> a24bb4013296 4 years ago 5.57MB #打个标签 [root@docker01 ~]# docker tag a24bb4013296 docker.io/qls123/alpine:v3.12.0 [root@docker01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE qls123/alpine v3.12.0 a24bb4013296 4 years ago 5.57MB #查看容器的日志 [root@docker01 ~]# docker run -ti -d --name qls01 qls123/alpine:v3.12.0 /bin/sh c703ff2732f35c7ac01b443f17c6896d3fbabf063dba10505b8dca2d390194c7 [root@docker01 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c703ff2732f3 qls123/alpine:v3.12.0 "/bin/sh" 29 seconds ago Up 28 seconds qls01

docker logs 可以查看容器中运行的进程在控制台的标准输出和标准错误,一般对应是日志信息 docker
日志是存放在宿主机的 /var/lib/docker/containers/<container_id>/<container_id>-json.log文件中
docker logs [OPTIONS] CONTAINER
#查看日志
[root@docker01 ~]# docker logs c703ff2732f3
#实时查看日志
[root@docker01 ~]# docker logs -f c703ff2732f3

日志是存放在宿主机的 /var/lib/docker/containers//-json.log文件中 
docker logs [OPTIONS] CONTAINER

 

查看容器内的进程

docker top CONTAINER [ps OPTIONS]

[root@ubuntu1804 ~]#docker top db144f19
UID       PID   PPID C   STIME TTY   TIME     CMD
root      9821  9797  3   22:02 ?     00:00:00 httpd -DFOREGROUND
daemon    9872  9821  0   22:02 ?     00:00:00 httpd -DFOREGROUND
daemon    9873  9821  0   22:02 ?     00:00:00 httpd -DFOREGROUND
daemon    9874  9821  0   22:02 ?     00:00:00 httpd -DFOREGROUND

查看容器资源使用情况

docker stats [OPTIONS] [CONTAINER...]

[root@ubuntu1804 ~]#docker stats 251c7c7cf2aa
CONTAINER ID NAME CPU % MEM USAGE / LIMIT     MEM % NET I/O   BLOCK I/O PIDS
251c7c7cf2aa busy_l0.00%  3.742MiB / 1.924GiB   0.19%  1.29kB / 0B0B / 8.19kB 2

#查看所有容器
[root@ubuntu1804 ~]#docker stats
CONTAINER ID NAME   CPU %   MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O     PIDS
5e470e7970f6 suspi  0.00%   3.992MiB / 1.924Gi0.20% 656B / 0B9.2MB / 8.19kB    2
829bcebbc9f6 elast  0.58%   1.24GiB / 1.924GiB64.43%2.97kB / 512kB / 729kB    47

查看容器/镜像的详细信息

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
Options:
-f, --format string   Format the output using the given Go template
-s, --size           Display total file sizes if the type is container

[root@ubuntu1804 ~]#docker inspect 9997
...

#查看容器IP
[root@ubuntu2204 ~]#docker inspect --format "{{.NetworkSettings.Networks.bridge.IPAddress}}" elasticsearch
172.17.0.4

 

utunbu安装docker

#根据清华源安装 https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
#更新
[root@ubuntu ~]#apt-get update
[root@ubuntu ~]#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
[root@ubuntu ~]#sudo chmod a+r /etc/apt/keyrings/docker.gpg
#更改仓库配置
[root@ubuntu ~]#echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

#安装
[root@ubuntu ~]#apt-get update
[root@ubuntu ~]#apt-get install docker-ce docker-ce-cli
#指定版本安装
#[root@ubuntu2004 ~]#apt install docker-ce=5:20.10.10~3-0~ubuntu-focal docker-ce-cli=5:20.10.10~3-0~ubuntu-focal

红帽(centos8)安装的docker实际上是podman

红帽podman没有docker service服务,直接命令就能执行(更简单, 但不能远程控制)

posted @ 2024-06-16 20:02  战斗小人  阅读(71)  评论(0编辑  收藏  举报