Docker容器的基本介绍及使用 每天5分钟玩转docker容器技术
wptr33 2024-11-12 14:20 18 浏览
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 &
相关推荐
- 【推荐】一款开源免费、美观实用的后台管理系统模版
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍...
- Android架构组件-App架构指南,你还不收藏嘛
-
本指南适用于那些已经拥有开发Android应用基础知识的开发人员,现在想了解能够开发出更加健壮、优质的应用程序架构。首先需要说明的是:AndroidArchitectureComponents翻...
- 高德地图经纬度坐标批量拾取(高德地图批量查询经纬度)
-
使用方法在桌面上新建一个index.txt文件,把下面的代码复制进去保存,再把文件名改成index.html保存,双击运行打开即可...
- flutter系列之:UI layout简介(flutter ui设计)
-
简介对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了。布局的英文名叫做layout,就是用来描述如何将组件进行摆放的一个约束。...
- Android开发基础入门(一):UI与基础控件
-
Android基础入门前言:...
- iOS的布局体系-流式布局MyFlowLayout
-
iOS布局体系的概览在我的CSDN博客中的几篇文章分别介绍MyLayout布局体系中的视图从一个方向依次排列的线性布局(MyLinearLayout)、视图层叠且停靠于父布局视图某个位置的框架布局(M...
- TDesign企业级开源设计系统越发成熟稳定,支持 Vue3 / 小程序
-
TDesing发展越来越好了,出了好几套组件库,很成熟稳定了,新项目完全可以考虑使用。...
- WinForm实现窗体自适应缩放(winform窗口缩放)
-
众所周知,...
- winform项目——仿QQ即时通讯程序03:搭建登录界面
-
上两篇文章已经对CIM仿QQ即时通讯项目进行了需求分析和数据库设计。winform项目——仿QQ即时通讯程序01:原理及项目分析...
- App自动化测试|原生app元素定位方法
-
元素定位方法介绍及应用Appium方法定位原生app元素...
- 61.C# TableLayoutPanel控件(c# tabcontrol)
-
摘要TableLayoutPanel在网格中排列内容,提供类似于HTML元素的功能。TableLayoutPanel控件允许你将控件放在网格布局中,而无需精确指定每个控件的位置。其单元格...
- 12个python数据处理常用内置函数(python 的内置函数)
-
在python数据分析中,经常需要对字符串进行各种处理,例如拼接字符串、检索字符串等。下面我将对python中常用的内置字符串操作函数进行介绍。1.计算字符串的长度-len()函数str1='我爱py...
- 如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步
-
假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将...
- Python入门知识点总结,Python三大数据类型、数据结构、控制流
-
Python基础的重要性不言而喻,是每一个入门Python学习者所必备的知识点,作为Python入门,这部分知识点显得很庞杂,内容分支很多,大部分同学在刚刚学习时一头雾水。...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
面试官:git pull是哪两个指令的组合?
-
git pull命令使用实例 git pull--rebase
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mysql max (33)
- vba instr (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)