网站首页 > 技术文章 正文
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 &
- 上一篇: Docker 容器明文密码问题解决之道
- 下一篇: 目前发现的一些有趣的docker容器—第十六期
猜你喜欢
- 2024-12-16 Docker容器的导出与导入实操 docker容器导出文件
- 2024-12-16 目前发现的一些有趣的docker容器—第十六期
- 2024-12-16 Docker 容器明文密码问题解决之道
- 2024-12-16 NAS的神级Docker推荐:从入门到精通的完全指南
- 2024-12-16 Docker容器最全详解(万字图文总结)
- 2024-12-16 5段话3张图,带你了解Docker基本概念
- 2024-12-16 Docker:Windows与Linux Container
- 2024-12-16 Docker容器最全详解(图文全面总结)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)