Docker容器技术1——docker基本操作

Docker容器技术

随着云计算和微服务架构的普及,容器技术成为了软件开发、测试和部署过程中的重要组成部分。其中,Docker作为容器技术的代表之一,以其简便易用的特点赢得了广大开发者的青睐。

Docker允许开发者在轻量级、可移植的容器中打包和运行应用程序及其依赖项。Docker 通过容器化提供了一种标准化的方式来构建、部署和运行应用程序,使得应用程序可以在任何地方以一致的方式运行。

什么是Docker?

Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包进一个可移植的容器中,从而可以在任何安装了Docker的Linux或Windows机器上运行。Docker容器就像是一个轻量级的虚拟机,但它并不包含操作系统;相反,它依赖于主机操作系统的内核功能,如命名空间(Namespace)和控制组(Control Group,简称Cgroup),以实现资源隔离和环境的一致性。

复制代码
或者说,docker是管理容器的引擎,类似VMworkstation,为应用提供打包,部署的平台。

Docker 的核心概念

1. 容器
  • 容器 是一个轻量级、可移植的封装单元,包含了运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。
  • 容器与宿主机操作系统共享内核,因此容器相比于虚拟机更加轻量级,启动速度快。
2. 镜像
  • 镜像 是容器的只读模板,定义了容器的运行环境。
  • 镜像是通过 Dockerfile 构建的,Dockerfile 是一个文本文件,包含了创建镜像所需的所有指令。
  • Docker Hub 是一个公共的镜像仓库,用户可以从中下载和上传镜像。
3. Dockerfile
  • Dockerfile 是一个文本文件,包含了构建 Docker 镹像所需的一系列指令。
  • 常见的指令包括 FROM(指定基础镜像)、RUN(运行命令)、CMD(默认启动命令)、EXPOSE(暴露端口)等。
4. Docker Compose
  • Docker Compose 是一种工具,用于定义和运行多容器 Docker 应用。
  • 通过一个 YAML 文件来配置应用的服务、网络和卷,简化了多容器应用的部署和管理。

Docker 的优势

1. 轻量级
  • Docker 容器与宿主机共享内核,占用资源少,启动速度快。
2. 一致性
  • 应用程序在不同环境(开发、测试、生产)中运行时保持一致,因为容器环境是完全定义好的。
3. 隔离性
  • 每个容器都有自己独立的文件系统、网络空间等,彼此之间互不干扰,提高了安全性。
4. 可移植性
  • Docker 容器可以在任何安装了 Docker 引擎的系统上运行,包括不同操作系统和硬件平台。
5. 可复用性
  • Docker 镜像可以被多次使用,简化了环境配置过程。
6. 版本控制
  • Docker 镜像支持版本控制,可以方便地回滚到之前的版本。

docker在企业中的应用场景

Docker 的安装

SaaS-软件即服务

SaaS是软件即服务。英文全称是Software as a Server。

概念:即云端已经将操作系统到运行环境到软件的客户端都已经搭建好了,使用方不需要安装任何环境或软件,只需要访问客户端就能直接使用、

举例:类似于在我的毕业生管理系统上,我先自己利用云端搭建好平台,然后如果有学校想要使用的话直接分配给他们一些账号和密码,他们就可以直接访问我搭建好的系统进行操作了。


PaaS-平台即服务

PaaS是平台即服务,英文全称是Platform as a Server。

概念:利用云端搭建好操作系统或软件层面的如数据库、中间件等供用户使用,使得用户无需关注底层的基础设施和运行环境,只需要利用这些环境运行自己的应用和数据。

举例:就好比学校要使用我的就业管理系统进行管理,但是不想自己搭建机房和环境,所以就直接本地用少量的机器搭建客户端,将数据库、中间件或部分接口放在云端,请求时直接请求云端的接口和数据。


在企业中docker作为业务的最小载体而被广泛应用

通过docker企业可以更高效率的部署应用并且更具节省资源

docker与虚拟化的对比

如图所示,在虚拟化之中,每个虚拟机都需要一个独立的操作系统,这将会占用巨量的系统资源,并且降低运行密度。操作系统的重启以及部署也需要占用相当的时间。而docker容器在这方面就更具有优势。

部署docker

容器工作方法
1. Linux 系统上的安装
  1. 添加 Docker 仓库:
bash 复制代码
]# cd /etc/yum.repos.d
]# vim docker.repo
[docker]
name=docker-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/dockerce/linux/centos/7/x86_64/stable/
gpgcheck=0
[centos]
name=extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64
gpgcheck=0
  1. 安装 Docker-ce并启动服务:
bash 复制代码
#安装docker
]# yum install -y docker-ce
#编辑docker启动文件,设定其使用iptables的网络设定方式,默认使用nftables
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
--iptables=true
]# systemctl enable --now docker
]# docker info
  1. 激活内核网络选项 :
    在rhel7中,需要配置内核网络
bash 复制代码
]# vim /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
]# sysctl --system
]# systemctl restart docker
2. Windows 和 macOS 系统上的安装
  1. 安装 Docker Desktop :

Docker 的基本操作

1. 镜像管理
  1. 搜索镜像:

    sh 复制代码
    docker search ubuntu

    参数

    NAME 镜像名称

    DESCRIPTION 镜像说明

    STARS 点赞数量

    OFFICIAL 是否是官方的

  2. 拉取镜像:

    sh 复制代码
    docker pull ubuntu
  3. 列出本地镜像:

    sh 复制代码
    docker images
  4. 删除镜像:

    sh 复制代码
    docker rmi ubuntu
  5. 导出镜像

    bash 复制代码
    docker image save nginx:latest -o nginx-latest.tar.gz
    docker image save nginx:latest nginx:1.26-alpine -o nginx.tag.gz
2. 容器管理
  1. 启动容器:

    sh 复制代码
    docker run -it ubuntu bash

    -d #后台运行
    -i #交互式运行
    -t #打开一个终端
    --name #指定容器名称
    -p #端口映射 -p 80:8080 把容器8080端口映射到本机80端口
    --rm #容器停止自动删除容器
    --network #指定容器使用的网络

  2. 列出正在运行的容器:

    sh 复制代码
    docker ps
    docker ps -a
    docker inspect busybox

    分别是查看当前容器,查看所有容器,查看目标容器运行的详细信息

  3. 停止容器:

    sh 复制代码
    docker stop container_id_or_name
  4. 删除容器:

    sh 复制代码
    docker rm container_id_or_name
  5. 重新进入容器

    bash 复制代码
    docker attach centos7
  6. 在容器中执行命令

    bash 复制代码
    docker exec -it 【test】 ifconfig

    【test】是docker容器的名字

3. 网络管理
  1. 创建自定义网络:

    sh 复制代码
    docker network create my_network
  2. 连接容器到网络:

    sh 复制代码
    docker run -it --name my_container --network my_network ubuntu bash
4. 卷管理
  1. 创建卷:

    sh 复制代码
    docker volume create my_volume
  2. 挂载卷到容器:

    sh 复制代码
    docker run -it -v my_volume:/mnt/data ubuntu bash
相关推荐
梦想不只是梦与想1 小时前
Docker 常用命令
docker
wzq11_6661 小时前
Kubernetes集群——Pod篇
云原生·容器·kubernetes
wzq11_6663 小时前
Kubernetes集群——命令篇
云原生·容器·kubernetes
小白的码BUG之路3 小时前
Docker -- 构建ruoyi-gateway镜像
docker·容器·gateway
小白的码BUG之路4 小时前
Docker -- 构建ruoyi-system镜像
运维·docker·容器
小白的码BUG之路4 小时前
Docker -- 构建redis镜像
运维·docker·容器
江湖有缘4 小时前
Docker实战 | 使用Docker部署EspoCRM开源客户关系管理平台
docker·容器·开源
小白的码BUG之路5 小时前
Docker -- 构建ruoyi-auth镜像
运维·docker·容器
troy1288 小时前
K8s 平台测试清单:深度分析与实战指南
云原生·容器·kubernetes
小白的码BUG之路15 小时前
Docker -- 构建nacos镜像
运维·docker·容器