Docker学习笔记

Docker是一个开源的应用容器引擎,基于GO语言,允许开发者打包应用及依赖到可移植容器中,发布到任何Linux服务器。它采用轻量级容器技术,启动快速,安全性高。Docker包括镜像、容器和镜像仓库,常用于自动化打包、发布、测试和持续集成。安装Docker可通过官方脚本或手动方式,管理命令包括容器生命周期管理、镜像管理等,DockerHub作为公共仓库,支持镜像的推送和拉取。

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

Docker是什么?

Docker是一个开源的应用容器引擎,基于GO语言编写并遵从Apache 2.0开源协议。
Docker可以让应用开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何的Linux服务器上运行。容器技术基于进程的虚拟化,相比于虚拟机的硬件设备虚拟化来说,对系统的资源消耗更低,容器启动速率可以达到秒级。同时容器基于Cgroup技术隔离,容器之间互不干扰,安全性得到保障。

Docker的应用场景

  • Web应用的自动化打包和发布
  • 自动化测试和持续集成、发布

Docker架构

docker包含镜像、容器、镜像仓库三个基本概念,容器的创建、运行、更新、销毁也都围绕这三个要素展开。

  • 镜像(Image):Docker镜像相当于一个root文件系统,包含了应用运行所需要的软件包以及依赖环境,比如官方镜像nginx就包含了完整的nginx服务运行需要的应用软件、系统环境、配置文件。
  • 容器(Container):容器是镜像运行时的实体,容器运行时所承载的应用也正常运行了并可以对外提供服务。容器可以被创建、启动、停止、删除、暂停等。
  • 镜像仓库(Repository):镜像的集合,用于保存所有的镜像。应用开发者可以按需从镜像仓库拉取镜像,也可以将自定义镜像上传到镜像仓库用于后续使用。
    在这里插入图片描述

Docker安装

官方安装脚本自动安装

安装命令:

curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl restart docker  #启动docker

手动安装

参考链接:https://www.runoob.com/docker/centos-docker-install.html

Docker管理命令

命令帮助:

[root@ecs-43447130 docker]# docker

在这里插入图片描述
也可以通过命令docker command --help 更深入的了解指定的docker命令使用方法

[root@ecs-43447130 docker]# docker run --help

在这里插入图片描述
命令大全:

https://www.runoob.com/docker/docker-command-manual.html

Docker 容器使用

获取镜像

启动容器前,本地必须有镜像,如果没有则需要通过docker pull 命令去docker hup仓库下载镜像。

$ docker pull nginx

容器生命周期管理

使用docker run命令启动容器,run命令可以指定更多的参数,包括端口映射、容器名称、dns、网络类型等等参数,具体可以参见帮助文档。

$ docker run -d -p 9000:80 nginx:latest    //启动容器
$ docker ps   //查看当前运行容器 -a 参数展示全部容器
$ docker stop "container id"   //停止容器
$ docker restart "container id"   //重启容器
$ docker pause "container id"   //暂停容器
$ docker unpause "container id"   //取消暂停容器
$ docker rm -f "container id"   //删除容器

进入容器

容器运行指定 -d 参数后,容器启动后会进入后台运行,此时像进入容器有2个方式进入:

  • docker attach 该命令退出后 会导致容器的停止 不推荐
  • docker exec 推荐使用这个命令 该命令退出容器后不会导致容器的停止
$ docker exec -it <container id> /bin/sh

在这里插入图片描述

容器导出\导入

导出容器
通过使用docker export 命令导出容器快照到本地文件,以.tar格式保存。

$ docker export bb60ed842d7b > nginx.tar

在这里插入图片描述
导出容器前请使用docker ps --no-trunc 命令查看当前容器的 command,后续导入镜像并启动容器时需要指定command。

$ docker ps --no-trunc

在这里插入图片描述
导入容器
通过使用docker import 命令从容器快照文件中再导入新平台注册为容器镜像,实现跨平台迁移。

$ cat nginx.tar | docker import - test/nginx:v1

在这里插入图片描述
此外,也可以通过指定的URL或者目录来导入。

$ docker import http://example.com/exampleimage.tgz example/imagerepo

Docker 镜像使用

当运行容器时,指定的容器镜像在本地镜像仓库中不存在,docker就会自动从Docker Hub公共镜像仓库中下载。
对我们来说,主要关注:

  • 管理和使用本地镜像;
  • 创建本地镜像

镜像管理

列出镜像列表
通过docker images 命令列出本地镜像仓库中的全部镜像信息
在这里插入图片描述
查找镜像
我们可以通过docker search 命令从Docker Hub上搜索镜像
在这里插入图片描述
拉取镜像
可以通过docker pull命令从Docker Hub上下载镜像到本地仓库
在这里插入图片描述
删除镜像
我们可以通过docker rmi 命令删除本地镜像仓库的任意镜像;
在这里插入图片描述

创建镜像

如果docker hub仓库下载的镜像不能满足我们的应用需要,我们可以通过以下两种方式创建自定义镜像;

  • 从已经创建的容器中更新镜像内容,并提交这个镜像
  • 使用Dockerfile 指令来创建一个新的镜像

更新镜像
我们可以进入一个已经运行的容器,在容器中创建新的文件 touch test.txt。
在这里插入图片描述
退出容器后,使用docker commit 来提交容器副本成为新镜像;
在这里插入图片描述
构建镜像
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。例如下图就是一个Dockerfile文件。
在这里插入图片描述

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。因此RUN指令不建议太多条,可以合并添加避免镜像有过多的层。
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装、添加什么。
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。
在这里插入图片描述
查看镜像
在这里插入图片描述
设置镜像标签
我们可以使用docker tag 为镜像添加一个新标签。
在这里插入图片描述

Docker 仓库管理

公共仓库 Docker Hub

仓库登陆和退出

$ docker login     //登陆
$ docker logout    //登出

拉取镜像

$ docker search ubuntu    //查找镜像
$ docker pull ubuntu      //拉取镜像到本地

推送镜像
其中username替换为自己的Docker Hub账号用户名

$ docker tag ubuntu:18.04 username/ubuntu:18.04   //镜像打标签
$ docker push username/ubuntu:18.04               //镜像推送到仓库

本地私有镜像仓库

本地私有镜像仓库在部署docker服务的主机上,用户可以通过docker images查询本地的容器镜像,也可以制作、修改镜像到本地仓库。

$ docker images    //查询本地全部镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值