docker学习笔记01-安装docker

1.Docker的概述

        用Go语言实现的开源应用项目(container);克服操作系统的笨重;快速部署;只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统;Docker通过隔离机制,每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

2.重要概念

  • dockerfile
  • image
  • container

实际上你可以简单的把image理解为可执行程序,container就是运行起来的进程。

那么写程序需要源代码,那么“写”image就需要dockerfile,dockerfile就是image的源代码,docker就是"编译器"。

因此我们只需要在dockerfile中指定需要哪些程序、依赖什么样的配置,之后把dockerfile交给“编译器”docker进行“编译”,也就是docker build命令,生成的可执行程序就是image,之后就可以运行这个image了,这就是docker run命令,image运行起来后就是docker container。

        基本组成:镜像 image、容器 container、仓库 repository(共有/私有;存放镜像的地方)

3.docker命令


docker version      # 显示docker的版本信息
docker info         # 显示docker的系统信息

镜像命令
	docker images  # 查看所有本地的主机上的镜像
	docker search 镜像名  # 搜索镜像
	docker pull 镜像名[:tag]  # 下载镜像如果不写tag,默认就是latest
	docker rmi -f 镜像ID                 # 删除指定的镜像
	docker rmi -f $(docker images -aq)  # 删除全部的镜像
	
	
容器命令(有了镜像才可以创建容器,直接run就是先创建再启动)
	docker run [可选参数] 镜像ID
	参数说明
        -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

        -d: 后台运行容器,并返回容器ID;

        -i: 以交互模式运行容器,通常与 -t 同时使用;

        -P: 随机端口映射,容器内部端口随机映射到主机的端口

        -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

        -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

        --name="nginx-lb": 为容器指定一个名称;

        -m :设置容器使用内存最大值;

        --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

        --link=[]: 添加链接到另一个容器;

        --expose=[]: 开放一个端口或一组端口;

        --volume , -v: 绑定一个卷
	例如
	docker run -it centos /bin/bash   
	从容器中退回主机

	exit  # 直接停止容器并退出
	Ctrl + P + Q # 不停止容器但退出
	

	docker ps  # 列出当前正在运行的容器
	可选项
	-a # 列出当前正在运行的容器+带出历史运行的容器
	-n=数字 # 显示最近创建的容器
	-q # 只显示容器的编号


删除容器
	docker rm 容器ID                  # 删除指定的容器,不能删除正在运行的容器
	docker rm -f 容器ID               # 强制删除指定的容器
	docker rm -f $(docker ps -aq)    # 删除全部的容器
	docker ps -aq | xargs docker rm  # 删除全部的容器

启动和停止容器的操作
	docker start 容器ID     # 启动容器
	docker start -i 容器ID  # 启动一个已停止的容器,并进入交互界面
	docker restart 容器ID   # 重启容器
	docker stop 容器ID      # 停止当前正在运行的容器
	docker kill 容器ID      # 强制停止当前容器

后台启动容器
	docker run -d 镜像名

查看日志
	docker logs -tf --tail 数字 容器ID
	可选项
		-tf # 显示日志
		--tail 数字 # 显示的日志的条数
docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 1;done"
docker logs -tf --tail 10 容器ID  # 显示10条日志
docker logs -tf --tail 10 容器ID  # 显示所有日志
Ctrl + C # 停止输出日志
查看容器中的进程信息

docker top 容器ID
查看镜像元数据

docker inspect 容器ID
进入当前正在运行的容器

docker exec -it 容器ID /bin/bash    # 进入容器后开启一个新的终端,可以在里面操作(常用)  
    参数说明:

        -d :分离模式: 在后台运行

        -i :即使没有附加也保持STDIN 打开

        -t :分配一个伪终端


文件是在容器内创建的,命令是在主机上执行的。

在容器内时,可以exit退出,因为容器内的文件存在与否和容器是否正在运行没关系。

docker cp 容器ID:容器内路径 目的主机路径
从主机上拷贝文件到容器内

docker cp 源主机路径 容器ID:容器内路径
拷贝是一个手动过程,未来我们使用“-v”卷的技术,可以实现自动同步

修改容器内存
docker stats 容器ID
Ctrl + C退出
docker update --memory 2G --memory-swap -1 容器ID
mac系统无法设置超过2GiB的内存,Linux系统可以设置为系统能提供的最大内存

4.centos8安装docker


把image理解为可执行程序,container就是运行起来的进程。dockerfile就是image的源代码,docker就是"编译器"

--1.更新国内源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all && yum makecache
--2.卸载旧版本的docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
--3.增加源
sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
--4.安装docker(docker的引擎、操作docker的客户端、docker容器)
--先卸载低版本的runc,要不安装的时候会报错版本低冲突
yum -y remove runc
sudo yum install docker-ce docker-ce-cli containerd.io
--5.启动docker服务,查看是否成功
sudo systemctl start docker
sudo systemctl enable docker
----客户查看docker的版本,也确保一下安装是否成功
docker -v  
----查看有没有下载的镜像images
----因为是新安装的docker,所以是空列表
docker images
--6.配置docker应用镜像加速
--/etc/docker这个目录加入没有的话就自己创建一个
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://kru7klna.mirror.aliyuncs.com"]
}
EOF

重新加载
sudo systemctl daemon-reload
sudo systemctl restart docker

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

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

相关文章

抬头举手阅读YOLOV8NANO

首先用YOLOV8NANO得到PT模型&#xff0c;转换成ONNX,OPENCV调用&#xff0c;PYTHON,C,ANDROID都可以举手写字阅读YOLOV8NANO

pip 国内镜像源

pip 国内镜像源 部分可用的pip国内镜像源有下面这些&#xff1a; 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣 http://pypi.douban.com/simple Python官方 https://pypi.python.org/simple/ v2ex http://pypi…

uniapp项目如何引用安卓原生aar插件(避坑指南三)

官方文档说明&#xff1a;uni小程序SDK 【彩带- 避坑知识点】 如果引用原生aar插件&#xff0c;都配置好之后&#xff0c;云打包&#xff0c;报不包含此插件&#xff0c;除了检查以下步骤流程外&#xff0c;还要检查一下是否上打包的原生插件aar流程有问题。 1.第一步在uniapp项…

2023年总结以及2024年的计划

2023年总结以及2024年的计划 文章目录 2023年总结以及2024年的计划复盘工作学习爱情旅游北京之旅苏州之游 房子装修投资理财新的一年展望(2024) ​ 今天是2023年12月24日, 星期日, 今年的第358天, 这一年97.81%的时间已流逝. 好像每年的话题都差不多, 2023年 很快就要结束了, 我…

java球队信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web球队信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

CUDA动态并行

一、简介 1. 综述 动态并行是 CUDA 编程模型的扩展&#xff0c;使 CUDA 内核能够直接在 GPU 上创建新工作并与其同步。 在程序中任何需要的地方动态创建并行性都提供了令人兴奋的功能。 直接从 GPU 创建工作的能力可以减少在主机和设备之间传输执行控制和数据的需要&#xf…

BDD - Python Behave Retry 机制

BDD - Python Behave Retry 机制 引言Behave RetryBehave Retry 应用feature 文件创建 step 文件Retry运行 Behave 并生成 rerun 文件重新运行失败的场景 引言 在日常运行测试用例&#xff0c;有时因为环境不稳定造成一些测试用例跑失败了&#xff0c;如果能将这些失败的测试用…

三年半累亏23亿,圆心科技“带伤”闯关IPO

互联网医疗下半场&#xff0c;圆心科技五闯IPO&#xff01; 12月18日&#xff0c;互联网医疗行业的“独角兽”北京圆心科技集团股份有限公司&#xff08;下称“圆心科技”&#xff09;再次递交招股书&#xff0c;继续向港交所发起上市冲击。 这是其自2021年10月以来第五次递表…

Eclipse安装Jrebel eclipse免重启加载项目

每次修改JAVA文件都需要重新启动项目&#xff0c;加载时间太长&#xff0c;eclipse安装jrebel控件,避免重启项目节省时间。 1、Help->Eclipse Marketplace 2、搜索jrebel 3、Help->jrebel->Configuration 配置jrebel 4、激活jrebel 5、在红色框中填入 http://jrebel…

数据结构学习 Leetcode474 一和零

关键词&#xff1a;动态规划 01背包 一个套路&#xff1a; 01背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要逆序遍历完全背包&#xff1a;空间优化之后dp【target1】&#xff0c;遍历的时候要正序遍历 目录 题目&#xff1a; 思路&#xff1a; 复杂…

CamSim相机模拟器:极大加速图像处理开发与验证过程

随着图像处理技术的不断发展&#xff0c;相机模拟在图像处理开发和验证中扮演着越来越重要的角色。相机模拟能够模拟真实相机的成像过程&#xff0c;提供高质量的图像输入&#xff0c;使开发人员能够更好地评估和调整图像处理算法。本文将探讨如何通过相机模拟来加速图像处理的…

Vue axios Post请求 403 解决之道

前言&#xff1a; 刚开始请求的时候报 CORS 错误&#xff0c;通过前端项目配置后算是解决了&#xff0c;然后&#xff0c;又开始了新的报错 403 ERR_BAD_REQUEST。但是 GET 请求是正常的。 后端的 Controller 接口代码如下&#xff1a; PostMapping(value "/login2&qu…

【免费分享】1985-2023年全国逐月植被净初级生产力(NPP)数据

1985-2023年全国逐月植被净初级生产力&#xff08;NPP&#xff09;数据 净初级生产力(NPP)是指植物在单位时间单位面积上由光合作用产生的有机物质总量中扣除自养呼吸后的剩余部分&#xff0c;是生产者能用于生长、发育和繁殖的能量值&#xff0c;反映了植物固定和转化光合产物…

2023/12/3 今日得先看的重磅AI新闻

&#x1f4f1; 传 iPhone 设计主管加盟苹果前首席设计师公司&#xff0c;与 OpenAI 合作开发 AI 设备 &#x1f697; 雷军宣布&#xff1a;小米澎湃 OS 启动新标识&#xff0c;「人车家全生态」正式闭环 &#x1f527; OpenAI 竞争对手 Anthropic 预计明年年化营收将达到 8.5…

白盒测试 接口测试 自动化测试

一、什么是白盒测试 白盒测试是一种测试策略&#xff0c;这种策略允许我们检查程序的内部结构&#xff0c;对程序的逻辑结构进行检查&#xff0c;从中获取测试数据。白盒测试的对象基本是源程序&#xff0c;所以它又称为结构测试或逻辑驱动测试&#xff0c;白盒测试方法一般分为…

可视化云监控/安防监控系统EasyCVR视频管理平台播流失败的原因(端口篇)

安防视频监控EasyCVR平台兼容性强&#xff0c;可支持的接入协议众多&#xff0c;包括国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台能将接入的视频…

HTML的学习记录

<br /> 标签在 HTML 页面中创换行符。 <hr /> 标签在 HTML 页面中创建水平线。 段落是通过 <p> 标签定义的。 浏览器会自动地在段落的前后添加空行。&#xff08;<p> 是块级元素&#xff09; 文本格式 <b>This text is bold</b>字体加粗 …

postman进阶使用

前言 对于postman的基础其实很容易上手实现&#xff0c;也有很多教程。 对于小编我来说&#xff0c;也基本可以实现开发任务。 但是今年我们的高级测试&#xff0c;搞了一下postman&#xff0c;省去很多工作&#xff0c;让我感觉很有必要学一下 这篇文章是在 高级测试工程师ht…

学习使用echats实现双刻度echarts双Y轴,左右Y轴数据的方法

学习使用echats实现双刻度echarts双Y轴&#xff0c;左右Y轴数据的方法 代码效果图 代码 <!--此示例下载自 https://echarts.apache.org/examples/zh/editor.html?cline-stack&langjs --> <!DOCTYPE html> <html lang"en" style"height: 10…

C语言中关于switch语句的理解

首先我们来看一下switch的定义 switch&#xff08;整型表达式&#xff09; { case 整型常量表达式: 语句&#xff1b; } 我们在书写时要注意一下&#xff0c;无论是在switch还是case&#xff0c;后面跟着的都一定要是整型&#xff0c;而且case这一行写完时&#xff0c;最后要用…