Docker功能简单学习及使用

Docker是什么

Docker是一个快速构建,运行,管理应用的工具

传统基于linux安装程序较为复杂繁琐,使用docker可以快速的进行项目部署和管理

镜像与容器

Docker进行安装应用时,会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包括应用所运行的环境,配置,系统函数库,Docker在运行景象时会创建一个隔离环境,称为容器(container)

只要安装好了docker,docker的镜像能够忽略操作系统的差异直接进行部署运行,因为所有跟系统,环境相关的部分,docker镜像中都是包含的

不同的容器之间是相互隔离的,不会相互产生影响,也不会因为需求不同的环境出现问题

Docker的基本使用

docker run命令

docker run -d \ #--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=ctrl \mysql

通过这样一个命令就能实现mysql的下载直接到运行

命令解读

docker run -d \ #--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=ctrl \mysql
  • docker run:创建并运行一个容器,-d让容器在后台运行
  • --name : 为容器起名,必须唯一
  • -p 3306:3306:设置端口映射 前者为宿主机端口,后者为容器内端口
  • -e KEY=Value : 设置环境变量,具体参数可以查看镜像官方文档
  • mysql : 指定运行的镜像名
    • 镜像名一般由两部分组成:[repository]:[tag]
    • repository为镜像名
    • tag为镜像版本
    • 如果不写名称,默认为最新版本

关于镜像和容器常用指令

docker save -o nginx.tar nginx

将镜像保存为其他文件

-o 想要得到的文件名 镜像名

docker load -i nginx.tar

将其他类型文件加载为镜像

-i 想要加载的文件名

docker rmi 镜像名

移除镜像

docker rm 容器名

移除容器

docker exec 容器名

进入容器

docker ps --format 格式参数

可以进行简化

查看容器

给常用Docker命令起别名,方便我们访问:

# 修改/root/.bashrc文件
vi /root/.bashrc
内容如下:
# .bashrc# User specific aliases and functionsalias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fi

然后,执行命令使别名生效

source /root/.bashrc

数据卷

数据卷(volume)是一个虚拟目录,是容器内目录宿主机目录之间映射的桥梁

因为容器是对外隔离的,想要修改容器内文件需要进入到容器内部,但容器内的环境和函数库是精简到极致的,所以操作不方便。

使用数据卷与主机文件系统的目录进行映射,然后再使数据卷与容器内部的文件目录进行挂载

docker就实现了宿主机目录和容器内目录的双向绑定,在其中一侧所进行的操作都会在另一侧映射出来

通过数据卷作为媒介完成挂载

数据卷挂载,在执行docker run命令时,使用-v 数据卷:容器内目录 可以完成数据卷挂载

当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建数据卷

如果创建容器时没有完成数据卷挂载,就无法再进行挂载了

基于本地目录直接挂载

容器的挂载还有第二种方式,即基于本地目录直接挂载

语法与数据卷挂载类似,区别在于-v参数之后不写数据卷,直接写本地目录即可

自定义镜像

日常开发中,不仅仅需要使用Docker官方提供的镜像,还有可能会用到docker官方没有提供的镜像,这个时候就需要我们自己自定义镜像了

重新介绍一遍,镜像就是包含了应用程序,程序运行的系统函数库,运行配置等文件的文件包。

构建镜像的过程其实就是把上述文件打包的过程。

镜像是分为很多层的,比如最底层的基础镜像,就是应用依赖的系统函数库,环境,配置,文件;最顶层的入口层,镜像运行入口,一般是程序启动的脚本和参数;中间添加安装包,依赖,配置等每次操作也会形成新的一层。

制作镜像就是将这些层分别压缩打包

你可以观察到,在从docker官方拉取镜像的时候,如果本地已经有了另一个镜像需要的基础镜像,会直接跳过这一层

DockerFile

DockerFile就是一个文本文件,其中包含指令,用于说明在构建镜像的过程中需要进行什么样的操作

以下为常见指令

FROM openjdk:11.0-jre-buster
COPY docker-demo.jar /app.jar
ENTRPOINT ["java","-jar","/app.jar"]

当编写好了DockerFile,可以用以下命令来构建镜像

docker build -t myImage:1.0 .
  • -t: 是给镜像起名,格式依然是respository:tag的格式,不指定tag时,默认为latest
  • . : 是指定Dockerfile所在目录,如果就在当前目录,则指定为“.”

网络

默认情况下,所有容器都是以bridge方式连接到docker的一个虚拟网桥上的

但是,这种情况下,随着容器的开启和关闭,容器被分配到的ip也是变化的,如果想让不同容器通过ip进行通信不太可行,需要用到自定义网络

docker compose

在日常开发中,我们在进行项目部署的时候,基本上都会同时用多个docker容器,比如比较经典的数据库+nginx+项目本体,而一个一个手动部署,启动过于繁琐,所以我们需要用到docker compose

使用docker 查看镜像无权限问题

报错:

[yichen@bogon ~]$ docker images

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied

解决命令:

sudo chown root:docker /var/run/docker.sock # 修改docker.sock权限为root:docker

sudo groupadd docker # 添加docker用户组

sudo gpasswd -a $USER docker # 将当前用户添加至docker用户组

newgrp docker

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题 — 最大连续 1 的个数III

解法一:暴力枚举 先定义left和right双指针,left先固定在起始位置,遍历right当值等于1的时候,直接跳过,等于0的时候,zero计数器加一当zero等于k的时候,就开始记录此时最大长度是多少然后left加一…

Severt基本使用

severt是让我们自己写一些类,然后把这些类给加载Tomcat中,后续Tomcat收到HTTP请求(来自于浏览器),就会执行到咱们上面写的代码.从而通过这些代码,完成一定的业务逻辑. 创建项目 此处创建的是一种新的项目的形式称为Maven项目,Maven是Java 中的一个的构建…

【Leetcode每日一题】模拟 - 数青蛙(难度⭐⭐)(51)

1. 题目解析 题目链接:1419. 数青蛙 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 一、模拟青蛙叫声的基本逻辑 在模拟青蛙叫声的过程中,我们需要遵循一定的规则来判断何时青蛙会发出声音。…

每日一题(leetcode2529):正整数和负整数的最大计数--二分法

因为需要O(logn)的复杂度,所以考虑使用二分法,先找到负数里面的最大下标(初始值定为-1),再找到第一个正数的下标(初始值定为数组长度值)。最后求出个数并进行比较即可。 …

Netty 入门应用之Http服务WebSocket

Netty实现Http服务 主要的变化是在初始化器中引入了新的编解码器 一些创建的类作用和Netty HelloWorld的小demo一样我这里就不再次重复了 1、Http服务端代码 public class HttpServer {public static void main(String[] args) {// 创建Reactor// 用来管理channel 监听事件 …

Hot100【十一】:最大子数组和

// 定义dp:以i结尾的最大子数组和 dp[i] max(dp[i-1] nums[i],nums[i]) class Solution {public int maxSubArray(int[] nums) {// 1. 不需要特殊处理// 2. 定义dpint[] dp new int[nums.length];dp[0] nums[0];int maxResult nums[0];// 3. dp递推for (int i …

微服务面试题一

1.SOA、分布式、微服务之间有什么关系和区别? 分布式架构是指将单体架构中的各个部分拆分,然后部署不同的机器或进程中去,SOA和微服务基 本上都是分布式架构的SOA是⼀种⾯向服务的架构,系统的所有服务都注册在总线上,…

TLF9471 - High-Speed CAN FD Transceiver

1 框图描述 2 功能描述 CAN收发器被设计用来承受汽车应用的恶劣条件,并支持12V应用。   SBC的控制器区域网络(CAN)收发器部分在汽车和工业应用中提供高速(HS)差分模式数据传输(最高可达2Mbaud&#xff09…

【Java基础】BigDecimal使用避坑规范

BigDecimal使用 解决浮点型运算时,出现结果失真的问题,比如0.10.2 —示例— public class ErrorCase {public static void main(String[] args) {// 0.30000000000000004System.out.println(0.1 0.2);} }构造方法 把string转成BigDecimal把double转B…

备战蓝桥杯Day40 - 第11届python组真题 - C跑步锻炼

一、题目描述 二、思路 1、使用datetime库中的方法可以很好的解决这个问题。 2、定义起始时间和结束时间,判断是否是周一或者是1号,结果res加上相应的里程数。 3、最后输出 res 即为本题答案。 三、代码实现 import datetimestart datetime.date(2…

深度学习图像处理04:图像分类模型训练实战——动物分类

这篇博文不涉及理论知识,主要通过一个完整的深度学习模型训练流程,直观地了解深度学习图像分类任务。有关理论的部分,之前几篇博文已经涉及基础部分,之后也会对一些理论进行补充。 本文将结合代码,主要介绍三部分内容…

OpenHarmony应用编译 - 如何在源码中编译复杂应用(4.0-Release)

文档环境 开发环境:Windows 11 编译环境:Ubuntu 22.04 开发板型号:DAYU 200(RK3568) 系统版本:OpenHarmony-4.0-Release 功能简介 在 OpenHarmony 系统中预安装应用的 hap 包会随系统编译打包到镜像中&a…

SpringBoot常用注解及其使用示例

Spring Boot是一个用于快速构建Java应用程序的框架,它简化了Spring应用程序的创建和部署过程。 Spring Boot提供了很多注解,用于简化开发过程,提高开发效率。本文将介绍几个Spring Boot常用注解的使用案例,包括Controller、Reques…

c#获取Web.Config中的值出现的错误及解决办法

c#获取Web.Config中的值出现的错误及解决办法 1.错误提示 2.原因寻找 问题出在Web.Config文件中 <add key"mchid " value"1495103432"/>//mchid 后面不应该有空格图示如下&#xff1a; 3.改正代码如下&#xff1a; <?xml version"1.0…

022——设计通信帧格式

本期没想好怎么排版以流水账形式展示了 int tcp_server(int argc, char *argv[]) {int server_fd, client_fd; struct sockaddr_in server_addr, client_addr; socklen_t client_len sizeof(client_addr); char *ip_address argv[1]; int port atoi(argv[2]); // 创建T…

Capture One 23 Enterprise for Mac中文版 全面的图像处理工具

Capture One 23 Enterprise for Mac中文版一款专业的图像编辑和管理软件&#xff0c;具备强大的功能和工具&#xff0c;适用于摄影师、摄影工作室和专业用户。 软件下载&#xff1a;Capture One 23 Enterprise for Mac中文版下载 该软件为用户提供了全面的图像处理工具&#xf…

SpringCloudAlibaba-整合nacos(二)

目录地址&#xff1a; SpringCloudAlibaba整合-CSDN博客 一、nacos服务部分 1.下载nacos&#xff0c;并执行数据库脚本&#xff1a;nacos-mysql.sql 2.修改配置文件&#xff0c;配置mysql 3.启动nacos ./startup.sh -m standalone 4.访问&#xff1a;http://127.0.0.1:884…

Terraform 扩展

Terraform 扩展 Terraform Meta-Arguments 元参数 count 创建相似的资源for_each 创建相似的资源depends_on 定义资源或者模块的依赖provider 定义provider选项lifecycle 资源的生命周期行为 参数使用范围备注countresource module适用于创建多个相似的资源&#xff0c;使用…

1999-2022年各省研究与试验发展人员全时当量数据/省研发人员全时当量数据/(RD)人员全时当量(无缺失)

1999-2022年各省研究与试验发展人员全时当量数据/省研发人员全时当量数据/(R&D)人员全时当量&#xff08;无缺失&#xff09; 1、时间&#xff1a;1999-2022年 2、来源&#xff1a;科技年鉴 3、指标&#xff1a;研究与试验发展人员全时当量/研发人员全时当量 4、范围&a…

软考-系统集成项目管理中级-新一代信息技术

本章历年考题分值统计 本章重点常考知识点汇总清单(掌握部分可直接理解记忆) 本章历年考题及答案解析 32、2019 年上半年第 23 题 云计算通过网络提供可动态伸缩的廉价计算能力&#xff0c;(23)不属于云计算的特点。 A.虚拟化 B.高可扩展性 C.按需服务 D.优化本地存储 【参考…