docker的介绍和使用

本文详细介绍了Docker的基本概念,包括DockerImage镜像、DockerContainer容器和DockerRepository仓库。对比了容器与虚拟机的区别,强调了容器在启动速度、资源消耗和扩展性方面的优势。同时,提供了在CentOS和Ubuntu系统上安装Docker的步骤,并列举了常用Docker命令。最后,探讨了数据卷在容器数据持久化中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、什么是docker

二、docker的基本概念

1.Docker Image镜像

2.Docker Container容器

3.Docker Repository仓库

三、比较容器和虚拟机

四、centos系统上安装docker引擎

五、Ubuntu系统上安装docker引擎

六、docker的使用

七、数据卷


一、什么是docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化。(引用百度)

Docker是一个使用Go语言开发的一个容器管理软件,运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器。(我的理解)

一个完整的docker由以下几部分组成:

  1. DockerClient客户端

  2. Docker Daemon守护进程

  3. Docker Image镜像

  4. DockerContainer容器

二、docker的基本概念

1.Docker Image镜像

Docker Image可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

通俗的讲,可以理解成一个打包好的文件,是一个程序代码,资源的软件包,相当于一个工具,用来创建容器,需要人去制作。

2.Docker Container容器

Docker Container就是运行镜像的地方,背后就是起一个进程来运行这个镜像。使用容器可以构建、共享和运行应用程序。

3.Docker Repository仓库

Docker Repository集中存放镜像的地方,Docker运行中使用的默认仓库是 Docker Hub 公共仓库

总之,镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。

三、比较容器和虚拟机

容器和虚拟机的架构:

容器是应用层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器作为用户空间中的独立进程运行。

虚拟机 (VM) 是将一台服务器变成多台服务器的物理硬件的抽象。管理程序允许多个 VM 在一台机器上运行。

容器的优点:

1.启动速度快:docker的每一个容器就是一个进程。

2.资源消耗小:资源可以有效的控制

3.扩展方便:自动扩容

容器的缺点:

1.隔离性上,应用程序的隔离没有虚拟机的彻底

2.可管理性上,docker集中化管理工具还不是成熟

3.安全性上,docker的安全性上也更弱

容器和虚拟机一起使用为部署和管理应用程序提供了极大的灵活性

四、centos系统上安装docker引擎

一、Uninstall old versions(卸载旧版本)

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

二、Set up the repository(设置存储库)

安装yum-utils包(它提供yum-config-manager实用程序):

yum install -y yum-utils

设置稳定存储库(二者选其一,推荐使用第二种方法):

第一种方法,下载docker官方的yum仓库文件:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

第二种方法,添加阿里云源文件:

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

三、Install Docker Engine(安装docker引擎)

yum install docker-ce docker-ce-cli containerd.io

四、Start Docker Engine(启动docker引擎)

开启docker:

systemctl start docker

设置开机启动docker:

systemctl enable docker

五、Test Docker Engine(测试docker引擎)

docker run hello-world

五、Ubuntu系统上安装docker引擎

一、Uninstall old versions(卸载旧版本)

sudo apt-get remove docker docker-engine docker.io containerd runc

二、Set up the repository(设置存储库)

更新apt包索引:

sudo apt-get update

安装包允许apt使用HTTPS存储库:  

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

添加Docker官方GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

设置存储库:

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

三、Install Docker Engine(安装docker引擎)

再次更新apt包索引:

sudo apt-get update

下载最新版本的docker引擎

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

(注:Ubuntu系统安装好docker引擎,会自动启动docker)

四、Test Docker Engine(测试docker引擎)

sudo docker run hello-world

六、docker的使用

docker version        查看docker的版本

docker images        查看下载了哪些docker镜像

docker search XX(服务名)        查看有哪些xx镜像

举例:docker search nginx 表示查看有哪些nginx镜像

docker pull XX(镜像名)        下载xx镜像

举例:docker pull nginx 表示下载nginx镜像

docker rmi XX(镜像名)       删除xx镜像

doncker run        创建容器并启动容器

举例:docker run --name sc_nginx -d -p 8080:80 nginx

--name 表示容器名字

-d 表示后台运行容器

-p 表示端口映射

nginx 表示镜像名

docker ps        查看正在运行的容器

docker ps -a        查看所有的容器

docker start 容器名(或者容器id)        表示开启容器

docker stop 容器名(或者容器id)        表示停止运行的容器

docker kill 容器名(或者容器id)        表示强制关闭容器

docker rm 容器名        表示删除容器

注:正在运行的容器不能被删除

docker create         创建容器

举例:docker create --name sc_nginx  -p 8080:80 nginx

这是创建了一个静态的容器,并没有运行

docker top 容器名        查看容器中运行的进程信息

docker logs 容器名        查看容器运行过程中的日志

docker container inspect 容器名        查看容器的详细信息

docker exec        表示进入容器

举例:docker exec -it sc-nginx-1 /bin/bash

-i:交互式方式进入容器

-t:开启一个终端

sc-nginx-1:容器名字

/bin/bash:进入容器执行操作的环境

注:进入容器后,exit退出容器

七、数据卷

卷就是存放数据的地方,可以映射到容器里

作用:实现容器和宿主机之间共享数据的

创建卷

docker create volume sc
表示创建一个名字为sc的卷

显示卷

docker volume ls

查看卷的详细信息

 注意上图这个目录,可以将你需要共享的数据复制到这个目录下。

使用卷

docker run -d --name nginx1 -p 8880:80 --mount source=sc,target=/usr/share/nginx/html nginx:latest