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
相关推荐
wuxingge5 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
志凌海纳SmartX6 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes
锅总6 小时前
nacos与k8s service健康检查详解
云原生·容器·kubernetes
BUG弄潮儿6 小时前
k8s 集群安装
云原生·容器·kubernetes
意疏6 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
墨鸦_Cormorant6 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
Code_Artist7 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器
颜淡慕潇8 小时前
【K8S系列】kubectl describe pod显示ImagePullBackOff,如何进一步排查?
后端·云原生·容器·kubernetes
wanmei0028 小时前
Dockerfile复制目录进入镜像里
docker
inter_peng8 小时前
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
tcp/ip·docker·eureka