Docker部署及基本操作

一、Docker安装

1.1 配置docker镜像仓库

  1. 安装yum-utils软件包
[root@localhost ~]# yum install -y yum-utils
  1. 设置镜像仓库地址
[root@localhost ~]yum-config-manager \    #管理yum配置文件的命令,主要用于启用,禁用或添加存储库
>   --add-repo \                           #通过指定URL来添加新存储库
>   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

这里使用阿里云的镜像仓库

1.2 安装docker相关的引擎

更新yum软件包引索

[root@localhost ~]# yum makecache fase 

安装docker软件包

[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io

1.3 启动docker

[root@localhost ~]# systemctl start docker

查看dockers是否启动

[root@localhost ~]# docker version

1.4 测试docker

[root@localhost ~]# docker run hello-world

此命令用于测试Docker是否正确安装,Docker会从Docker Hub下载一个小型的测试镜像,并运行一个简单的程序
在这里插入图片描述查看本机的docker镜像

[root@localhost ~]# docker images

在这里插入图片描述

1.5 设置阿里云镜像加速服务

在浏览器搜索阿里云官网,登录阿里云账号,找到容器服务
在这里插入图片描述在这里插入图片描述在这里插入图片描述

[root@localhost ~]# vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://tgnjz4cz.mirror.aliyuncs.com"]
}

配置完成后,重新加载文件并重启docker服务

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

查看镜像加速器是否配置成功

[root@localhost ~]# docker info

显示Docker守护进程和客户端详细信息
在这里插入图片描述
看到如图字样,表示镜像加速器配置成功

二、Docker命令

2.1 镜像管理

2.1.1 获取镜像docker pull

格式: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

[root@localhost ~]# docker pull ubuntu:18.04

在这里插入图片描述

2.1.2 运行容器 docker run

格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
常用选项
-d:以 detached 模式运行容器,即后台运行。
–name:为容器指定一个名称。
-p:映射容器的端口到宿主机。
-e:设置环境变量。
-v:挂载卷,用于数据持久化或共享数据。
–network:指定容器的网络连接。
–rm:容器退出时自动清理容器文件系统。

以交互方式运行容器
要运行 Ubuntu 容器并访问 shell,按exit退出这个容器

[root@localhost ~]# docker run -it ubuntu bash

在这里插入图片描述在 detached 中运行容器

[root@localhost ~]# docker run -d nginx

在这里插入图片描述将容器的内部端口映射到机器的端口(对于 Web 服务器等服务很有用)

[root@localhost ~]# docker run -d -p 8080:80 nginx

在这里插入图片描述

2.1.3 列出镜像 docker images

格式:docker images [选项]
命令选项
-a 或 --all:显示所有镜像(默认情况下,只显示未标记为中间状态的镜像)。
–no-trunc:显示完整的镜像 ID 和仓库名称,而不进行截断。
-q 或 --quiet:仅列出镜像 ID。

列出所有图像,包括中间图像

docker image ls -a

在这里插入图片描述按特定条件(例如,按存储库或大小)筛选图像:

docker image ls --filter "before=nginx:latest"

在这里插入图片描述
仅显示图像 ID(用于编写脚本或清理):

 docker image ls -q	

在这里插入图片描述

设置输出格式(例如,仅显示图像名称和大小):

docker image ls --format "{{.Repository}}: {{.Size

在这里插入图片描述

2.1.4 显示镜像体积 docker system df

格式:docker system df [选项]
命令选项
-v 或 --verbose:显示详细的信息,包括每个项目的大小。
–format:格式化输出信息,使用 Go 的模板语法。

显示 Docker 系统的数据使用情况:

docker system df

在这里插入图片描述

显示详细的数据使用情况:

docker system df -v

在这里插入图片描述

2.1.5 悬挂镜像

在 Docker 中,悬挂镜像是未标记或未与任何存储库名称关联的镜像。这些映像通常是在构建过程中创建的不再需要的剩余中间层,但它们仍然占用磁盘空间
列出悬垂图像

docker images -f "dangling=true"

在这里插入图片描述

2.1.6 中间层镜像

中间层镜像(Intermediate Images)是 Docker 构建过程中生成的临时镜像层。这些镜像层是 Docker 构建过程中的产物,用于支持镜像的层次结构,但通常不直接用于最终的镜像。

docker image ls -a

中间层镜像通常显示为none,因为它们没有分配具体的标签或仓库名
在这里插入图片描述

2.1.6 删除镜像docker image rm

格式:docker image rm [选项] <镜像1> [<镜像2> …]
命令选项
–force 或 -f:强制删除镜像,即使它们被容器引用。
–no-prune:不要自动清理悬空的父镜像

删除指定的镜像: 如果你想删除名为 myimage:latest 的镜像,可以使用以下命令:

docker image rm myimage:latest

在这里插入图片描述

如果镜像正在被一个或多个容器使用,需要添加 --force 选项

使用镜像 ID 删除: 如果你知道要删除的镜像的 ID,也可以使用 ID 来删除:
docker image rm 镜像ID
在这里插入图片描述

强制删除: 如果镜像被容器或其他进程引用,你需要使用 --force 选项来强制删除:

2.1.7 使用 Dockerfile 定制镜像

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。
Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
在一个空白目录中,建立一个文本文件,并命名为 Dockerfile:

[root@localhost ~] mkdir mynginx
[root@localhost ~] cd mynginx
[root@localhost ~] touch Dockerfile
[root@localhost ~] vi Dockerfile
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

在 Dockerfile 文件所在目录执行

[root@localhost mynginx]# docker build -t nginx:v3 .

在这里插入图片描述

从命令的输出结果中,我们可以清晰的看到镜像的构建过程。在 Step 2 中,如同我们之前所说的那样,RUN 指令启动了一个容器 9cdc27646c7b,执行了所要求的命令,并最后提交了这一层 44aa4490ce2c,随后删除了所用到的这个容器 9cdc27646c7b。
这里我们使用了 docker build 命令进行镜像构建。其格式为:
docker build [选项] <上下文路径/URL/->
在这里我们指定了最终镜像的名称 -t nginx:v3,构建成功后,我们可以像之前运行 nginx:v2 那样来运行这个镜像,其结果会和 nginx:v2 一样。

2.2 容器操作

2.2.1 启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited)的容器重新启动。
语法:docker run [选项] 镜像名称
常用选项
-d:以 detached 模式运行容器,即后台运行。
–name:为容器指定一个名称。
-p:映射容器的端口到宿主机。
-e:设置环境变量。
-v:挂载卷,用于数据持久化或共享数据。
–network:指定容器的网络连接。
–rm:容器退出时自动清理容器文件系统。
-it:分配一个伪终端并保持 STDIN 打开,通常用于交互式运行。

新建并启动
下面的命令输出一个 “Hello World”,之后终止容器。

[root@localhost ~] docker run ubuntu:18.04 /bin/echo 'Hello world'

在这里插入图片描述

这跟在本地直接执行 /bin/echo ‘hello world’ 几乎感觉不出任何区别。

启动一个 bash 终端,允许用户进行交互。

[root@localhost ~] docker run -t -i ubuntu:18.04 /bin/bash

在这里插入图片描述
在交互模式下,用户可以通过所创建的终端来输入命令,例如
在这里插入图片描述

2.2.2 启动已终止容器

格式:docker container start [选项] 镜像名称
选项
-a 或 --attach:在容器启动后,附加到容器的标准输出和标准错误流。
–detach-keys:定义用于从容器中分离的键的字符串

[root@localhost ~]# docker container start 037bf59d3e1e 

在这里插入图片描述

2.2.3 重新启动容器

格式:docker container restart [选项] 镜像名称或ID
常用选项:
-t, --timeout:指定容器停止后重启前的等待时间(秒)。默认情况下,Docker 会等待 10 秒。

重启容器

[root@localhost ~]# docker container restart 037bf59d3e1e 

在这里插入图片描述

2.2.4 后台运行

后台运行容器其实就是docker run命令,更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
如果不使用 -d 参数运行容器

[root@localhost ~]# docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

在这里插入图片描述
容器会把输出的结果 (STDOUT) 打印到宿主机上面
如果使用了 -d 参数运行容器

[root@localhost ~]# docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

在这里插入图片描述
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。

2.2.5 终止容器

终止状态的容器可以用 docker container ls -a 命令看到

[root@localhost ~]# docker container ls -a 

在这里插入图片描述

处于终止状态的容器,可以通过 docker container start 命令来重新启动。

 [root@localhost ~]# docker container start 037bf59d3e1e 

在这里插入图片描述

2.2.6 进入容器

某些时候需要进入容器进行操作
attach 命令
格式:docker attach [选项] 镜像名称
选项
–no-stdin:不分配一个 STDIN,容器的标准输入不会与用户的终端关联。
–sig-proxy:默认情况下,当用户按下 Ctrl-C 时,Docker 会向容器发送 SIGINT 信号。如果设置了 --no-sig-proxy,则不会发送信号。
先查看镜像,然后使用attach命令进入后台

[root@localhost ~]#  docker container ls
[root@localhost ~]# docker attach dc0

在这里插入图片描述

2.2.7 导入和导出容器

导出容器docker export
格式:docker export 容器名称或ID
导出本地某个容器

[root@localhost ~]# docker container ls -a
[root@localhost ~]# docker export f61b806dee9d > ubuntu.tar

在这里插入图片描述
导入容器快照docker import
格式:docker import [选项] 路径 [新镜像仓库的名称和标签]]
选项
-c, --change:在导入过程中应用 Dockerfile 指令

[root@localhost ~]# cat ubuntu.tar | docker import - test/ubuntu:v1.0
[root@localhost ~]#  docker image ls

在这里插入图片描述

2.2. 8 删除容器

格式:docker container rm [选项] 一个或多个容器的名称或ID
常用选项
-f, --force:强制删除一个正在运行的容器。需要谨慎使用,因为它不会等待容器正常关闭。
-v, --volumes:在删除容器的同时删除其关联的所有卷。

使用 docker container rm 来删除一个处于终止状态的容器
在这里插入图片描述

2.3 数据管理

数据卷
数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性
数据卷 可以在容器之间共享和重用
对 数据卷 的修改会立马生效
对 数据卷 的更新,不会影响镜像
数据卷 默认会一直存在,即使容器被删除

2.3.1 Docker 卷的基本命令

docker volume create:创建一个新的卷。
docker volume ls:列出所有卷。
docker volume inspect:查看卷的详细信息。
docker volume rm:删除一个或多个卷。
docker volume prune:清理未使用的卷。 

2.3.1 创建数据卷

[root@localhost ~]# docker volume create my-vol
[root@localhost ~]# docker volume ls

在这里插入图片描述

在主机里使用以下命令可以查看指定 数据卷 的信息

[root@localhost ~]# docker volume inspect my-vol

在这里插入图片描述

2.3.2 启动一个挂载数据卷的容器

创建一个名为 web 的容器,并加载一个 数据卷 到容器的 /usr/share/nginx/html 目录

[root@localhost ~]# docker run -d -P --name web --mount source=my-vol,target=/usr/share/nginx/html ubuntu:18.04

在这里插入图片描述

2.3.3 查看数据卷的具体信息

ocker inspect 命令用于获取一个或多个容器或镜像的详细信息,包括配置、网络设置、挂载点等
格式:docker inspect [选项] 镜像或容器ID
常用选项
-f, --format:格式化输出信息,使用 Go 的模板语法。

[root@localhost ~]# docker inspect web

在这里插入图片描述

2.3.4 删除数据卷

格式:docker volume rm [选项] 卷名 [卷名…]
常用选项
-f, --force:强制删除一个正在被容器使用的卷。

[root@localhost ~]# docker volume rm my-vol

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值