docker

1.docker安装

1.安装docker

2.配置docker加速器

3.docker的基本目录

/etc/docker/ docker的认证目录

/var/lib/docker/ docker的应用目录

2.docker容器

docker image pull nginx
docker container stop nginx
docker container rm $(docker container ps -aq) #q: --quiet Only display container IDs
docker system prune -a -f
docker container run -p 80:80 nginx
docker container run -d -p 80:80 nginx
# 创建一个容器并进入交互式模式
docker container run -it nginx sh # i :-interactive
#在一个已经运行的容器里执行一个额外的command
docker container exec -it 容器id sh
#安装pstree
pip install psmisc
ps -aef  --forest
pstree -halps 7718


docker container 命令 #默认省略container
docker ps 
docker run -d nginx
docker start 容器id
docker stop 容器id
#删除某个容器id
docker rm 容器id 
#取出所有停止的容器
docker container prune  
#强制删除正在容器
docker rm -f 容器id
#删除部分容器
docker container prune --filter 'until=24h'
#批量删除
docker rm -f ${docker ps -a -q} 

#创建容器并进入容器
docker run --name 容器名称 -it 镜像名称 /bin/bash
#进入容器
docker exec -it 容器id /bin/bash
#基于容器创建镜像
docker commit -m '改动信息' -a '作者' 容器id 镜像名称:标签名称
#查看日志
dockerlogs 容器id
#查看容器信息
docker inspect 容器id
#查看容器的网络信息
docker inspect --format='{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器id
操作命令(全)命令(简)
容器的创建docker container run docker run
容器的列出(up)docker container lsdocker ps
容器的列出(up和exit)docker container ls -adocker ps -a
容器的停止docker container stop docker stop
容器的删除docker container rm docker rm

3.docker镜像

#搜索镜像
docker search unbuntu
#拉取镜像
docker pull unbuntu
#列举出所有镜像,-a包括删除的
docker images -a
#查看镜像历史命令格式
docker history 镜像名称
#镜像重命名
docker tag [old_iamge]:[old_version] [new_image]:[new_version]
#删除镜像
docker rmi 镜像id
#清除状态为dangling的镜像
docker image prue
#移除所有未被使用的镜像
docker image prune -a
#移除所有未被使用的镜像
docker image prue -a --filter 'until=24h'
#镜像导出
docker save -o nginx.tar 镜像名称
#导入镜像
docker load < 镜像包名称

4.dockerfile

1.每一行的RUN命令都会产生一层image layer, 导致镜像的臃肿

2.ADD和COPY目标目录不存在都会自动创建 ,ADD自动去解压缩文件

3.ENV设置的变量可以保存在image中和容器中

4.ARG 可以在镜像build的时候动态修改value, 通过 --build-arg

5.容器启动命令 CMD,容器启动时默认执行的命令, 启动容器时指定了其它命令,则CMD命令会被忽略

6.entrypoint用于设置执行的命令,cmd传递参数

7.建议使用exec的列表格式可以使用env环境变量

8.尽量使用非root用户

docker build -t 镜像名称:版本号 -f dockerfile文件名 所在目录
docker build -t mycorn:v1   -f Dockerfile_corn .

5.docker的存储

data volume

#创建数据卷
docker run -itd --name 容器名称 -v 宿主机目录:容器目录 镜像名称
docker volume rm
docker volume prue
#创建一个数据卷容器
docker create -v 容器目录 --name 容器名称 镜像名称
#创建两个容器,同时挂载数据卷容器
docker run --volumes-form 数据卷容器id/name -tid --name 容器名称 镜像名称


bind mount


6.docker网络

docker 容器的网络有四种模式:

网络模式简介
Bridge(默 认模式)此模式会为每一个容器分配、设置 IP 等,并将容器连接到一个 docker0 虚拟网 桥,通过 docker0 网桥以及 Iptables nat 表配置与宿主机通信。
Host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的 IP 和端口
Container 创建的创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP,端口范围。
None该模式关闭了容器的网络功能,与宿主机、与其他容器都不连通的.
# -P(大写) 随机端口映射
自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中自动随机选择,但是如果连续启动多个容器的话,则下一个容器的端口默认是当前容器占用端口号+1
docker run -d -P 镜像名称
# -p(宿主机端口:容器端口) 指定映射
# docker run -d -p [宿主机ip]:[宿主机端口]:[容器端口] --name [容器名字] [镜像名称]
docker run -d -p 19.168.8.14:80 --name nginx-2 nginx

#查看宿主机端口
netstat -tunlp | grep docker-proxy
#traceroute命令
tracepath www.baidu.com
#curl命令

#查看容器间的网络
docker network ls
#用户自定义网桥
docker network create 网桥名称
#将容器连接到用户定义的网桥中
docker network connect 网桥名称 容器名称
#查看具体网络信息
docker network inspect bridge
#筛选出容器的ip
docker inspect --format='{{.NetworkSettings.IPAdrress}}' nginx_bridge
#安装brctl
yum install -y bridge-utils
#查看bridge信息
brctl show
#添加网络命名空间
ip netns add 空间名


ip link add veth-ns1 type veth peer name eth00-ns1
ip link set eth00-ns1 netns ns1
ip netns exec ns1 ip addr add 172.16.1.1/16 dev eth00-ns1
ip netns exec ns1 ip link set eth00-ns1 up
#把veth-ns1这个bridge up起来
ip link set veth-ns1 up
brctl addif mydocker0  veth-ns1

#创建网桥
brctl addr mydocker0

#查看路由
ip route
#查看iptable转发规则
iptables --list -t nat
#查看iptables的端口转发规则
iptables -t nat -nvxl

在这里插入图片描述

网络知识补充NAT

在这里插入图片描述

7.docker compose

1.安装

pip install docker-compose

2.compose文件的结构和版本

veseion: "3.8"
services: '容器'
  servicename1: '服务器名称'
    image: '镜像名称'
    command: '可选,默认覆盖镜像里的CMD命令'
    environment: '可选,相当于docker run 里的-env'
    volumes: '可选,相当于 docker run 里的 -v'
    networks: '可选,相当于 docker run 里 --network'
    ports: '#可选,相当于 docker run里的-p'
  servicename2:
    build:
      context: '指定Dockerfile文件所在的目录'
      docekerfile: 'Dockerfile文件名'
      args:
        参数名: 参数值
    container_name: '默认将会使用 项目名称_服务名称_序号 这样的格式,注意::指定容器名称后,该服务将无法进行扩展(scale),因为Docker不允许多个容器具有相同的名称'
    depends_on:
      - servicename1
    env_file: .env
    environment:
      RACK_ENV: development
    expose:
      - "3000"
      - "8000"
    network_mode: "bridge"
    networks:
      some-network:
       ipam :
       		drive: default
       		config:
       			- sububet "'172.16.0.0.1/16'"
      other-network:
    ports:
      - "3000"
    volumes:
      - /var/lib/mysql
    restart: always
    security_opt:
      - seccomp:unconfined #指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)
    logging: #日志选项
      driver: "json-file"
      options:
        max-size: "500m"


  volumes: '可选 相当于docker volumes create'
  networks: '可选 相当于 docker network create'

3.docker-compose基本命令

docker-compose -f docker-compose.yml -p project
docker-compose build 服务名称 
docker-compose config #检查docker-compose.yml文件格式是否正确
docker-compose down
docker-compose up
docker-compose images #查看compose中包含的镜像
docker-compose pull #拉取服务所依赖的镜像
docker-compose restart #重启项目中的服务
docker-compose  run 容器名称 ping 服务名称 #在指定服务器启动一个容器,并执行ping docker.com
docker-compose run -d --name 名称 -e key=val -u user名
docker-compose scale 容器1=3 容器2=2 #容器1启动3个,容器2启动2个
docker-compose start 服务名称
docker-compose stop
docker-compose run
docker-compose up

4.容器的健康检查

dockerfile

HEALCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:5000 || exit 1

compose.yaml

healthcheck:
	test: ["CMD","curl","-f","http://localhost"]
	interval: 1m30s
	timeout: 10s
	retries: 3	
ping box1
dig box1
--remove-orphans
ro:表示只读
--env-file

8. git和容器–cicd

azure和github action很像

M9OHH-Q88JQ-DX72D-R04RN

dckr_pat_9uHXTMgCFExvaYr3F7ujE6x_9nQ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/9364.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录-62-530. 二叉搜索树的最小绝对差

目录前言题目1.二叉搜索树中序遍历特性介绍&#xff08;并且使用一个指针始终指向前一个&#xff09;全局变量2. 本题思路分析&#xff1a;&#xff08;中序遍历&#xff09;3. 算法实现4. 算法坑点前言 我在刷卡哥的“代码随想录”&#xff0c;自己的总结笔记均会放在“算法刷…

OpenCV基础之边缘检测与轮廓描绘

文章目录OpenCv基础之边缘检测与轮廓描绘Canny边缘检测图像轮廓绘制轮廓OpenCv基础之边缘检测与轮廓描绘 边缘检测&#xff1a;主要是通过一些手段检测数字图像中明暗变化剧烈&#xff08;即梯度变化比较大&#xff09;像素点&#xff0c;偏向于图像中像素点的变化。 轮廓检测…

CAN-FD协议

总目录链接>> AutoSAR入门和实战系列总目录 总目录链接>> AutoSAR BSW高阶配置系列总目录 文章目录CAN-FD协议**CAN-FD协议需要什么&#xff1f;**CAN-FD 协议的属性CAN-FD 协议中的安全性OSI 层中的 CAN-FD**CAN-FD物理层设计**CAN-FD 数据链路层数据链路层的…

win10自带的输入法变成了繁体怎么改回来

win x 键弹出设置窗口 选择设置 点击时间和语言 点击语言 点击中文(中国人民共和国) 先点击一下会出来选项 在点击选项进去 往下拉最底下找到 键盘下面你正在使用的输入法 点击他 选择选项进去&#xff0c;然后点击常规 在 选择字符集这里下面 选择简体中文

SpringBoot中配置文件加密及跨域支持

给application.properties文件中的某些值加密,比如数据库账号密码等. 引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version> </dep…

Properties

Properties概述&#xff1a; 是一个Map体系的集合类 Properties可以保存到流中或从流中加载 练习&#xff1a;Properties作为Map集合的使用 package com.aynu13;//练习&#xff1a;Properties作为Map集合的使用import java.util.Properties; import java.util.Set;public cla…

交友项目【手机号登录注册功能】实现

目录 1&#xff1a;用户登录 1.1&#xff1a;接口文档 1.2&#xff1a;API接口定义 1.3&#xff1a;Dubbo服务提供者 配置文件 启动引导类 数据访问层 API接口实现 1.4&#xff1a;Dubbo服务消费者 UserController UserService 1.5&#xff1a;访问测试 1.6&#…

【Django 网页Web开发】23. 实战项目:Excel和form和moudleForm的文件上传(16)(保姆级图文)

目录excel文件批量上传数据1. depart_list.html2. url.py3. moudle.py4. depart.py5. upload.pyform文件上传1. upload_form.html2. url.py3. moudle.py4. upload.py5. 目录media存放用户上传的文件总结欢迎关注 『Django 网页Web开发』 系列&#xff0c;持续更新中 欢迎关注 『…

PHY- PHY芯片概述

1 PHY概述 关于Internet Protocal的分层模型可以参考文章 :【Internet Protocal-OSI模型中的网络分层模型】,下面我们讲讲底层以太网控制器和收发器的知识。其主要是处理OSI模型中的物理层和链路层的事情。 在CAN/CANFD、FlexRay等总线中,有控制器Controller和收发器Transc…

【华为OD机试】1024 - 素数伴侣

文章目录一、题目&#x1f538;题目描述&#x1f538;输入输出&#x1f538;样例1&#x1f538;样例2二、思路解析三、代码参考作者&#xff1a;KJ.JK&#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &…

Ae:灯光选项

灯光选项 Light Options&#xff0c;用于调整光源的特性以及所产生的投影的相关设置。下面以属性最多的聚光灯的灯光选项为例进行说明。强度 Intensity光源的亮度。数值越大&#xff0c;光照越大。负值可产生吸光效果&#xff0c;即降低场景中其它光源的光照强度。颜色 Color默…

Java客户端操作索引库

ElasticSearch第二天 学习目标&#xff1a; 能够使用java客户端完成创建、删除索引的操作能够使用java客户端完成文档的增删改的操作能够使用java客户端完成文档的查询操作能够完成文档的分页操作能够完成文档的高亮查询操作能够搭建Spring Data ElasticSearch的环境能够完成…

C++中的类模版

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

银行数字化转型导师坚鹏:金融科技与银行转型

金融科技与银行转型课程背景&#xff1a; 数字化背景下&#xff0c;很多银行存在以下问题&#xff1a; 不清楚5G如何赋能银行数字化转型&#xff1f; 不清楚金融科技如何赋能银行数字化转型&#xff1f; 不了解银行数字化转型标杆成功案例&#xff1f; 课程特色&#xff1a;…

Python 进阶指南(编程轻松进阶):十七、Python 风格 OOP:属性和魔术方法

原文&#xff1a;http://inventwithpython.com/beyond/chapter17.html 很多语言都有 OOP 特性&#xff0c;但是 Python 有一些独特的 OOP 特性&#xff0c;包括属性和魔术方法。学习如何使用这些 Python 风格技巧可以帮助您编写简洁易读的代码。 属性允许您在每次读取、修改或…

Leetcode.993 二叉树的堂兄弟节点

题目链接 Leetcode.993 二叉树的堂兄弟节点 Rating &#xff1a; 1288 题目描述 在二叉树中&#xff0c;根节点位于深度 0 处&#xff0c;每个深度为 k 的节点的子节点位于深度 k1 处。 如果二叉树的两个节点深度相同&#xff0c;但 父节点不同 &#xff0c;则它们是一对堂兄…

Java IO相关

1、深拷贝和浅拷贝的区别是什么? 浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象 深拷贝:被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其…

生成式AI已形成全球性“AI再造业务”趋势

3月28日至31日&#xff0c;博鳌亚洲论坛2023年年会在海南举行。实体经济与数字经济如何融合发展&#xff0c;产业数字化如何加速向深层次拓展&#xff0c;生成式AI会给产业经济带来哪些变革&#xff1f;这些话题成为今年论坛热点。 百度集团执行副总裁、百度智能云事业群总裁沈…

鸟哥的Linux私房菜 学习 Shell Scripts

第十三章、学习 Shell Scripts 重点回顾 shell script 是利用 shell 的功能所写的一个『程序 (program)』&#xff0c;这个程序是使用纯文字档&#xff0c;将一些 shell 的语法与命令(含外部命令)写在里面&#xff0c; 搭配正规表示法、管线命令与数据流重导向等功能&#xf…

MacBookPro 安装Python

Homebrew 假设你没有安装Homebrew&#xff0c;那么就执行&#xff1a; /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”安装Python 执行命令&#xff1a; yutaoMacBook-Pro Homebrew % brew install Python可以看到…