docker 续 常用命令

ubuntu里的仓库文件使用不了的解决方法:

1.进入仓库文件的目录

cd /etc/apt/sources.list.d/

2.删除 archive开头的文件

sudo  rm  -rf  archive*

3.重新下载仓库文件

 sudo add-apt-repository    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/  $(lsb_release -cs)  stable"

4.安装docker

sudo apt-get install docker-ce docker-ce-cli containerd.io

apt

apt-get  软件管理的命令  =  centos里的yum


feng@sc:~$ cd /etc/apt

feng@sc:/etc/apt$ ls

apt.conf.d   keyrings       preferences.d.save  sources.list.d  trusted.gpg.d

auth.conf.d  preferences.d  sources.list        trusted.gpg

feng@sc:/etc/apt$


/etc/apt/sources.list.d  等同于   /etc/yum.repos.d    都是用来存放仓库文件

[root@docker ~]# docker exec -it sc-nginx-2  bash 进入一个容器内部

root@6f864a3ab3e3:/# exit

启动一个nginx容器,修改nginxd网站的首页

[root@docker ~]# docker  run   -d   -p 8080:80  --name  sc-caojie-1  nginx

6193c1726aefd5929d46da7bdf668d9ed7069d5587ccc289e81aae0ec0739224

将文件从容器里拷贝出来到宿主机

[root@docker ~]# docker cp sc-caojie-1:/usr/share/nginx/html/index.html   .

Successfully copied 2.56kB to /root/.

[root@docker ~]# ls

anaconda-ks.cfg  index.html  mysql-5-7-41.tar  nginx.tar

修改首页文件index.html

[root@docker ~]# vim index.html

拷贝宿主机的文件到容器里

[root@docker ~]# docker cp index.html  sc-caojie-1:/usr/share/nginx/html/index.html

Successfully copied 2.56kB to sc-caojie-1:/usr/share/nginx/html/index.html

1.docker logs  排错

只要重启docker服务,会导致所有正在运行的容器停止运行,进入exited状态

2.挂起虚拟机,关闭了真实笔记本电脑,第2天开机,恢复虚拟机到访问不了容器里的网站

       service  docker  restart

       docker start  sc-nginx-1

[root@docker ~]# docker stats  查看容器资源消耗

CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O        PIDS

6193c1726aef   sc-caojie-1   0.00%  2.43MiB / 3.682GiB  0.06%   9.02kB / 8.2kB   1.3MB / 22.5kB   3

6f864a3ab3e3   sc-nginx-2    0.00%   3.402MiB / 3.682GiB   0.09%  764B / 0B   3.44MB / 0B     3

[root@docker ~]# free -m  以MB为单位显示

              total        used        free      shared  buff/cache   available

Mem:         3770         365        2771          11         633        3178

Swap:          3967           0        3967

Mem 开头的行,显示的真实的内存的信息---》内存条的大小

shared 表示共享内存消耗的空间---》已经使用的

buffer: 数据  内存---》磁盘   

cache:  数据  磁盘 ---》内存

       buffer和cache 都是临时存放数据的地方,消耗的是内存的空间

available : 可以使用的空间,内核给后面的进程分配内存空间的时候,可以继续使用的内存空间

total = used + free + shared + buff/cache

available = free + buff/cache还没有使用完的或者释放了的空间

如果一个容器里的进程消耗的cpu或者内存超过限制 会被docker软件重启

当容器里进程运行达到限制时 容器里运行的进程会被kill掉 防止容器被kill掉

启动一个nginx容器,限制容器使用cpu资源 20%  内存只能使用200M

--cpu-shares  可以使用的cpu算力的份额

 --cpus  可以使用的cpu核心的数量

 --cpuset-cpus  指定在哪些cpu里运行

 -m 指定使用的内存的大小,默认是字节为单位

[root@docker ~]#  docker  run  -d  -p 8090:80  --name sc-pansl-1  --cpu-shares 200  --cpus 2 --cpuset-cpus 0,1 -m 200000000  nginx

daedbb9c7ce5d99ef5019d49ec8c8134fc51e4ef4009c48cd6faf0dbd0ff606d

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                                   NAMES

daedbb9c7ce5   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   0.0.0.0:8090->80/tcp, :::8090->80/tcp   sc-pansl-1

docker 和虚拟机的区别

       有共同点: 都是虚拟化技术

       区别:

              1.架构:隔离性

              2.资源消耗: cpu、内存、磁盘等

              3.启动速度

              4.扩展性

        5.层次:虚拟机多封装一层hy

docker缺点: app隔离没有虚拟机彻底 安全性低

docker优点: 启动速度快 资源消耗小 扩展方便

每个容器里都有一个微型的操作系统,但是操作系统里的内核是使用宿主机的内核

操作系统组成:

       1.内核: 内部最核心的软件

       2.库 应用程序 .shell 系统调用

docker 2个非常重要的技术是linux内核提供的:

       namespace 命名空间: 将容器隔离 资源隔离    是内核对进程进行隔离

                    有多少种命名空间: network、pid、IPC、user、mount、UTS 6种

       cgroup: control group--》控制资源组合,限制容器可以使用多少cpu、内存、磁盘IO、网络IO等资源的   限制进程可以使用的cpu、内存、磁盘IO、网络IO资源

四种网络设置

[root@docker sanchuang]# docker network ls

NETWORK ID     NAME      DRIVER    SCOPE

e250fbc2b802   bridge    bridge    local

2d7e5f5faf77   host      host      local

81b54e63a61c   none      null      local

bridge 是默认的容器网络类型,可以和宿主机的docker0接口相连,通信

docker network create  sc 创建一个sc的网络,类型为桥接bridge

121626761e6ff8ac52d4e47d3a1785c44c1d8a273715aa74586777b27a36ee72

[root@docker sanchuang]# docker network ls

NETWORK ID     NAME      DRIVER    SCOPE

e250fbc2b802   bridge    bridge    local

2d7e5f5faf77   host      host      local

81b54e63a61c   none      null      local

121626761e6f   sc        bridge    local

新建一个容器使用sc网络

[root@docker]# docker  run  -d  -p 8082:80  --name fanzl-1  --network sc  nginx

009a177040011bbe8a21ecdf7a1dfe0f2a43eaefd796027ae1f37fadd56e2600

[root@docker sanchuang]# docker  inspect fanzl-1

                    "Gateway": "172.18.0.1",

                    "IPAddress": "172.18.0.2",

                    "DriverOpts": null,

                    "DNSNames": [

                        "fanzl-1",

总结:

       1.网络类型:  bridge(默认)、host(网络性能好)、null(禁用所有网络)、container(很多容器共享一个ip)、overlay(连接不同机器上的docker容器 允许不同机器上容器相互通信 跨主机通信)

       2.docker底层技术

                     namespace: 隔离

                     cgroup:  限制资源(cpu、内存、磁盘IO、网络IO)

                                   概念: 子系统---》进程

1.创建一个bridge类型的网络叫changsha

docker network create changsha
2.启动一个mysql容器,限制它只能使用50%的cpu,能使用2G的内存,使用changsha网络,宿主机端口是3309  容器是3306 ,名字可以自己定义,密码自己定义

docker run -d -p 3309:3306 --name cs --network changsha --cpu-shares 500 --cpus 2 --cpuset-cpus 0,1 -m 200000000 -e MYSQL_ROOT_PASSWORD='sc@123456' mysql:5.7.41
3.去了解cgroup的v1版本和v2版本的差异

Cgroups v1 在 Linux 内核 2.6.24 版本中引入,其设计目的是为了提供对系统资源的分层次管理。在 v1 中,各种资源控制器(如 CPU、memory、blkio 等)被单独管理,每个控制器都有自己的层级树,这意味着对于每个资源类型,你都需要分别设置和管理 cgroup。例如,你可以有一个用于限制 CPU 使用率的 cgroup,另一个用于限制内存使用的 cgroup。

Cgroups v1 的主要特点包括:

  • 多个层级树:每个资源控制器有自己的层级树。
  • 独立管理:每个控制器必须单独配置,不能全局统一设置。
  • 复杂性:管理多个控制器可能会导致配置复杂度增加。

Cgroups v2

Cgroups v2 在 Linux 内核 4.5 版本中首次出现,旨在解决 v1 的一些限制,提供一个统一的层次结构来管理所有资源控制器。在 v2 中,所有资源控制器都被整合进一个单一的层级树,这简化了资源管理和隔离的过程。

Cgroups v2 的主要改进包括:

单一的层级树:所有资源控制器共享同一棵树,简化了配置和管理。

统一的接口:提供了一个统一的接口来管理所有的资源控制器,减少了复杂性。

  • 扩展性:支持更多的资源控制器和特性,如命名空间、设备访问控制等。
  • 默认启用:在较新的 Linux 发行版中,Cgroups v2 通常是默认启用的。
    5.如何容器启动不成功,如何去排查问题出在哪里?
  • 检查 Docker 日志 docker logs
  • 看容器状态 docker inspect
  • 检查镜像是否正确 docke images
  • 看系统资源是否足够供容器使用
  • 尝试重启
  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值