Docker学习(带图详细)

一、安装docker

参考官方文档:https://docs.docker.com/engine/install/centos/

查看系统版本

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]# 
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# 

1.卸载docker旧版本

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

image.png

2.配置Docker的yum库

首先要安装一个yum工具

yum install -y yum-utils

image.png
安装成功后,执行命令,配置Docker的yum源:

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

image.png

3.安装Docker

最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

image.png
查看安装的版本

docker -v

image.png

4.启动和校验

# 启动Docker
systemctl start docker# 查看Docker的状态
systemctl status docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 关闭开机自启动
systemctl disable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

5.配置镜像加速

这里以阿里云镜像加速为例。

5.1 注册阿里云账号

首先访问阿里云网站:
https://www.aliyun.com/
注册一个账号。

5.2 开通镜像服务

在首页的产品中,找到阿里云的容器镜像服务
image.png
点击后进入控制台:
image.png
首次可能需要选择立刻开通,然后进入控制台。

5.3 配置镜像加速

找到镜像工具下的镜像加速器
image.png
具体命令

# 创建目录
mkdir -p /etc/docker# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF# 重新加载配置
systemctl daemon-reload# 重启Docker
systemctl restart docker# 查看配置是否生效
docker info|grep Mirrors -A 1

image.png

二、了解镜像和容器

1.镜像和容器

DockerHub:https://hub-stage.docker.com/

官方(需要翻墙):https://hub.docker.com/
image.png

2.命令解读

以mysql为例:

docker run -d \--name mysql \-p 3306:3306 \ -e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \mysql

image.png

3.镜像命名规范

image.png
image.png

三、快速入门

1.常见命令

官方文档:https://docs.docker.com/

image.png

2.实践案例一

2.1 案例需求

image.png

2.2 搜索镜像

https://hub-stage.docker.com/
image.png
image.png
进入官方的
image.png
或者

https://hub.docker.com/u/library

image.png

或者命令搜索

#搜索镜像:从网络中查找需要的镜像
docker search 镜像名称例如:
docker search dvwa

image.png

2.3 拉取镜像

docker输入这个命令进行拉取镜像

docker pull nginx

image.png

2.4 查看镜像

docker images

image.png

2.5 保存镜像到本地

保存镜像到本地

查看帮助
docker save -o --help保存镜像
docker save -o nginx.tar nginx:latest

image.png

2.6 删除镜像

docker rmi 镜像名:版本例如:
docker rmi nginx:latest

image.png

2.7 本地拉取镜像

查看帮助
docker load --help本地拉取镜像
docker load -i nginx.tar
或者
docker load -i nginx.tar -q

image.png

2.8 创建容器

docker run -d --name nginx -p 80:80 nginx-i,以交互模式运行容器,通常与 -t 同时使用
-t,启动容器后,为容器分配一个命令行,通常与-i同时使用
-v,目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d,守护进程,后台运行该容器
-p,指定端口映射,格式:主机(宿主)端口:容器端口
-P,随机端口映射,容器内部端口随机映射到主机的端口
-u,以什么用户身份创建容器
--name "nginx-lb",容器名字
-m, --memory bytes,设置容器使用内存最大值
-h, --hostname string,指定容器的 host name
--dns 8.8.8.8,指定容器 dns 服务器
-e username="ritchie",设置环境变量
--restart,Docker 重启后,容器是否自动重启
--privileged,容器内是否使用真正的 root 权限

image.png

2.9 查看容器

docker ps :会列出出正在运行的容器信息。
docker ps -a :会列出当前服务器中所有的容器,无论是否在运行。CONTAINER ID:每个容器的唯一标识符号,自动生成。类似于数据库中的主键。
IMAGE :创建容器使用的镜像名称。
COMMAND:运行容器时的命令。
CREATED:容器创建的时间。
STATUS:容器的运行状态,Up 17 hours 指容器已运行17小时。
docker ps -s:会列出容器的文件大小(容器增加的大小/容器的虚拟大小)docker ps -q:仅列出CONTAINER ID 字段
如批量停止所有容器:docker stop docker ps -a -qdocker ps -l: 显示最后一个运行的容器(无论该容器目前处于什么状态)
docker ps -n 数量x:显示最后 x 个运行容器,当x为1时和 -l 含义相同。(无论该容器目前处于什么状态)docker ps --no-trunc:不对输出进行截断操作,此时可以看到完整的COMMAND,CONTAINER IDdocker -f :使用过滤器来过滤输出
目前支持过滤器:
id (容器的id)
label
name(容器名称)
exited (整数-容器退出状态码,只有在使用-all才有用)
status 容器状态(created,restarting,running,paused,exited,dead)
ancestor 过滤从指定镜像创建的容器
before (容器的名称或id),过滤在给定id或名称之后创建的容器
isolation (default process hyperv) (windows daemon only)
volume (数据卷名称或挂载点),–过滤挂载有指定数据卷的容器
network(网络id或名称),过滤连接到指定网络的容器示例:
docker ps -f status=exited
docker ps -f ancestor=597ce1600cf4 -f status=exited -adocker ps --formart {{.Names}}:以go的形式格式化输出列表
go模板
.ID 容器的ID
.Image 镜像的ID
.Command 容器启动的命令
.CreatedAt 创建容器的时间点
.RunngingFor 从容器创建到现在过去的时间
.Ports 暴露的端口
.Status 容器的状态
.Size 容器硬盘的大小
.Names 容器的名称
.Label 指定label的值
.Mounts 挂载到这个容器的数据卷名称示例:
docker ps --formart {{.Names}}---{{.Image}}
docker ps
或者查看所有的容器
docker ps -a自定义查看容器信息
docker ps --format "table {{.ID}}\t{{.Image}}\{{.Ports}}\t{{.Status}}\t{{.Names}}"

image.png
image.png

2.10 停止容器

# 停止一个容器
docker stop 容器i或者容器名# 停止所有容器
docker stop $(docker ps -q)
  • docker ps -q:列出所有运行中容器的ID。
  • docker stop:停止一个或多个运行中的容器。

示例一:

docker stop nginx

image.png

示例二:

2.11 启动容器

docker start nginx

image.png

2.12 查看日志

docker logs nginx或者一直查看
docker logs -f nginx

image.png

2.13 进入容器

说明:-it参数是可交互的模式    bash是命令行模式
docker exec -it nginx bash

image.png

2.14 退出容器

exit

image.png

2.15 删除容器

删除所有容器

docker rm $(docker ps -aq)
  • docker ps -aq:列出所有容器(包括未运行的)的ID。
  • docker rm:移除一个或多个容器。

删除单个容器

docker rm 容器id(或者容器名)
或者用-f操作强制删除
docker rm -f 容器id(或者容器名)

示例一:

docker rm nginx注意:
删除容器的时候,如果不强行删除的话,需要先停止容器
docker stop nginx

image.png
示例二:

docker rm $(docker ps -aq)

image.png

四、配置Docker国内源

可用源
●Docker 官方中国区:https://registry.docker-cn.com
●网易:http://hub-mirror.c.163.com
●中国科技大学:https://docker.mirrors.ustc.edu.cn
●阿里云:https://y0qd3iq.mirror.aliyuncs.com

1.配置源文件

增加Docker的镜像源配置文件 /etc/docker/daemon.json
如果没有配置过镜像源该文件默认是不存在的

vim /etc/docker/daemon.json

在其中增加如下内容

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

2.重启docker

service docker restart

3.查看配置是否生效

docker info|grep Mirrors -A 1

五、逻辑卷

1.图解

image.png

2.基本命令

image.png

查看命令帮助信息
docker volume --help

image.png

3.实践案例二

image.png

3.1 创建逻辑卷和容器

docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx

image.png

3.2 查看逻辑卷位置

docker volume ls查看具体位置
docker volume inspect html

image.png

image.png
那么以后在宿主机的这个目录下操作文件和在docker容器中操作是一样的效果

3.3 总结

image.png

4.实践案例三

image.png
mysql官方文档:https://hub-stage.docker.com/_/mysql

4.1 查看容器的详情

docker inspect 容器名(或者是ID)docker inspect nginx

主要看Mounts的配置信息
image.png

"Mounts": [{"Type": "volume","Name": "html","Source": "/var/lib/docker/volumes/html/_data","Destination": "/usr/share/nginx/html","Driver": "local","Mode": "z","RW": true,"Propagation": ""}],

image.png
image.png

4.2 挂载目录

image.png

docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql

image.png
创建成功后
image.png
image.png

注意:在运行之前,需要创建这些目录

cd /rootmkdir mysqlcd mysqlmkdir datamkdir confmkdir init

image.png
在conf目录下创建配置文件hm.cnf,代码如下

[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

然后在init目录下创建数据信息hmall.cnf
image.png

4.3 验证数据持久保存

先删除容器

docker rm -f mysql

无法在连接数据库
image.png
但是数据还在宿主机上
image.png

再次重新创建容器

docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql

image.png
查看连接数据库,发现连接成功,并且数据都还在
image.png

六、自定义镜像

image.png
image.png
image.png

1.基础命令

官方文档:https://docs.docker.com/engine/reference/builder
image.png

2.构建解读

image.png
image.png

image.png

3.总结

image.png

七、网络

image.png

1.基本命令

image.png

2.创建网络

docker network create 网络名例如:
docker network create hm

image.png

3.查看网络

docker network ls

image.png

4.将容器添加到网络

docker network connect 网络名 容器名例如:
docker network connect hm mysql

image.png

5.查看容器信息

docker inspect mysql

image.png

八、Docker Compose

image.png
image.png

1.命令选项

build    —— 构建(重新构建)项目中的服务容器
config   —— 检测compose文件的错误
up       —— 启动服务
down     —— 停止容器
images   —— 列出项目中所包含的镜像
logs     —— 查看服务容器的日志
kill     —— 发送 SIGKILL 信号来强制停止服务容器
port     —— 查看某个容器端口所映射的公共端口
ps       —— 列出项目中目前的所有容器
restart  —— 重启项目中的服务
rm       —— 删除所有停止状态的服务容器
run      —— 在指定服务上运行一个命令
scale    —— 设置指定服务运行的容器个数
stop     —— 停止处于运行状态的容器
start    —— 启动被stop的服务容器
top      —— 查看各个服务容器内运行的进程
pause    —— 暂停一个服务容器
unpause  —— 恢复处于暂停状态中的服务

2.例子

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- newhmall:build:context: .dockerfile: Dockerfilecontainer_name: hmallports:- "8080:8080"networks:- newdepends_on:- mysqlnginx:image: nginxcontainer_name: nginxports:- "18080:18080"- "18081:18081"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/etc/nginx/html"depends_on:- hmallnetworks:- new
networks:new:name: hmall

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Entity Framework Core中的延迟加载和即时加载

在Entity Framework Core&#xff08;EF Core&#xff09;中&#xff0c;延迟加载&#xff08;Lazy Loading&#xff09;和即时加载&#xff08;也称为早期加载或显式加载&#xff09;是两种主要的数据加载模式&#xff0c;它们在加载相关数据时有着不同的策略和优势。以下是这…

Leetcode 3145. Find Products of Elements of Big Array

Leetcode 3145. Find Products of Elements of Big Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3145. Find Products of Elements of Big Array 1. 解题思路 这道题思路上还是比较直接的&#xff0c;就是实现上非常的繁琐&#xff0c;着实花了不少力气。 显然&…

vs code中如何使用git

由于本地代码有了一些储备&#xff0c;所以想通过网址托管形式&#xff0c;之前一直使用了github&#xff0c;但是鉴于一直被墙&#xff0c;无法登录账号&#xff0c;所以选择了国内的gitee来作为托管网站。 gitee的网址&#xff1a;Gitee - 基于 Git 的代码托管和研发协作平台…

C++11 新特性 decltype 说明符

一、typeof与typeid 1.1、typeof 在C11标准之前&#xff0c;GCC已经提供了一个类似功能的运算符 typeof对类型进行推导&#xff0c;但是这毕竟是编译器的实现&#xff0c;不是标准。 int a 0; typeof(a) b 5;1.2、typeid C标准提供了 typeid 运算符&#xff0c;获取的类型…

在另外一个页面,让另外一个页面弹框显示操作(调佣公共的弹框)

大概意思是&#xff0c;登录弹框在另外一个页面中&#xff0c;而当前页面不存在&#xff0c;在当前页面中判断如果token不存在&#xff0c;就弹框出登录的弹框 最后一行 window.location.href … 如果当前用户已登录&#xff0c;则执行后续操作(注意此处&#xff0c;可不要)

QT设计模式:策略模式

基本概念 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列方法&#xff0c;并使它们可以相互替换。策略模式使得算法可以独立于客户端而变化&#xff0c;使得客户端可以根据需要选择相应的算法。 策略模式通常由以下角色组…

如何创建window7,window10虚拟机

一、创建window7虚拟机 他的镜像不像window11一样可以搜到的&#xff0c;我们需要去msdn下载他的镜像文件 个人推荐倒数第四个&#xff0c;也就是我勾选的那个 这个是迅雷下载地址&#xff0c;复制到迅雷里下载就好了。 最好和我这样&#xff0c;创建文件夹&#xff0c;虚拟机…

Redis如何进行内存管理的?---过期删除策略和内存淘汰策略

1 过期删除策略 定时删除 在设置某个key 的过期时间同时&#xff0c;我们创建一个定时器&#xff0c;让定时器在该过期时间到来时&#xff0c;立即执行对其进行删除的操作。 优点&#xff1a;定时删除对内存是最友好的&#xff0c;能够保存内存的key一旦过期就能立即从内存…

深入了解哈希映射(HashMap)

一、哈希映射&#xff08;HashMap&#xff09;简介 在计算机科学中&#xff0c;哈希映射&#xff08;HashMap&#xff09;是一种基于键值对&#xff08;Key-Value pair&#xff09;存储数据的数据结构&#xff0c;它提供了高效的数据查找、插入和删除操作。哈希映射的核心思想…

C++基础——友元

程序员可以把一个全局函数、某个类中的成员函数、甚至整个类声明为友元。 友元语法&#xff1a; 1.friend关键字只出现在声明处 2.其他类、类成员函数、全局函数都可声明为友元 3.友元函数不是类的成员&#xff0c;不带this指针 4.友元函数可访问对象任意成员属性&#xff0c;…

创新指南|设计冲刺 – 更快找到成功的创新方案

“ 设计冲刺&#xff08;Design Sprint&#xff09;” 一词与跑步无关&#xff0c;而且不局限于设计&#xff0c;它与引导团队加速创新密切相关。设计冲刺旨在帮助创新团队在很短的时间内解决一个极有价值的问题。本文将深入解析这一法宝&#xff1a;设计冲刺是什么&#xff1f…

49. UE5 RPG 使用Execution Calculations处理对目标造成的最终伤害

Execution Calculations是Unreal Engine中Gameplay Effects系统的一部分&#xff0c;用于在Gameplay Effect执行期间进行自定义的计算和逻辑操作。它允许开发者根据特定的游戏需求&#xff0c;灵活地处理和修改游戏中的属性&#xff08;Attributes&#xff09;。 功能强大且灵…

【操作系统期末速成】​内存管理|内存的装入模块在装入内存的方式|分配管理方式|页面置换算法|页面置换

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;操作系统&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到…

栈和队列讲解

文章目录 栈栈的实现栈的初始化压栈出栈获取栈顶元素获取栈内有效元素个数检查是否为空销毁栈栈的使用 栈全部代码队列的初始化队尾入队列队头出队列获取队列头部元素获取队列队尾元素获取队列中有效元素个数检测队列是否为空&#xff0c;如果为空返回非零结果&#xff0c;如果…

矿用泄爆装置之——水封式防爆器使用说明

矿用泄爆装置之——水封式防爆器使用说明。 在这个快节奏的时代&#xff0c;您需要一款能够与您一同成长&#xff0c;满足您需求的产品。我们为您带来的不仅仅是一件产品&#xff0c;更是一份属于您不一样的新体验。【1-5-9】 一、水封式防爆器产品使用介绍 安装在抽放瓦斯泵进…

汇昌联信:做拼多多网点需要具备什么能力?

在当前电商行业高速发展的背景下&#xff0c;拼多多以其独特的商业模式迅速崛起&#xff0c;成为众多创业者和商家关注的焦点。想要运营一家成功的拼多多网点&#xff0c;不仅需要对平台规则有深入的了解&#xff0c;还需要具备多方面的能力。这些能力是确保网点稳定运营并实现…

使用python将`.mat`文件转换成`.xlsx`格式的Excel文件!!

要将.mat文件转换成.xlsx格式的Excel文件 第一步&#xff1a;导入必要的库第二步&#xff1a;定义函数来转换.mat文件第三步&#xff1a;调用函数注意事项 要将.mat文件转换成.xlsx格式的Excel文件&#xff0c;并保持文件名一致&#xff0c;你可以使用scipy.io.loadmat来读取.m…

在Ubuntu 24.04 LTS (Noble Numbat)上搭建Kubernetes1.30集群

准备工作 系统准备 主机和IP地址准备 ​编辑安装步骤 安装前准备 关闭防火墙 设置服务器时区 关闭 swap 分区 关闭SELinux 配置hosts配置文件 转发 IPv4 并让 iptables 看到桥接流量 每台机器设置hostname 安装容器运行时 安装Kubernetes 配置并安装apt包 初始…

【getopt函数用法】

这里写目录标题 一、概述二、选项字符串规则&#xff1a;三、getopt 返回值四、会用到的全局变量&#xff1a;三、示例代码四、上机实验 一、概述 int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; //这个最常用&#xff0c;保存一个…

OpenCV特征匹配总结

1.概述 在深度学习出现之前&#xff0c;图像中的特征匹配方法主要有 2.理论对比 3.代码实现 #include <iostream> #include <opencv2/opencv.hpp>int main(int argc, char** argv) {if(argc ! 3) {std::cerr << "Usage: " << argv[0] <…