从零开始的Docker [ 7 ] --- 顶级 Volumes,数据卷, 系统限制sysctls
文章目录
- 容器技术 Docker 应用
- 一、顶级 Volumes
- 1.配置
- 2.启动
- 二、数据卷 挂载
- 1.配置
- 2.启动
- 三、系统限制 sysctls
- 1.配置
- 2.启动
容器技术 Docker 应用
1. Dockerfile # 1 年内 肯定生产上会使用 90%FROM alpine # 构建自己镜像的一基础镜像LABEL key1=value1 # 给镜像添加元数据信息的ADD src dist # 把宿主机的文件,复制到镜像中,并且支持直接解压COPY src dist 通上,但是不支持自动解压,官方推荐WORKDIR dir # 指定了再构建镜像的时候的工作目录(切换执行命令时的当前目录)USER user_name # 是指定了在构建镜像过程中执行指令的用户,用户必须存在HEALTHCHECK test CMD 健康检查的 shell 命令 # 用于检查容器内部服务是否健康ONBUILD COPY . / # 当其他镜像以 此镜像作为基础镜像时,所要执行的命令ENTRYPOINT /docker-entrypoint.sh # 执行运行容器时候的默认命令,# 不会被覆盖掉CMD # 执行运行容器时候的默认命令或者参数,会被运行容器时候的命令覆盖掉# ENTRYPOINT CMD2. docker compose 生产上使用率 40%docker-compose 单机容器编排工具,不能跨主机k8s 多机集群的容器编排工具,可以跨主机docker-compose.yml
属性:
version: "3" # 版本号,不用的版本支持不同的属性
services:redis: # 声明的服务名,本质上是一个容器image: redis:alpine# build: ./dir # 指定了构建镜像的 Dockerfile 目录所在的位置ports:- "6379:6379" # 宿主机端口:容器端口command: redis-server # 执行的默认命令,一般不需要environment:key1: value1KEY2: value2healthcheck:test: CMD redis-cli ping && echo 0 || echo 1interval: 3stimeout: 4sretries: 3networks:- net1- net2networks:net1:net2:
一、顶级 Volumes
映射本地目录到容器目录下
1.配置
[root@Docker ~]# mkdir volumes
[root@Docker ~]# cd volumes/
[root@Docker volumes]# vim docker-compose.yml
[root@Docker volumes]# cat docker-compose.yml
version: "3.8"
services:web1:image: nginxvolumes:- type: bind # bind volume tmpfilesource: /root/volumes/nginx/index.htmltarget: /usr/share/nginx/html/index.html- type: bindsource: ./nginx/conf/default.conftarget: /etc/nginx/conf.d/default.conf[root@Docker volumes]# mkdir -p nginx/conf
[root@Docker volumes]# vim nginx/index.html
[root@Docker volumes]# cat nginx/index.html
Hello Neko
[root@Docker volumes]# ls
docker-compose.yml nginx[root@Docker volumes]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
78a5ad12a07d nginx "/docker-entrypoint.…" 2 days ago Exited (0) 2 days ago healthcheck_web1_1
[root@Docker volumes]# docker start 78a5ad12a07d
78a5ad12a07d
[root@Docker volumes]# docker cp 78a5ad12a07d:/etc/nginx/conf.d/default.conf .
[root@Docker volumes]# mv default.conf nginx/conf/
[root@Docker volumes]# vim nginx/conf/default.conf
server {listen 8000;server_name localhost;#charset koi8-r;#access_log /var/log/nginx/host.access.log main;...
2.启动
[root@Docker volumes]# docker-compose up -d
Creating volumes_web1_1 ... done
[root@Docker volumes]# docker-compose ps Name Command State Ports
----------------------------------------------------------------volumes_web1_1 /docker-entrypoint.sh ngin ... Up 80/tcp[root@Docker volumes]# docker-compose exec web1 bash
root@146364e0c842:/# curl 127.0.0.1:8000
Hello Neko
二、数据卷 挂载
1.配置
[root@Docker volumes]# docker-compose down -v
Stopping volumes_web1_1 ... done
Removing 0087e4120800_volumes_db_1 ... done
Removing volumes_web1_1 ... done
Removing network volumes_default
Removing volume volumes_mysql-data
[root@Docker volumes]# vim docker-compose.yml
[root@Docker volumes]# cat docker-compose.yml
version: "3.8"
services:web1:image: nginxvolumes:- type: bind # bind volume tmpfilesource: /root/volumes/nginx/index.htmltarget: /usr/share/nignx/html/index.html- type: bindsource: ./nginx/conf/default.conftarget: /etc/nginx/conf.d/default.confdb:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: Neko@123volumes:- type: volumesource: mysql-data # 只写定义过的数据卷名称target: /var/lib/mysql/
volumes:# 和定义networks 一样的格式,必须是字典格式mysql-data:
2.启动
[root@Docker volumes]# docker-compose up -d
Creating network "volumes_default" with the default driver
Creating volume "volumes_mysql-data" with default driver
Creating volumes_web1_1 ... done
Creating volumes_db_1 ... done[root@Docker volumes]# docker-compose psName Command State Ports
-----------------------------------------------------------------------------volumes_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
volumes_web1_1 /docker-entrypoint.sh ngin ... Up 80/tcp [root@Docker volumes]# docker volume ls
DRIVER VOLUME NAME
local 3fbd8f6afdcec11c486019c513121b26ed42334caf0b0e3c762a8bc6c0d88770
local 11d025419296b8ccaeae67385113b46b9230edbb1fb8624b0134b7b22017be6f
local 76b78a5277539b9ada1f16033975cb7a0d8829cef541b1ff5b2ad314f34b9ce8
local 82f4291404beeef9e51e9cb7e3605d2771777a4cedf5cf17b6d06513bd66be83
local 900449a326af023045ef9fa89e3dd6874ca7bf464f6ed0b69862a84938f75ef4
local aca694cb2beebfbc9af251586277f1bc69c378aa0d399e7af5047873b39eba0b
local d79295e6910700a3fc4bd99137d3f57a5c13dfe27e0a819a312651cb8d1ff58d
local mysql-data
local neko_vol
local volumes_mysql-data
三、系统限制 sysctls
1.配置
[root@Docker ~]# mkdir sysctls-ulimits
[root@Docker ~]# cd sysctls-ulimits/
[root@Docker sysctls-ulimits]# vim docker-compose.yml
[root@Docker sysctls-ulimits]# cat docker-compose.yml
version: "3.8"
services:web1:image: centosstdin_open: truetty: truesysctls: # 凡是之前通过 sysctl -w 设置的参数都可以在此设置net.core.somaxconn: 1024ulimits:nproc: 65535nofile:soft: 20000hard: 40000
2.启动
[root@Docker sysctls-ulimits]# docker-compose up -d
Creating network "sysctls-ulimits_default" with the default driver
Creating sysctls-ulimits_web1_1 ... done
[root@Docker sysctls-ulimits]# docker-compose psName Command State Ports
--------------------------------------------------sysctls-ulimits_web1_1 /bin/bash Up
[root@Docker sysctls-ulimits]# docker-compose exec web1 bash
[root@a59d34556450 /]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 11216
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 20000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 65535
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
从零开始的Docker [ 7 ] --- 顶级 Volumes,数据卷, 系统限制sysctls相关推荐
- Volumes 数据卷管理
文章目录 4. Volumes 数据卷管理 4.1 Volumes 数据卷的优势 4.2 Volumes 数据卷使用 4.2.1.创建并管理数据卷 1. 创建数据卷 2. 查看数据卷 3. 核查数据卷 ...
- docker 安装 基本命令操作 数据卷
docker 安装 基本命令操作 数据卷 docker docker安装 1.yum 包更新到最新 2.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是d ...
- docker入门实践之数据卷管理
在实际使用docker过程中,有时需要查看容器内应用产生的数据,或需要把容器内的数据进行备份,甚至是多个容器间需要共享数据,这势必涉及到数据管理,那么docker的数据怎么管理呢? 容器中数据管理主要 ...
- docker commit镜像以及数据卷技术
commit镜像 docker commit 提交容器成为一个新的副本# 命令和git类似 docker commit -m='提交的描述信息' -a='作者' 容器id 目标镜像名:[tag] 实战 ...
- 【Docker】7、数据卷详解:具名挂载、匿名挂载、初识DockerFile、数据卷容器
1.什么是容器数据卷? docker的理念回顾 将应用和环境打包成一个镜像! 如果数据都在容器中,那么容器删除,数据就会丢失!需求:数据可以持久化.如:MySQL,容器删除了,MySQL数据可以存储在 ...
- Docker的数据管理(数据卷、容器互联)
一.Docker下的数据管理 1.用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作. 2 ...
- docker入门,镜像,容器,数据卷,dockerfile,docker网络,springboot微服务打包docker镜像[狂神yyds]
docker学习大纲 docker概述 docker安装 docker命令 镜像命令 容器命令 操作命令 - docker镜像 容器数据卷 dockerfile docker网络原理 IDEA整合do ...
- 【Docker镜像原理容器数据卷】
文章目录 Docker镜像原理-commit镜像 一.镜像讲解 二.docker镜像加载原理 UnionFS (联合文件系统): 三.docker镜像分层 四.commit镜像 总结: 容器数据卷 五 ...
- Docker镜像、容器数据卷和Dockerfile
Docker镜像 概述 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. UnionFS ...
最新文章
- python第5天模块+包
- pte模拟考试_【PTE懒人攻略】如何在7天内通过PTE考试
- CODEVS.5037.线段树练习4加强版(分块 区间k的倍数)
- XDP(eXpress Data Path)防御DDoS攻击
- cf1555 E. Boring Segments
- Maven定制化打包后的包名(加入时间戳)
- C和混编混合编程----strcpy缓存溢出原理
- 大数据下的中国女人,看完惊呆了
- antd 能自适应吗_一种能自适应识别母线运行方式的备自投装置应用探讨
- 24种设计模式--命令模式【Command Pattern】
- another app is currently holding the yum lock;waiting for it to exit...
- 在运行hadoopdb\hive\hadoop源码时不能正确调用自定义core-site.xml等配置文件
- 16复变函数的积分(二)
- EVERTEC是如何利用大型机帮客户省钱?
- 汽车美容4s连锁店会员管理系统【源码分享】
- 传统密码学(三)——转轮密码机
- Android 跨平台技术对比
- ps照片人像油画复古效果怎么做
- Spring容器是怎么初始化的?
- 屏蔽跑跑卡丁车结束后的广告