1.Docker基础

文章目录

    • 1.docker架构
      • [1.1 Docker Engine 为什么要设计成客户端 / 服务器(C/S)架构?](#1.1 Docker Engine 为什么要设计成客户端 / 服务器(C/S)架构?)
      • [1.2 容器到底是什么](#1.2 容器到底是什么)
      • [1.3 docker与虚拟机的区别是什么](#1.3 docker与虚拟机的区别是什么)
      • [1.4 隔离是怎么实现的](#1.4 隔离是怎么实现的)
    • 2.docker安装
    • 3.docker镜像
    • 4.docker容器

1.docker架构

1.1 Docker Engine 为什么要设计成客户端 / 服务器(C/S)架构?

  • CS架构可以解耦,让升级、维护都更加简单

1.2 容器到底是什么

  • 容器就是操作系统里一个特殊的"沙盒"环境,里面运行的进程只能看到受限的信息,与外部系统实现了隔离

为什么要隔离

  • 容器隔离的目的是为了系统安全,限制了进程能够访问的各种资源

1.3 docker与虚拟机的区别是什么

实现方式 优势 劣势3
虚拟机 虚拟化硬件 隔离程度非常高 资源消耗大,启动慢
容器 直接利用下层的硬件和操作系统 资源利用率高运行速度快 隔离程度较低

1.4 隔离是怎么实现的

Linux 操作系统内核之中三项资源隔离技术

namespace cgroup(Linux Control Group) chroot
2002 年 Linux 2.4.19 2008 年从 Linux 2.6.24,cgroup技术最早由Google实现,被用于公司内部的Borg系统,也就是Kubernetes的前身,后来才被集成进Linux内核。 1979 年的 UNIX V7,目前的容器基本不再使用过于古老的 chroot 了,而是改用 pivot _ root。
它可以创建出独立的文件系统、主机名、进程号、网络等资源空间(能看那些进程) 对进程的 CPU、内存等资源的优先级和配额限制(能用那些资源) 更改进程的根目录,也就是限制访问文件系统(能看那些文件)
相当于给进程盖了一间小板房 给进程的小板房加了一个天花板 相当于给进程的小板房铺上了地砖

2.docker安装

1.安装Docker Engine

shell 复制代码
sudo apt install -y docker.io
sudo service docker start         #启动docker服务
sudo usermod -aG docker ${USER}   #当前用户加入docker组
docker version
docker info             # 会显示当前 Docker 系统相关的信息
docker run hello-world
docker pull busybox
docker run busybox echo hello world

2.配置docker加速器

shell 复制代码
sudo vim /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker

daemon.json

json 复制代码
{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
[

3.docker的基本目录

  • /etc/docker/ docker的认证目录

  • /var/lib/docker/ docker的应用目录

3.docker镜像

  • 拉取镜像

    shell 复制代码
    $ docker pull unbuntu
  • 列举出所有镜像

    shell 复制代码
    $ docker images -a
  • 删除未标记或用过的镜像

    shell 复制代码
    $ docker rmi mydjango:1.0 mydjango:2.0
  • 移除所有未被使用的镜像

    shell 复制代码
    $docker image prune -a
  • 使用dockerfile构建镜像,docker build + 目录,.代表当前目录,-t表示加标签

    shell 复制代码
    $ docker build -t mydjango:2.0
  • 镜像加标签: docker tag 镜像标签 镜像标签名

    shell 复制代码
    $ docker tag mydjango:1.0 django

4.docker容器

应用的容器化:就是指应用程序不再直接和操作系统打交道,而是封装成镜像,再交给容器环境去运行

  • 创建并运行容器

    shell 复制代码
    $ docker run --name mydjango_1 -it -p 8080:80 mydjango:1.0 #创建容器并进入容器
    $ docker run -it ubuntu /bin/bash
    参数名 含义
    -i 以交互模式运行容器
    -t 为容器重新分配一个伪输入终端
    -p 端口隐射,宿主机在前,容器在后
    -d 后台运行容器,并返回容器ID
    -v 目录挂载
    --entrypoint 指定进入点
    --restart=always 服务重启
  • 启动/停止/重启/容器

    shell 复制代码
    $ docker start mydjango_1
    $ docker stop mydjango_1
    $ docker restart mydjano_1
  • 删除容器

    这个命令与 docker rmi 非常像,区别在于它没有后面的字母"i"

    shell 复制代码
    $ docker rm my_django1 
    $ docker rm -f mydjango_1 # 强制删除一个正在运行的容器
    $ docker container prune # 删除已停止运行的所有容器
  • 查看正在运行中的容器

    shell 复制代码
    $ docker ps -a # -a 包括停止运行的容器
  • 进入运行的容器

    shell 复制代码
    $ docker exec -it mydjango_1 /bin/bash
  • 查看容器日志

    shell 复制代码
    $ docker logs web
  • 查看容器的信息

    shell 复制代码
    $ docker inspect web
    $ docker inspect web | grep 'IPAddress' # 利用inspect查看容器的ip地址
  • 查看容器内已修改文件

    shell 复制代码
    $ docker diff mydjango_1
相关推荐
chinesegf7 小时前
清理docker残留镜像images
运维·docker·容器
江湖有缘7 小时前
基于华为openEuler系统部署Gitblit服务器
运维·服务器·华为
EnglishJun8 小时前
Linux系统编程(二)---学习Linux系统函数
linux·运维·学习
小Pawn爷8 小时前
2.Docker的存储
运维·docker·容器
CaracalTiger8 小时前
OpenClaw-VSCode:在 VS Code 中通过 WebSocket 远程管理 OpenClaw 网关的完整方案
运维·ide·人工智能·vscode·websocket·开源·编辑器
qq_5470261798 小时前
LangChain 1.0 核心概念
运维·服务器·langchain
广州中轴线8 小时前
OpenStack on Kubernetes 生产部署实战(十七)
容器·kubernetes·openstack
生而为虫8 小时前
[Windows] 【浏览器自动化精灵V1.0】用Excel表格控制浏览器的自动化
运维·自动化
Fcy6488 小时前
Linux下 进程(二)(进程状态、僵尸进程和孤儿进程)
linux·运维·服务器·僵尸进程·孤儿进程·进程状态