百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Docker容器的基本介绍及使用 每天5分钟玩转docker容器技术

wptr33 2024-11-12 14:20 26 浏览

docker 概念

Docker镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变

Docker仓库:放docker镜像的地方,官方的Docker Hub,默认的仓库 Docker容器:镜像创建出来的容器

docker基本命令

//脚本一键安装 centos8预安装了podman,会和docker冲突(这个方式不行了)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

//1.更新系统
sudo yum update
//2.添加Docker存储库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo
//3.安装docker-ce
sudo yum -y install docker-ce docker-ce-cli containerd.io
//4.启动docker服务
sudo systemctl start docker


//查看docker容器
docker ps -a/docker container ls 

//查看command命令
docker ps -a --no-trunc

//检查容器详细信息
docker inspect <id>

//几种状态
created(已创建)
restarting(重启中)
running 或 Up(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)

//查找镜像,https://hub.docker.com
docker search centos

//dockerhub是docker官方维护的公共仓库,登录登出命令
docker login
docker logout

//拉取镜像
docker pull centos

//删除镜像
docker rmi centos

//查看已拉取的镜像
docker images/docker image ls

//运行容器
//后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself
docker run -it centos /bin/bash
docker run -d -p 8088:8080 docker-demo:latest
-i: 交互式操作
-t: 终端
-e:设置环境变量
-p:发端容器端口到宿主机
-P:发布所有端口到宿主机
-d: 后台运行,不进入容器
//注意:重复的使用上面的命令使用同一镜像进入容器,他会创建多个容器出来

//启动、停止、重启容器
docker start\stop\restart 容器ID

//停止所有容器
docker stop $(docker ps -a -q)

//停止某个镜像的容器
docker stop $(docker ps -a -q --filter ancestor=docker-demo)

//后台运行容器
docker run -itd centos /bin/bash
-d: 后台运行,不进入容器。

//进入后台启动的容器
//attach退出,会导致容器的停止。
docker attach/exec 容器ID

docker exec -it 3cf19d35b7c0 /bin/bash

//导出容器(只能导容器,里面的持久化数据导不了)
docker export 容器ID > test.tar

//导入容器快照到镜像
cat test.tar | docker import - test:v1

注意:启动导入的容器需要指定command,加到末尾

//删除容器
docker rm -f 容器ID

//拉取网站的web应用
docker pull training/webapp  # 载入镜像
docker run -d -P training/webapp python app.py
-P:将容器内部使用的网络端口随机映射到我们使用的主机上。

//查看 WEB 应用程序日志,-f效果和tail -f一样
docker logs -f 容器ID


//查看docker运行状态
docker stats

docker volume命令

docker volume 命令用于管理 Docker 卷(volume)。卷是用于持久化数据的文件系统,可以在容器之间共享和重用,保证了容器存储层的无状态化

docker volume ls: 列出所有卷
docker volume inspect my_volume: 查看卷的详细信息
docker volume create my_volume: 创建一个新卷
docker volume create --name my_volume --label project=my_project
docker volume rm my_volume volume2: 删除一个或多个卷
docker volume prune: 删除未使用的卷

docker网络模型

host 网络模式

直接使用宿主机的 IP 地址与外界进行通信,若宿主机的 eth0 是一个公有 IP,那么容器也拥有这个公有 IP。同时容器内服务的端口也可以使用宿主机的端口,无需额外进行 NAT 转换;

bridge 网络模式

Docker 守护进程创建了一个虚拟以太网桥 docker0,新建的容器会自动桥接到这个接口,附加在其上的任何网卡之间都能自动转发数据包。

//查看网络
docker network ls

//新建网络(类似组件局域网,容器之间能ping通)
docker network create -d bridge test-net
-d:参数指定 Docker 网络类型,有 bridge、overlay。

//为该网络添加容器
docker run -itd --name test1 --network test-net centos /bin/bash



//将web容器和mysql容器加到同一网络,实现互联(在web中mysql的连接要使用mysql的名称)
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password --network test-net -d mysql:8.0.30

//将web项目打包成docker镜像的操作步骤可以去百度
docker run -itd -p 8081:7999 --name msg_manager --network test-net test/msg_manager /bin/bash

docker run -itd -p 7999:7999 --name msg_manager --add-host=mysql:127.0.0.1  boykacheng/msg_manager_rpo:v1 /bin/bash




//从容器创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

//向dockerhub推送我们的web镜像
//tag修改镜像名称,推送镜像的规范是:
docker push  注册docker用户名/REPOSITORY:TAG 

docker tag test/msg_manager:latest boykacheng/msg_manager_rpo:v1

docker push boykacheng/msg_manager_rpo:v1

无状态应用指的是应用在容器中运行时候不会在容器中持久化存储数据,应用容器可以随意创建、销毁;如果一个应用有多个容器实例,对于无状态应用,请求转发给任何一个容器实例都可以正确运行。例如:web应用

有状态应用指的是应用在容器中运行时候需要稳定的持久化存储、稳定的网络标识、固定的pod启动和停止次序。例如:mysql数据库

关闭docker

1.停止所有运行中的容器

docker stop $(docker ps -aq)

2.重启容器镜像服务

sudo systemctl daemon-reload
sudo systemctl restart docker

docker-compose的安装

curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose


//要安装其他版本的 Compose,请替换 v2.2.2
https://link.zhihu.com/?target=https%3A//github.com/docker/compose/releases






nohup curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose >install.log 2>&1 &

相关推荐

Python自动化脚本应用与示例(python办公自动化脚本)

Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作...

Python文件操作常用库高级应用教程

本文是在前面《Python文件操作常用库使用教程》的基础上,进一步学习Python文件操作库的高级应用。一、高级文件系统监控1.1watchdog库-实时文件系统监控安装与基本使用:...

Python办公自动化系列篇之六:文件系统与操作系统任务

作为高效办公自动化领域的主流编程语言,Python凭借其优雅的语法结构、完善的技术生态及成熟的第三方工具库集合,已成为企业数字化转型过程中提升运营效率的理想选择。该语言在结构化数据处理、自动化文档生成...

14《Python 办公自动化教程》os 模块操作文件与文件夹

在日常工作中,我们经常会和文件、文件夹打交道,比如将服务器上指定目录下文件进行归档,或将爬虫爬取的数据根据时间创建对应的文件夹/文件,如果这些还依靠手动来进行操作,无疑是费时费力的,这时候Pyt...

python中os模块详解(python os.path模块)

os模块是Python标准库中的一个模块,它提供了与操作系统交互的方法。使用os模块可以方便地执行许多常见的系统任务,如文件和目录操作、进程管理、环境变量管理等。下面是os模块中一些常用的函数和方法:...

21-Python-文件操作(python文件的操作步骤)

在Python中,文件操作是非常重要的一部分,它允许我们读取、写入和修改文件。下面将详细讲解Python文件操作的各个方面,并给出相应的示例。1-打开文件...

轻松玩转Python文件操作:移动、删除

哈喽,大家好,我是木头左!Python文件操作基础在处理计算机文件时,经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务,其中最常用的就是os模块和shutil模块。...

Python 初学者练习:删除文件和文件夹

在本教程中,你将学习如何在Python中删除文件和文件夹。使用os.remove()函数删除文件...

引人遐想,用 Python 获取你想要的“某个人”摄像头照片

仅用来学习,希望给你们有提供到学习上的作用。1.安装库需要安装python3.5以上版本,在官网下载即可。然后安装库opencv-python,安装方式为打开终端输入命令行。...

Python如何使用临时文件和目录(python目录下文件)

在某些项目中,有时候会有大量的临时数据,比如各种日志,这时候我们要做数据分析,并把最后的结果储存起来,这些大量的临时数据如果常驻内存,将消耗大量内存资源,我们可以使用临时文件,存储这些临时数据。使用标...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

Python 开发工程师必会的 5 个系统命令操作库

当我们需要编写自动化脚本、部署工具、监控程序时,熟练操作系统命令几乎是必备技能。今天就来聊聊我在实际项目中高频使用的5个系统命令操作库,这些可都是能让你效率翻倍的"瑞士军刀"。一...

Python常用文件操作库使用详解(python文件操作选项)

Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能...

11. 文件与IO操作(文件io和网络io)

本章深入探讨Go语言文件处理与IO操作的核心技术,结合高性能实践与安全规范,提供企业级解决方案。11.1文件读写11.1.1基础操作...

Python os模块的20个应用实例(python中 import os模块用法)

在Python中,...