Docker 学习(一)

一、Docker 核心概念

Docker 是一个开源的容器化平台,允许开发者将应用及其所有依赖(代码、运行时、系统工具、库等)打包成一个轻量级、可移植的"容器",实现 "一次构建,随处运行"

1、容器(Container)

  • 轻量级、可执行的软件包,包含应用及其所有依赖(代码、运行时、系统工具、库等)。

  • 基于镜像运行,独立于宿主机操作系统,共享宿主内核。

2、镜像(Image)

  • 只读模板,用于创建容器。

  • 由多层文件系统叠加而成(UnionFS),支持复用和增量更新。

3、仓库(Registry)

  • 存储和分发镜像的服务,如 Docker Hub(默认公共仓库)、私有仓库(Harbor)。

4、Docker 与 虚拟机 的比较

作为一种轻量级的虚拟化方式,Docker 在运行应用上跟传统的虚拟机方式相比具有如下 显著优势:

  • Docker 容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟)要快得多;
  • Docker 容器对系统资源需求很少,一台主机上可以同时运行数千个
  • Docker 容器(在 IBM 服务器上已经实现了同时运行! OK 量级的容器实例);
  • Docker 通过类似 Git 设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新;
  • Docker 通过 Dockerfile 支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程

二、Docker 的安装配置

1、linux 安装(CentOS)

cpp 复制代码
自己构建yum仓库源
# step 1: 安装必要的一些系统工具
 yum install -y yum-utils

# Step 2: 添加阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 安装Docker
 yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Step 4: 开启Docker服务
systemctl enable --now docker

# Step 5:验证安装
docker version

2、配置国内镜像加速器

cpp 复制代码
[root@centos ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://docker.nju.edu.cn"
    ]
}
[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl restart docker

# 验证
[root@centos ~]# docker pull busybox    //拉取镜像
Using default tag: latest
latest: Pulling from library/busybox
Digest: sha256:498a000f370d8c37927118ed80afe8adc38d1edcbfc071627d17b25c88efcab0
Status: Image is up to date for busybox:latest
docker.io/library/busybox:latest
[root@centos ~]# docker images         //查看本地已有镜像的基本信息
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
busybox      latest    31311c5853a2   5 months ago   4.27MB
其中镜像的ID信息十分重要, 它唯一标识了镜像。
在使用镜像ID的时候, 一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID。

三 、Docker 核心命令

镜像管理:

1、docker images ------查看本地镜像

2、docker pull ubuntu:latest ------拉取镜像

从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest 标记的镜像。

3、docker rmi <image_id>或TAG ------删除镜像,加上 -f 便是强制删除

注意:当有该镜像创建的容器存在时, 镜像文件默认是无法被删除的。但是通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。

4、docker tag ubuntu:latest myubuntu:latest------为本地镜像任意添加新的标签

5、 docker search nginx ------搜索官方仓库中的镜像

6、docker build -t myapp:v1 . ------构建镜像

7、docker save myapp:v1 > myapp.tar ------导出镜像

8、docker load < myapp.tar------从文件导入镜像

容器管理:

1、docker run web /bin/echo "hello , world !! " ------创建容器并输出字符串

当利用 docker run 来创建并启动容器时, Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载;
  • 利用镜像创建一个容器,并启动该容器;
  • 分配 一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
  • 从网桥的地址池配置一个 IP 地址给容器;
  • 执行用户指定的应用程序;
  • 执行完毕后容器被自动终止。

2、docker run -it web /bin/echo "hello , world !! " ------启动一个bash终端,允许用户进入交互

-t 选项让Docker 分配一个 伪终端 并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开

3、docker run -d --name web nginx ------启动容器(后端运行)

4、docker exec -it web /bin/bash ------ 进入容器交互终端

5、docker ps -a------查看所有容器(包括已停止)

6、docker stop/pause web ------停止/暂停容器

7、docker start web ------启动已停止的容器

8、docker rm web ------删除容器 docker rm `docker ps -aq` ------删除所有容器

9、docker logs web ------查看容器日志,其他可通过--help 了解

10、docker export -o file.tar name 或 docker export name > file.tar------导出容器到 tar文件中。

11、docker import file.tar - name/ubuntu:18.04 ------导入容器

12、docker cp web:/etc/nginx/nginx.conf ./ ------从容器复制文件到宿主机

相关推荐
正经教主1 小时前
【基础】Linux 系统有多种安装工具比较
linux·运维·服务器
livemetee1 小时前
WebRTC ICE 服务器搭建
运维·服务器·webrtc
Y_Hungry8 小时前
Linux 怎么使用局域网内电脑的网络访问外部
linux·运维·服务器
网硕互联的小客服9 小时前
如何解决服务器文件丢失或损坏的问题
运维·服务器
Shanxun Liao9 小时前
如何在 PowerEdge 服务器上设置 NIC 分组
运维·服务器
开开心心就好9 小时前
提升办公效率的PDF转图片实用工具
运维·服务器·网络·python·智能手机·pdf·ocr
茅坑的小石头10 小时前
linux tar命令详解。压缩格式对比
linux·运维·服务器
球求了10 小时前
Linux 入门:操作系统&&进程详解
linux·运维·服务器·开发语言·学习
李匠202410 小时前
C++负载均衡远程调用学习之负载均衡算法与实现
运维·c++·学习·负载均衡
JAVA学习通10 小时前
[javaEE]网络编程
运维·服务器·网络