docker简易入门(极简,纯干货)

简介

Docker是一种容器化平台,它可以用来轻松地创建、部署和运行应用程序和服务。Docker使用容器技术来管理应用程序的运行环境,它将应用程序和服务打包到一个易于移植的容器中,然后在任何地方运行这个容器,无需担心不同环境之间的差异。使用Docker,您可以轻松地构建、测试、部署和扩展应用程序,从而大大提高了开发和部署的效率。Docker的核心是Docker引擎,它是一个轻量级的运行时环境,可以在任何操作系统上运行。Docker还提供了一系列命令行工具和API,使开发人员和系统管理员可以轻松地管理Docker容器和镜像。

核心

Docker的核心是Docker引擎(Docker Engine),它是一个开源的容器化技术,能够简化应用程序的开发、部署和管理。

Docker Engine包括以下几个核心组件:

1. Docker守护进程(Docker daemon):Docker守护进程是运行在主机上的长期运行的进程,用于管理Docker容器、镜像、网络、数据卷等资源。

2. Docker客户端(Docker client): Docker客户端是Docker命令行工具,用于与Docker守护进程进行通信,同时也是用户与Docker交互的主要方式。

3. Docker镜像(Docker image): Docker镜像是一个只读的模板,它包含了用于创建Docker容器的文件系统和应用程序。

4. Docker容器(Docker container): Docker容器是由Docker镜像创建的运行实例,可以运行应用程序及其依赖项,同时具有隔离和可移植性。

5. Docker仓库(Docker registry): Docker仓库是用于存储Docker镜像的中央存储库,可以是公共的或私有的,用户可以从中拉取Docker镜像来创建和运行容器。

以上组件结合在一起就形成了Docker的整体架构,帮助用户快速、高效地构建、发布和管理软件应用程序。

docker安装

linux自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或者

curl -sSL https://get.daocloud.io/docker | sh

或者通过宝塔控制面板

......

linux离线安装

离线安装包下载

Index of linux/static/stable/x86_64/

你可以先找一个顺眼些的包下载(结合实际情况,不建议使用最新版本,相对不稳定)

可以直接下载到你本地电脑再上传到测试机,也可以直接在你的测试机上下载

wget https://download.docker.com/linux/static/stable/x86_64/docker-17.12.1-ce.tgz  

解压

tar -zxvf docker-17.12.1-ce.tgzcp docker/* /usr/bin/cd /etc/systemd/system/vi docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinityTimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s[Install]
WantedBy=multi-user.target

保存并退出:wq

然后授权

chmod +x /etc/systemd/system/docker.service
# 重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
# 启动
systemctl start docker
# 设置开机启动
systemctl enable docker.service

 如果出现意外情况,请自行百度吧,很多情况就不说了哈,这里只讲成功的情况

控制面板

当然有很多这个控制面板,我这里就直接选择了SimpleDocker,当然你也可以忽略直接使用命令

 docker pull registry.cn-hangzhou.aliyuncs.com/seven-tao/simple-docker:0.0.7.1

创建一个进入某个文件夹创建docker-compose.yaml

然后编辑

version: '3'
services:redis:image: redis:latestrestart: alwaysweb:image: registry.cn-hangzhou.aliyuncs.com/seven-tao/simple-docker:0.0.7.1restart: alwaysports:- "9091:4050"volumes:- /tmp/simple-docker/back:/tmp/back- /var/run/docker.sock:/var/run/docker.sockdepends_on:- redis

然后在该文件所在文件夹执行

docker compose up -d

 我这里有很多,你们先忽略哈哈,你们应该只有最后两条

docker常见命令

pull拉取镜像
push推送镜像

search查询镜像

run创建并运行
start/stop/restart启动已被停止的容器/停止容器/重启
kill杀死运行中的某个进程
rm删除一个或多个容器
rmi删除一个或多个镜像
pause暂停容器中的所有进程
unpause恢复所有进程
create创建一个信容器但不启动
exec容器中执行
images镜像
ps列出运行中的容器
stop停止
inspect查看容器或镜像的详细信息。
build使用Dockerfile文件构建一个新的Docker镜像。
docker-compose使用docker-compose.yml文件管理多个容器的运行和停止

 以上就是比较常见的命令了,相对不常见我就不列出来了

配置加速器

linux

/etc/docker/daemon.json

{"registry-mirrors" : ["https://hub-mirror.c.163.com"]
}
windows

找到你的docker安装目录进入\.docker,我这里装的是docker desktop

它不让选择地址,默认就是我的C:\Users\Administrator\.docker这个位置

编辑它就对了

我这里地址不一样哈

例子

安装软件

docker ps

可以看到我现在没有运行中的容易,好的

那我加一个容器

就拿redis来做例子吧

可以看到仓库中存在这些redis镜像

你可以选择某一个镜像进行下载,可以拉取

docker pull ~~~~~~~

我这里就直接一点直接运行

docker run -d -p 6379:6379 --name redis redis:latest

 可以看到redis直接给跑起来了,实际上你直接用docker run  它会检测你本地存不存在这个镜像,不存在它会pull拉取到你所指定的版本,存在就直接创建容器运行

目录挂载

volume挂载数据卷

我创建了一个为redis的数据卷

然后查询了这个数据卷的信息

docker run -d -p 6379:6379 --name redis-2 -v redis:/data redis:latest --appendonly yes --requirepass zkb.com

然后用可视化工具连接这个redis试试

可以看到连接成功,但是没有什么数据,数据卷里面肯定也是空的,那我们造点数据

docker exec -it redis-2 bashredis-cliauth zkb.comset zxs 123456get zxs

bind mount挂载主机目录

可以看到我们的宿主机是window操作系统

我在宿主机里面创建了  conf与data两个文件夹

conf里面创建了redis.conf配置文件

这个配置你们可以使用默认的也可以根据自己的实际情况配置

docker run -p 6379:6379 --name redis -v /E/docker/redis/conf:/etc/redis/redis.conf  -v /E/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

这样我们的宿主机挂载就成功了

这里主要说明一下,如果宿主机挂载的宿主机为window则需要把 你的盘符修改为   /你的盘名/~~

例如我挂载的目录在E盘   那么我的挂载路径应为

/E/docker/redis/conf:/etc/redis/redis.conf  -v /E/docker/redis/data:/data

 我们经常download别人工程是不是总是看到别人带了一个Dockerfile文件,是不是不明白它是干嘛的,别着急我来说说

 我这边就随便写个访问计数吧

然后我这个demo需要发布到docker里面,怎么搞

创建Dockerfile
# 设置基础镜像
FROM adoptopenjdk/openjdk11# 将JAR文件添加到镜像中
ADD target/demo1-0.0.1-SNAPSHOT.jar demo.jar# 定义容器启动命令
ENTRYPOINT ["java", "-jar", "/demo.jar"]

这边我就在本地pack了,那怎么执行这个Dockerfile呢

创建镜像
docker build -t demo-image .

 注意最后面的 “ .”  这个是不能忽略的

 

 已经做成镜像放到docker里面了哈

执行
docker run -d -p 6333:6333 demo-image

测试

已经ok了,当然我这里写的是最简单的Dockerfile

Docker-compose

当我们有多个服务,依赖又非常多,那么我们需要把这些服务聚合到一起,就需要写一个

docker-compose.yml

就如之前我们的控制面板,依赖了redis。。。。,那我们要把它集合到一起,就写了一个docker-compose.yml,当然也可以分开,你得提前做好容器直接的通讯,我这里只做例子

制作docker-compose.yml
version: '3'
services:redis:image: redis:latestrestart: alwaysweb:image: registry.cn-hangzhou.aliyuncs.com/seven-tao/simple-docker:0.0.7.1restart: alwaysports:- "9091:4050"volumes:- /tmp/simple-docker/back:/tmp/back- /var/run/docker.sock:/var/run/docker.sockdepends_on:- redis
执行docker-compose.yml
docker compose up -d

容器间通讯

都知道docker容器直接都是互相隔离的,应此容器之间无法ping信息,那么这些容器之间维护一套网络模式,是不是可以通讯呢

创建网络

docker network create zxs-net
docker run -d --name redis --network zxs-net --network-alias redis redis:latest

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

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

相关文章

在Spring Boot中使用Redis的发布订阅功能

Redis的发布订阅模式是一种消息传递模式,它允许多个订阅者订阅一个或多个频道,同时一个发布者可以将消息发布到指定的频道。这种模式在分布式系统中非常有用,可以解决以下问题: 实时消息传递:发布订阅模式可以用于实时…

接口测试到底怎么做,5分钟时间看完这篇文章彻底搞清楚

01、通用的项目架构 02、什么是接口 接口:服务端程序对外提供的一种统一的访问方式,通常采用HTTP协议,通过不同的url,不同的请求类型(GET、POST),不同的参数,来执行不同的业务逻辑。…

Debezium-Embedded 实时监控MySQL数据变更

1.Debezium-Embedded 简介 Debezium连接器的操作通常是将它们部署到Kafka Connect服务,并配置一个或多个连接器来监控上游数据库,并为它们在上游数据库中看到的所有更改生成数据更改事件。这些数据更改事件被写入Kafka,在那里它们可以被许多不…

【Mysql】Mysql内置函数介绍

🌈欢迎来到Python专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mys…

OpenLayer系列——【一】初识OpenLayer与OpenLayer视图操作

初识OpenLayer 1、初始化地图渲染 安装openlayer依赖 npm i ol首先准备一个容器用来渲染地图 <div id"map" ref"map" style"width: 100%; height: 100%" />导入依赖初始化地图 import ol/ol.css; import OSM from ol/source/OSM.js; …

QT使用Socket与安卓Socket互发消息

背景:安卓设备通过usb网络共享给Linux,此时安卓设备与linux处于同一网络环境,符合使用socket的条件,linux做客户端,安卓做服务端 1.QT使用Socket (1).在工程文件中加入 QT network (2).导包以及写一些槽函数用做数据传输与状态接收 #ifndef MAINWINDOW_H #define MAINWINDOW…

AI视频检索丨历史视频标签化,助力重要事件高效溯源

随着科技的不断发展&#xff0c;安全监控已成为我们生活中不可或缺的一部分。当发生盗窃、人员走失、安全事故等重要事件时&#xff0c;常常需要通过查看视频回放了解事情经过&#xff0c;为解决问题提供证据或指明查找方向。但是&#xff0c;人工查看视频回放往往费时费力&…

自定义GPT已经出现,并将影响人工智能的一切,做好被挑战的准备了吗?

原创 | 文 BFT机器人 OpenAI凭借最新突破&#xff1a;定制GPT站在创新的最前沿。预示着个性化数字协助的新时代到来&#xff0c;ChatGPT以前所未有的精度来满足个人需求和专业需求。 从本质上讲&#xff0c;自定义GPT是之前的ChatGPT的高度专业化版本或代理&#xff0c;但自定…

Freeswitch中mod_commonds

mod_commands Table of Contents (click to expand) 0. About1. Usage 1.1 CLI1.2 API/Event Interfaces1.3 Scripting Interfaces1.4 From the Dialplan2. Format of returned data3. Core Commands 3.1 acl  3.1.1 Syntax3.1.2 Examples3.2 alias 3.2.1 Syntax3.2.2…

基于springboot实现校园医疗保险管理系统【项目源码】

基于springboot实现校园医疗保险管理系统演示 系统开发平台 在线校园医疗保险系统中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编程。其…

立创EDA导出封装给PADS9.5使用

立创EDA导出封装给PADS9.5使用 前言 因为更换了新环境&#xff0c;需要使用PADS9.5进行电路设计&#xff0c;但是因为之前一直使用的是立创EDA、AD18&#xff0c;这会导致原先的元件库丢失&#xff0c;同时无法享受立创EDA丰富的封装库资源&#xff0c;因此记录一下如何将立创…

Linux控制---进程程序替换

前言&#xff1a;前面我们学洗了Linux进程退出的相关知识&#xff0c;了解了什么是进程退出&#xff0c;已经进程等待的相关话题&#xff0c;今天&#xff0c;我们来学习Linux中的进程程序替换&#xff0c;进程程序替换在Linux中可以用于实现新程序的启动、程序升级、多进程程序…

【数据结构高阶】二叉搜索树

接下来我们来开始使用C来详细讲解数据结构的一些高阶的知识点 本期讲解的是二叉搜索树&#xff0c;对于初阶二叉树有所遗忘的同学可以看到这里&#xff1a; 【精选】【数据结构初阶】链式二叉树的解析及一些基本操作 讲解二叉搜索树主要是为了后面的map和set做铺垫&#xff…

我记不住的getopt_long的那些参数和返回值

前言&#xff1a;最近在学习面向Linux系统进行C语言的编程&#xff0c;通过查询man手册和查看网络上的各种文章来获取一点点的知识&#xff0c;重点是看完手册还是一脸懵逼&#xff0c;搞不懂手册里面再说啥&#xff0c;而本篇文章将记录一下学习getopt_long的那些参数和返回值…

ElasticStack日志分析平台-ES 集群、Kibana与Kafka

一、Elasticsearch 1、介绍&#xff1a; Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;Logstash 和 Beats 收集的数据可以存储在 Elasticsearch 中进行搜索和分析。 Elasticsearch为所有类型的数据提供近乎实时的搜索和分析&#xff1a;一旦数据被索引&#…

0基础学习PyFlink——水位线(watermark)触发计算

在《0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows)》和《0基础学习PyFlink——个数滑动窗口&#xff08;Sliding Count Windows&#xff09;》中&#xff0c;我们发现如果窗口中元素个数没有把窗口填满&#xff0c;则不会触发计算。 为了解决长期不计算的问题&a…

PyCharm 【unsupported Python 3.1】

PyCharm2020.1版本&#xff0c;当添加虚拟环境发生异常&#xff1a; 原因&#xff1a;Pycharm版本低了&#xff01;不支持配置的虚拟环境版本 解决&#xff1a;下载PyCharm2021.1版本&#xff0c;进行配置成功&#xff01;

2023年,全球CIO最关注的问题是什么?

面对AI大潮&#xff0c;全球CIO们在焦虑什么&#xff1f;随着全球数字化转型步伐的加速&#xff0c;CIO的角色发生了哪些转变&#xff1f; 继2022年5月发布首份全球CIO报告之后&#xff0c;联想集团今年又发布了以“韧性的全球首席信息官&#xff08;The Resilient CIO&#xf…

python大数据毕设选题

文章目录 0 前言1 大数据毕设选题推荐2 开题指导3 最后 0 前言 大家好&#xff01;大四的同学们&#xff0c;毕业设计的时间即将到来&#xff0c;你们准备好了吗&#xff1f;为了帮助大家更好地开始毕设&#xff0c;我作为学长给大家整理了最新的计算机大数据专业的毕设选题。…

微信公众号与小程序打通:流量变现的新路径

随着移动互联网的迅速发展&#xff0c;微信公众号和小程序已经成为企业营销和运营的重要工具。将微信公众号与小程序打通&#xff0c;不仅可以提高用户体验&#xff0c;还能有效提升流量的变现效率。本文将为您解析如何打通微信公众号与小程序&#xff0c;让流量快速变现。 一、…