docker基本命令学习 | Docker网络、Docker镜像发布

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


docker安装、卸载

docker安装使用

  • 卸载旧版本docker或者环境
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum remove docker \
>                   docker-client \
>                   docker-client-latest \
>                   docker-common \
>                   docker-latest \
>                   docker-latest-logrotate \
>                   docker-logrotate \
>                   docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
[root@iZf8zdcobr3fw7vn0p3538Z /]# 
  • 安装需要的安装包
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum install -y yum-utils
Complete!
  • 设置镜像仓库(配置阿里云镜像源)

官方镜像源(国外站点,国内不建议使用)

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

阿里云镜像源

yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum-config-manager \
>     --add-repo \
>     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
  • 更新yum软件包索引
[root@iZf8zdcobr3fw7vn0p3538Z /]# yum makecache fast
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base                                                                                     | 3.6 kB  00:00:00     
docker-ce-stable                                                                         | 3.5 kB  00:00:00     
epel                                                                                     | 4.7 kB  00:00:00     
extras                                                                                   | 2.9 kB  00:00:00     
updates                                                                                  | 2.9 kB  00:00:00     
(1/2): docker-ce-stable/7/x86_64/updateinfo                                              |   55 B  00:00:00     
(2/2): docker-ce-stable/7/x86_64/primary_db                                              | 102 kB  00:00:00     
Metadata Cache Created
  • 安装docker
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

[root@iZf8zdcobr3fw7vn0p3538Z /]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Complete!
  • 运行docker
[root@iZf8zdcobr3fw7vn0p3538Z /]# systemctl start docker
  • 检查docker版本
[root@iZf8zdcobr3fw7vn0p3538Z /]# docker version
Client: Docker Engine - CommunityVersion:           23.0.3API version:       1.42Go version:        go1.19.7Git commit:        3e7cbfdBuilt:             Tue Apr  4 22:04:18 2023OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          23.0.3API version:      1.42 (minimum version 1.12)Go version:       go1.19.7Git commit:       59118bfBuilt:            Tue Apr  4 22:02:01 2023OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.20GitCommit:        2806fc1057397dbaeefbea0e4e17bddfbd388f38runc:Version:          1.1.5GitCommit:        v1.1.5-0-gf19387adocker-init:Version:          0.19.0GitCommit:        de40ad0
  • 运行hello word检查docker是否安装成功
[root@iZf8zdcobr3fw7vn0p3538Z /]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:4e83453afed1b4fa1a3500525091dbfca6ce1e66903fd4c01ff015dbcb1ba33e
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/
  • 查看镜像
[root@iZf8zdcobr3fw7vn0p3538Z /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   18 months ago   13.3kB

docker卸载

  • 卸载 Docker Engine、CLI、containerd 和 Docker Compose 软件包
yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
  • 删除所有映像、容器和卷
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

阿里云镜像加速

在这里插入图片描述

  • 配置使用
#创建目录
sudo mkdir -p /etc/docker#配置阿里云地址
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://gp2nlhk0.mirror.aliyuncs.com"]
}
EOF#重启镜像
sudo systemctl daemon-reload#重启docker
sudo systemctl restart docker
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo mkdir -p /etc/docker
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://gp2nlhk0.mirror.aliyuncs.com"]
> }
> EOF
{"registry-mirrors": ["https://gp2nlhk0.mirror.aliyuncs.com"]
}
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo systemctl daemon-reload
[root@iZf8zdcobr3fw7vn0p3538Z /]# sudo systemctl restart docker

帮助命令

镜像命令解释
docker versiondocker info
docker info显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help帮助命令

镜像命令

镜像命令解释
dokcer images查看所有本地的主机上的镜像
docker search搜索镜像
docker pull下载镜像
docker rmi删除镜像

容器命令

docker run [可选参数] image 新建容器并启动

可选参数解释
–name=“name”容器名字:用来区分容器
-d后台方式运行:相当于nohup
-it使用交互式运行:进入容器查看内容
-p指定容器的端口(四种方式)小写字母p
-pip:主机端口:容器端口
-p主机端口:容器端口
-p容器端口
-P随机指定端口(大写字母P)
exit从容器中退回到主机
容器命令解释
docker ps列出所有运行的容器
docker rm 容器id删除容器
docker rm -f 容器id强制删除
docker rm -f $(docker ps -aq)删除全部容器
docker ps -a -q xargs docker rm删除所有容器
docker start 容器id启动容器
docker restart 容器id重启容器
docker stop 容器id停止当前正在运行的容器
docker kill 容器id强制停止当前容器
docker run -d 镜像名后台启动容器
docker logs -tf --tail 容器id查看日志
-tf显示日志
–tail number要显示的日志条数
docker top 容器id查看容器中进程的信息
docker inspect 容器id查看镜像的元数据
docker exec -it 容器id /bin/bash进入当前正在运行的容器
docker attach 容器id进入当前正在运行的容器
docker cp 容器id:容器内路径 目的主机的路径从容器内拷贝文件到主机上

可视化portainer

Docker图形化界面管理工具,提供一个后台面板供我们操作

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

Docker镜像

在这里插入图片描述

UnionFS(联合文件系统)

Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,Union 文件系统是Docker 镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像

Commit镜像

提交容器成为一个新的副本

docker commit

命令和git原理类似

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

容器数据卷

数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

默认路径:/var/lib/docker/volumes/xxxx/_data

容器数据卷

docker run -it -v 主机目录:容器内目录 镜像名 /bin/bash

测试,查看容器信息

docker inspect 容器id

数据卷容器

数据容器卷的内容会随着容器的删除而被删除;数据卷是供容器使用的特殊目录,可以实现数据在宿主机与容器之间的迁移,而数据容器卷的修改操作只能在挂载它的容器中可见,不会影响到宿主机

实现两个容器数据同步

docker run -d -p 7777:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
docker run -d -p 7777:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

具名挂载、匿名挂载

具名挂载、匿名挂载:区分

-v 容器内的路径                			# 匿名挂载
-v 卷名:容器内的路径        			  # 具名挂载
-v /宿主机路径:容器内路径    				# 指定路径挂载

通过: -v [容器内的路径]:ro或rw 改变读写权限

docker run -d -p 3344:80 --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
#只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作

DockerFile

在这里插入图片描述

  • 编写一个dockerfile文件
  • docker build 构建成为一个镜像
  • docker run运行镜像
  • docker push发布镜像(DockerHub、阿里云镜像仓库)
  • FROM # 基础镜像,一切从这里开始构建
  • MAINTAINER # 镜像是谁写的:姓名+邮箱
  • RUN # 镜像构建的时候需要运行的命令
  • ADD # 步骤:tomcat镜像,这个tomcat压缩包!添加内容
  • WORKDIR # 镜像的工作目录
  • VOLUME # 挂载的目录
  • EXPOSE # 暴露端口配置
  • CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
  • ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
  • ONBUILD # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令。触发指令。
  • COPY # 类似ADD,将我们文件拷贝到镜像中
  • ENV # 构建的时候设置环境变量!

在这里插入图片描述

CMD和ENTRYPOINT

  • CMD:指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
  • ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令

镜像发布

DockerHub

  • docker login -u 用户名

  • docker push 账号id/tomcat:1.0

阿里云镜像仓库

  • $ docker login --username=aliyun9721004936 registry.cn-qingdao.aliyuncs.com
  • $ docker tag [ImageId] registry.cn-qingdao.aliyuncs.com/weishuo-student/weishuo-study:[镜像版本号]
  • $ docker push registry.cn-qingdao.aliyuncs.com/weishuo-student/weishuo-study:[镜像版本号]

Docker网络

在这里插入图片描述

Docker网络是Docker容器之间和容器与主机之间通信的机制。Docker提供了多种网络模式,使得容器可以相互通信,也可以与主机进行通信。

以下是Docker支持的网络模式:

  • 桥接模式:默认模式,每个容器都有自己的IP地址,并且可以通过容器名称或IP地址相互访问。
  • 主机模式:容器和主机共享同一个网络命名空间,容器使用主机的IP地址和端口。
  • none模式:容器没有网络接口,只能通过主机进行访问。
  • Overlay模式:用于跨主机容器通信的网络模式,使用VXLAN技术实现
Docker网络基础命令
docker network ls列出所有 Docker 网络
docker network create创建一个新的 Docker 网络
docker network connect将容器连接到指定的 Docker 网络
docker network disconnect将容器从指定的 Docker 网络中断开连接
docker network inspect查看指定 Docker 网络的详细信息
docker network rm删除指定的 Docker 网络
docker network prune删除所有未被使用的 Docker 网络

evth-pair

evth-pair是Linux内核中的一种虚拟网络设备,它通常用于将两个网络命名空间连接起来,以便容器或虚拟机可以直接通信;evth-pair设备由一对虚拟网络接口组成,它们被视为一条虚拟电缆,数据可以从一个接口传输到另一个接口;当一个接口收到数据包时,它将数据包传输到它的对等接口,然后对等接口将数据包传输到目标设备;

–link

--link是Docker命令中的一个选项,用于连接两个容器并创建一个安全的隧道。使用--link选项,您可以将一个容器连接到另一个容器,并将源容器中的环境变量传递到目标容器中。这使得容器之间可以直接通信,而无需暴露它们的端口给外部网络

  • [服务名1] ping [服务名2]
docker run exec -it --link [服务名1] [服务名2] 

自定义网络

  • bridge:桥接 docker(默认,自己创建也使用bridge桥接模式)
  • none:不配置网络
  • host:和主机共享网络
  • container:容器网络连通
docker network connect [options] network container

Docker部署Redis集群

Docker部署Springboot微服务

  • 创建Springboot项目(运行成功Hello,World!)
  • 项目打包

在这里插入图片描述

在这里插入图片描述

  • 测试jar包是否可用(进入项目命令cmd执行)

在这里插入图片描述

  • 拷贝jar包到Dokerfile同级目录;编写Dokerfile文件

在这里插入图片描述

  • 使用xftp工具将Dockerfile和jar包传到服务器

在这里插入图片描述

在这里插入图片描述

  • 构建镜像
docker build -t weishuo .

在这里插入图片描述

  • 运行镜像
[root@iZf8zdcobr3fw7vn0p3538Z idea]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
weishuo      latest    dd147b2cb2ea   3 minutes ago   661MB
[root@iZf8zdcobr3fw7vn0p3538Z idea]# docker run -d -P --name springboot-web weishuo
f6f184183f020a8e5033933bc716448318f0c352ba8eab832dc4c386fec66d31

在这里插入图片描述

  • 测试
[root@iZf8zdcobr3fw7vn0p3538Z idea]# curl localhost:32771
Hello,World!

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述

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

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

相关文章

混合云:降本增效,云计算的未来趋势,企业数字化转型的王道!

随着云计算技术的不断发展&#xff0c;云计算已经成为了企业信息化的主流趋势&#xff0c;而混合云则是云计算领域发展的一个新方向。混合云指的是将公有云和私有云相结合&#xff0c;构建一种新的云计算模式。本文将从混合云的定义、特点、优势以及应用场景等方面进行阐述&…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 三)

Link装饰器&#xff1a;父子双向同步 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。 概述 Link装饰的变量与其父组件中的数据源共享相同的值。 装饰器使用规则说明 Link变量装饰器 说明 装饰器参数 无 同步类型 双向同步。 父组件中State, Stor…

语音合成是什么?如何进行语音合成TTS数据采集?

我们在上一篇讲到语音数据采集分为常见的两种语音数据采集类型&#xff0c;一个是语音识别数据&#xff08;ASR&#xff09;&#xff0c;另一个是语音合成&#xff08;TTS&#xff09;。这一期中&#xff0c;我们将介绍语音合成技术是什么&#xff0c;如何采集语音合成数据和制…

亚马逊店铺的回款周期是多久?

现如今&#xff0c;开亚马逊店铺可是一个技术活&#xff0c;一旦有一个环节&#xff0c;或者是一件事情没有做好&#xff0c;对整个亚马逊店铺过程中影响都是十分巨大的&#xff0c;不少亚马逊卖家就吃过这方面的亏。 很多亚马逊卖家就是吃亏在这些方面&#xff0c;现在要想开…

OpenAI的提供的Model简要介绍

OpenAI提供的model 通过OpenAI的接口可以查看所有支持的模型(目前的账号无GPT4的权限&#xff0c;所以没有列举GPT4相关的模型)。 import os import openai import pandas as pd from IPython.display import displayopenai.api_key os.getenv("OPENAI_API_KEY")…

瀑布流布局columns

瀑布流布局其核心是基于一个网格的布局&#xff0c;而且每行包含的项目列表高度是随机的&#xff08;随着自己内容动态变化高度&#xff09;&#xff0c;同时每个项目列表呈堆栈形式排列&#xff0c;最为关键的是&#xff0c;堆栈之间彼此之间没有多余的间距差存大。还是上张图…

【UI自动化测试】Jenkins配置

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

Django系列之DRF简单使用

基于ModelViewSets的简单使用 models.py from django.db import modelsclass AuthorDetail(models.Model):gender models.CharField(max_length8)birthday models.DateField()telephone models.BigIntegerField()addr models.CharField(max_length64)class Author(models…

FPGA项目设计:数字时钟

项目要求&#xff1a; 设计一个数字时钟&#xff0c;数码管前两位显示小时&#xff0c;数码管中间两位显示分钟&#xff0c;数码管后面两位显示秒。 项目设计&#xff1a; 系统框架图&#xff1a; 计数模块时序图&#xff1a; 代码实现&#xff1a; 计数模块&#xff1a; /…

AndroidStudio查看AOSP的两种方法

作者&#xff1a;利维亚的杰洛特 本篇文章主要分享一些自己平时工作中使用AndroidStudio查看aosp的方法&#xff0c;同时抛砖引玉&#xff0c;希望知道其它便利有效的查看调试方式技巧的大佬们能够不吝赐教&#xff0c;大家互相分享&#xff0c;共同进步。 如果直接用AndroidS…

解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起

新搭建的一个Hadoop环境&#xff0c;用Sqoop批量抽数的时候发现特别慢&#xff0c;我们正常情况下是一个表一分钟左右&#xff0c;批量抽十几个表&#xff0c;也就是10分钟的样子&#xff0c;结果发现用了2个小时&#xff1a; 查看yarn日志 发现有如下情况&#xff1a; 主要有两…

【iOS】GCD深入学习

关于GCD和队列的简单介绍请看&#xff1a;【iOS】GCD学习 本篇主要介绍GCD中的方法。 栅栏方法:dispatch_barrier_async 我们有时候需要异步执行两组操作&#xff0c;而且第一组操作执行完之后&#xff0c;才能开始执行第二组操作&#xff0c;当然操作组里也可以包含一个或者…

HTTP——一、了解Web及网络基础

HTTP 一、使用HTTP协议访问Web二、HTTP的诞生1、为知识共享而规划Web2、Web成长时代3、驻足不前的HTTP 三、网络基础TCP/IP1、TCP/IP协议族2、TCP/IP的分层管理3、TCP/IP 通信传输流 四、与HTTP关系密切的协议&#xff1a;IP、TCP和DNS1、负责传输的 IP 协议2、确保可靠性的TCP…

Gartner:2022年全球IaaS公有云服务市场增长30%,首次突破1000亿美元

根据Gartner的统计结果&#xff0c;2022年全球基础设施即服务&#xff08;IaaS&#xff09;市场从2021年的928亿美元增长到1203亿美元&#xff0c;同比增长29.7%。亚马逊在2022年继续排在IaaS市场的第一名&#xff0c;其次是微软、阿里巴巴、谷歌和华为。 最新消息&#xff0c;…

制砖机系统比例控制阀放大器

制砖机系统是一种生产砖块的机器设备系统。该系统由多个部分组成&#xff0c;包括压力系统、模具和振动系统、烘干和烧制系统等。压力系统是制砖机的主要组成部分之一&#xff0c;它通过压力将原料压缩成一定形状和尺寸的块状&#xff0c;然后经过烘干和烧制等步骤&#xff0c;…

解决单节点es索引yellow

现象 单节点的es&#xff0c;自动创建索引后&#xff0c;默认副本个数为1&#xff0c;索引状态为yellow 临时解决 修改副本个数为0 永久解决 方法1、修改elasticsearch.yml文件&#xff0c;添加配置并重启es number_of_replicas&#xff1a;副本分片数&#xff0c;默认…

【数据结构】——线性表的相关习题

目录 题型一&#xff08;顺序表的存储结构&#xff09;题型二&#xff08;链表的判空&#xff09;题型三&#xff08;单链表的建立&#xff09;题型四&#xff08;顺序表、单链表的插入删除&#xff09; 题型一&#xff08;顺序表的存储结构&#xff09; 1、线性表的顺序存储结…

解决Git下载失败太慢

解决Git下载失败太慢 Git 官网下载地址: https://git-scm.com/downloads Windows 下载地址: https://git-scm.com/download/win 用官网的地址下载, 需要从github上下载, 由于国内某些原因, 下载速度缓慢, 还经常失败. 国内用户, 可以通过镜像的方式, 提高下载速度. 阿里镜…

Linux - 进程地址空间

引入 在学习C语言的时候&#xff0c;内存包括栈区、堆区、静态区 这个布局是内存吗&#xff1f; 不是&#xff01;&#xff01; 这是进程地址空间&#xff01; 下面测试一下&#xff1a; 11540是bash进程 我们修改一下源程序&#xff0c;在观察下结果 发现父进程的g_value的值不…

gitee修改代码提交操作步骤说明

一&#xff0c;简介 本文主要介绍如何从gitee仓库下载文件&#xff0c;本地修改&#xff0c;本地提交&#xff0c;然后再push到远程服务器的操作步骤。供参考&#xff0c;欢迎一起讨论交流~ 二&#xff0c;操作步骤 总的操作步骤分为以下几步 1&#xff0c;远程服务器下载文…