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

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

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

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 &

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...