Docker零基础学习笔记

pgAdmin4备份恢复实战:从安装到避坑指南 本文提供了一份详尽的pgAdmin4备份恢复实战指南,涵盖从安装配置到执行备份恢复的全流程。针对Windows环境下的浏览器兼容性、二进制路径配置等常见问题,给出了具体解决方案。重点强调了使用pgAdmin4进行备份恢复的可靠性,特别是在处理包含PostGIS等扩展的数据库时,能有效避免数据类型和权限错误,确保数据迁移的完整性与安全性。 阅读详情

零基础学习Docker

Docker官方文档

基础语法

docker pull: 从DockerHub上拉取镜像

$ docker pull ngnix
Using default tag: latest
latest: Pulling from library/nginx
9e3ea8720c6d: Pull complete 
bf36b6466679: Pull complete 
15a97cf85bb8: Pull complete 
9c2d6be5a61d: Pull complete 
6b7e4a5c7c7a: Pull complete 
8db4caa19df8: Pull complete 
Digest: sha256:721cbabd4f976638504427458ad619fdf32967176835b4779e6bef243b2e8972
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

该指令可以配合标签Tag来获取想要的版本(默认为latest)

$ docker pull ubuntu:latest
latest: Pulling from library/ubuntu
===============>省略<==============
$ docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
===============>省略<==============

docker image <command>: 可用于管理系统上的

$ docker image
Usage:	docker image COMMAND

Manage images

Commands:
  build       Build an image from a Dockerfile
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Display detailed information on one or more images
  load        Load an image from a tar archive or STDIN
  ls          List images
  prune       Remove unused images
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rm          Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

Run 'docker image COMMAND --help' for more information on a command.

常用的有: ls、history、pull、rm

$ docker image ls
列出系统中的docker镜像
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
nginx                      latest              448a08f1d2f9        6 hours ago         142MB
==================>.....<=======================
$ docker image rm REPOSITOPY:TAG 或 IMAGE ID
例如删除ubuntu:20.04镜像的部分回显
Untagged: ubuntu:20.04
Untagged: ubuntu@sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d4c203e58387dc6b3
==================>.....<=======================
$ docker image history REPOSITOPY:TAG 或 IMAGE ID
获取该镜像的历史信息

docker images和docker image ls的作用相同,只不过自 Docker 17.06 版本开始,更推荐使用后者。

运行一个容器

大体上,运行容器的命令格式是docker run [option] IMAGE_NAME [COMMAND] [ARGUMENTS...]

常用的选项(option):

-d:以“分离”模式启动。这意味着容器将在后台运行。

-it: “i”表示交互运行,“t”告诉 Docker 在容器内运行一个 shell。如果想要与容器进行交互,可以选择这个。

-p:端口映射。将主机操作系统上的端口绑定到容器中公开的端口。-p 主机端口:容器端口

--rm:一旦Docker完成运行就删除容器。

--name:给容器取个名字。

-v:(一般配合Dockerfile),将主机中的某个目录挂在到文件的某个目录。

来一个简单的操作

-- 从Docker Hub上拉取一个镜像
$ docker pull testcontainers/helloworld
=====>拉取过程<=====
$ docker run -d -p 8080:8080 -p 8081:8081 --name Thisisname testcontainers/helloworld
===>在后台运行
$docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
7c2b1146d35a        testcontainers/helloworld   "/helloworld"            4 minutes ago       Up 4 minutes        0.0.0.0:8080->8080/tcp   Thisisname

在浏览器访问127.0.0.1:8080即可访问。

关闭容器 docker stop CONTAINER ID.

Dockerfiles

Dockerfiles 是一个格式化的文本文件,它本质上是作为容器应该做什么的说明手册,并最终组装 Docker 镜像。

FROM:设置基础映像(操作系统)。必须以此开头,比如FROM ubuntu

RUN:该命令将在新层内的容器中执行命令,比如RUN apt-get update

COPY:将文件从本地系统复制到容器中的工作目录。比如COPY /code /www

CMD:指定启动容器的命令(或脚本)。比如CMD /bin/sh -c script.sh

EXPOSE:暴露端口,用于声明容器运行时需要监听的网络端口。配合-p映射出来。比如EXPOSE 80 81

写一个简单的Dockerfile并build

# Get base Docker
FROM ubuntu:22.04

#Update the APT repo 
RUN apt-get update -y

# Install Apache2
RUN apt-get install apache2

# tell the container abot port
EXPOSE 5200

# run the apache2 server
CMD ["apache2ctl", "-D", "FOREGROUND"]

docker build -t webserver .会通过Dockerfile来构建一个容器镜像。

查看一下:

$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
webserver    latest    be1b2fa6a23b   About an hour ago   230MB

运行(run)容器

$ docker -p 5200:80 webserver

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                             NAMES
1bb77e37beb9   testweb   "apache2ctl -D FOREG…"   4 minutes ago   Up 4 minutes   5200/tcp, 0.0.0.0:5200->80/tcp, :::5200->80/tcp   lucid_turing

这里有一个让我很困惑的点,记录一下:

为什么映射的端口为5200:80,默认情况下是这个。因为Dockerfile指定的EXPOSE端口为5200,而apache2的默认端口是80,因此只有5200:80这种组合,分号前是主机端口,分号后是容器端口

如果Dockerfile中的是EXPOSE 5200 5201,运行的时候可以是docker run -p 5200:80 -p 5201:80 webserver

优化Dockerfile

  1. 只安装必要的包。

  2. 删除缓存文件。

  3. 尽量选择最小的基本操作系统,即FROM xxx.

  4. 最小化层数。

    每条指令(FROM、RUN等)都在其自己的层中运行。图层的增加会导致时间的增长。因此,我们再写Dockerfile文件时,要用尽量少的层数。如下:

    多层数

    FROM ubuntu:latest
    RUN apt-get update -y
    RUN apt-get upgrade -y
    RUN apt-get install apache2 -y
    RUN apt-get install net-tools -y
    

    运行的结果

    --omitted for brevity--
    Step 2/5 : RUN apt-get update -y
     ---> Using cache
     ---> 446962612d20
    Step 3/5 : RUN apt-get upgrade -y
     ---> Running in 8bed81c695f4
    --omitted for brevity--
    

    优化

    FROM ubuntu:latest
    RUN apt-get update -y && apt-get upgrade -y && apt-get install apache2 -y && apt-get install net-tools
    

    运行结果:( 只剩下了两层 )

    Sending build context to Docker daemon   4.78MB
    Step 1/2 : FROM ubuntu
     ---> 2dc39ba059dc
    Step 2/2 : RUN apt-get update -y && apt-get upgrade -y && apt-get install apache2 -y && apt-get install net-tools
     ---> Running in a4d4943bcf04
    --omitted for brevity--
    

    简化层数,在大文件Dockerfile中会有显著的速度提升。

Docker Compose

https://docs.docker.com/compose/reference/

【挖个坑】

免杀思路总结 免杀思路总结 1.免杀技术简介 1.免杀的重要性 2.免杀的难度 3.杀毒软件的排行 国外 国内 1 、Bitdefender 1、360 2 、Norton 360 2、智量安全(没测过,据说很厉害) 3 、Kaspersky 3、火绒安全 4 、Webroot 4、金山独霸 5 、Trend Micro 5 阅读详情

相关推荐

Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么)

Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么) 目录 Unity ECS 之 Entitas 的简单介绍,插件下载、导入,和简单使用(一篇文入门搞懂ECS是什么) 一、简单介绍 二、一些专有项简介 Entity Context Group Collector Matcher System Feature 三、注意实现 四、ECS 的下载 Github 上下载 Unity Asset Store 中下载 U...

仙魁XAN 7779

boot2docker实践@FreeBSD

boot2docker是专为Docker而设计的轻量极Linux发型包,解决Windows、OS X、FreeBSD不能安装Docker的问题。Boot2Docker完全运行于内存中,24M大小,启动仅5-6秒。Boot2Docker需要运行在VirtualBox中,同时意味着有VirtualBox就能运行Boot2Docker,所以FreeBSD下也可以使用Docker拉!不过已经有3年多没有更新了。

skywalk8163的专栏 1662

从Simulink仿真到DSP28335真机部署:PID闭环控制快速移植指南

本文详细介绍了如何将Simulink中的PID闭环控制算法快速移植到DSP28335嵌入式平台。通过模型与代码映射、浮点与定点数选择、定时器中断配置、物理输出实现以及调试技巧五个关键步骤,帮助工程师高效完成从仿真到真机部署的全过程,特别适合需要实现精确控制的嵌入式开发者。

weixin_42521843的博客 363

TestNG的HelloWorld例子以及如何在命令行下运行

新建Maven项目 :打开 ,添加TestNG的依赖: 在 目录下创建package ,并创建类 如下: 在 目录下创建 文件如下: 运行 方法1:运行 文件 右键单击 ,选择运行,结果如下: 可见,虽然报了 的错误,不过不影响运行,这两个test方法都成功了。右键单击 ,选择运行。从右侧Maven面板双击 :官网上原话是: 这句话说的很含糊,我折腾了半天才弄明白是怎么回事。以下是调试过程,记下来以便日后复习时,知其所以然。在项目根目录下: 这里,我添加了classpath是因为在

duke_ding2的博客 1070

倍福Twincat 3.0软件与C++通讯问题(ADS通讯)

倍福Twincat 3.0软件与C++通讯问题 倍福公司所开发的Twincat 3.0软件是基于Visual studio开发环境的一款自动化软件,目前其与C++程序通讯的方式主要还是靠ADS-DLL接口进行数据和信息传递,作者在Visual C++上进行混合编程开发,通过TwinCAT路由器和C语言API函数实现混合编程。 倍福软件提供: TcAdsDll.dll—动态链接库; TcAdsDll...

weixin_42811651的博客 1万+

Versal ACAP NoC实战:像理解计算机网络一样配置AXI NoC,打通PS与PL数据通路

本文深入探讨了Versal ACAP NoC的配置与优化,通过计算机网络类比解析NoC架构,详细介绍了在VD100开发板上配置AXI NoC实现PS与PL数据交互的实战步骤。文章涵盖NoC组件功能、Vivado配置技巧、性能优化方法及常见问题解决方案,帮助开发者高效打通Versal芯片的数据通路。

weixin_42665255的博客 291

std::reserve和std::resize的区别

std::reserve是设置容器容量的,调用该函数后,容器的capacity可能会变大或不变,但不会变小 如: vector value{ 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 }; int k = value.capacity(); value.reserve(2); int k1 = value.capacity(); 在我本机上例k、k1都为15,即和value.size()大小相等,k1并不是2,如果将.

danshiming的博客 1113

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

linux下docker安装步骤_零基础docker学习笔记2:使用docker安装linux

上个笔记中写道在debian里把docker安装完成并运行了hello-world这个神奇的指令,可是具体还能干点啥呐?哈,开始搞起!查看了下docker版本,貌似比网上教程里的都要新一些,也不晓得增加了啥新功能,管他呢,反正还是小白,先搞个东东玩玩再说!root@instance-1:~# docker version Client: Docker Engine - Community Ver...

weixin_40002009的博客 124

【AUTOSAR-DEM】-2.4-APP SWC如何读取MIL灯状态以及配置MIL灯

该篇博文将告诉您: MIL(Malfunction Indicator Lamp/Light)灯的点灯和灭灯过程; DEM模块如何配置MIL灯; APP SWC如何获取MIL灯状态。

「汽车电子助手」的博客 1711

给跨代引用记一本账:Java GC 的分配路径、卡表写屏障与收集器版图快速回顾

本文把 Java GC 的零散名词串成一条推理链路:从 TLAB 指针碰撞分配、逃逸分析,到 Eden、Survivor 与晋升的四条路,重点拆解卡表与写屏障如何为老年代指向新生代的引用记账,及 Minor GC 如何只扫脏卡。基于 JDK 8 实测:分散写使 Young GC 停顿涨 10~15 倍,条件卡标记消除卡表伪共享,计数循环让 System.gc 等待 2.7 秒,Survivor 过小使晋升量增加约 400 倍。文末梳理 JDK 8 到 27 的收集器演进、选型路径与排查顺序。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 17万+

2 linux 安装 建库_零基础docker学习笔记2:使用docker安装linux

上个笔记中写道在debian里把docker安装完成并运行了hello-world这个神奇的指令,可是具体还能干点啥呐?哈,开始搞起!查看了下docker版本,貌似比网上教程里的都要新一些,也不晓得增加了啥新功能,管他呢,反正还是小白,先搞个东东玩玩再说!root@instance-1:~# docker version Client: Docker Engine - Community Ver...

weixin_33600376的博客 73

【AUTOSAR-E2E】-1.4-详述E2E Transformer解决方案

共13页精讲 目录 1“Data Transformation”介绍 1.1 基于SOME/IP Transformer 1.2 基于COM Based Transformer 2 ComXf(COM Based Transformer)介绍 2.1 ComXf(COM Based Transformer)功能规范 2.2 ComXf(COM Based Transformer)提供的服务 2.3 配置注意事项 3 E2EXf(E2E Transformer)介绍 3.1 E2EX...

「汽车电子助手」的博客 4700

7限制cpu使用_零基础docker学习笔记8:docker中对于cpu的限制

参考文章如下,比较全面了。Docker: 限制容器可用的 CPU​www.cnblogs.com如果不想使用stress指令来让cpu 满负荷运转,可以使用如下脚本vi cpu.sh #! /bin/sh # filename killcpu.sh if [ $# != 1 ] ; then echo "USAGE: $0 <CPUs>" exit 1; fi for i in `...

weixin_42128537的博客 119

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

wmi provider host占用cpu_零基础docker学习笔记8:docker中对于cpu的限制

参考文章如下,比较全面了。Docker: 限制容器可用的 CPU​www.cnblogs.com如果不想使用stress指令来让cpu 满负荷运转,可以使用如下脚本vi cpu.sh #! /bin/sh # filename killcpu.sh if [ $# != 1 ] ; then echo "USAGE: $0 <CPUs>" exit 1; fi for i in `...

weixin_39940901的博客 199

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

linux免密登录_零基础docker学习笔记4:免密便捷登录docker

通过笔记1-3,在linux和windows下都已经可以方便的使用ssh来登录自己所创建的容器了,可是每次都要输入密码,windows还可以通过securecrt来保存密码来实现免密登录,可是linux下想要免密登录容器里的ubuntu,就需要使用生成密钥的方式来实现了!本文主要分windows下securecrt和linux下两部分来写。windows下securecrt通过免密登录linux使...

weixin_39599654的博客 314

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Docker学习笔记

我们刚才的nginx和mysql镜像都是由官方制作并上传的,我们自己开发的java应用后面哟啊进行部署也需要镜像,这个时候就需要我们自己去定义一个镜像如果我们要运行java应用,需要准备什么条件--就是jre,jre同时通过jvm编译,但是不同系统的jre不同,所以我们要考虑到系统不同的兼容性我们直接把所需要的运行环境准备好,准备好所有函数库,再安装jre配置号环境变量,然后拷贝jar包,编写运行脚本,最后打好包就准备好镜像了。

2402_83510798的博客 1848

ubuntu 开机后不动_零基础Docker学习笔记5:docker ubuntu sshd开机启动

按照笔记4中的方法docker 容器ubuntu已经配置好ssh服务,可是每次重启ubuntu之后,直接ssh提示下面错误,进去之后发现sshd服务没有开机启动,手动起来之后就可以了,但是重启之后还是not running的,忧桑!root@instance-1:~# ssh s1 ssh: connect to host s1 port 22: Connection refused root@i...

weixin_32937021的博客 925

ubuntu systemctl 开机时间_零基础Docker学习笔记5:docker ubuntu sshd开机启动

按照笔记4中的方法docker 容器ubuntu已经配置好ssh服务,可是每次重启ubuntu之后,直接ssh提示下面错误,进去之后发现sshd服务没有开机启动,手动起来之后就可以了,但是重启之后还是not running的,忧桑!root@instance-1:~# ssh s1 ssh: connect to host s1 port 22: Connection refused root@i...

weixin_39976081的博客 430

安装不成功_零基础Docker学习笔记1:docker的安装(vmware安装不成功的问题)

题记:如果你还在偶尔用vmware里面的linux学习或者利用linux,强烈建议你花半天到一天时间学习docker来完全替换掉vmware大概一年前开始陆陆续续听大家谈论起docker,k8s,当时还只是初次接触openstack相关的项目,焦头烂额最终总算大概明白openstack是啥东西了,至于docker k8s只觉得有可能是类似openstack一样的动动,工作中用不到也就没学的动力,最...

weixin_36146690的博客 1645

docker入门(一):在centOS虚拟机上安装docker_使用 docker desktop 安装 centos 系统(2)

需要注册一个属于自己的阿里云账户(可复用淘宝账号),在阿里云开发者平台搜索镜像加速器可以找到相关链接,目前个人版的是免费限量使用的,企业版是收费的,可以根据阿里云的指导得到相应的配置后放在docker的配置文件中。上面是官网的安装镜像,按照这个命令安装后面安装docker引擎的时候会报错:TCP connection reset by peer,或者直接超时。“registry-mirrors”: [“https://{自已的编码}.mirror.aliyuncs.com”]#yum安装gcc相关。

2401_84166327的博客 456

2022年再不掌握docker就要被淘汰了_docker要淘汰了

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,

2401_84561736的博客 501

Go最新用golang官方Docker镜像运行项目(1),Golang高级工程师面试题及答案

import (“fmt”以上就是本次实战的代码,功能很简单:一个package中的main调用另一个package提供的api,最终在控制台打印abc,接下来借助Docker来编译构建运行上述代码;

2401_84910951的博客 752

vmware加了新盘搜索不到_零基础Docker学习笔记1:docker的安装(vmware安装不成功的问题)...

题记:如果你还在偶尔用vmware里面的linux学习或者利用linux,强烈建议你花半天到一天时间学习docker来完全替换掉vmware大概一年前开始陆陆续续听大家谈论起docker,k8s,当时还只是初次接触openstack相关的项目,焦头烂额最终总算大概明白openstack是啥东西了,至于docker k8s只觉得有可能是类似openstack一样的动动,工作中用不到也就没学的动力,最...

weixin_39844426的博客 233

Docker 安装部署 Nginx_docker run -d -p 8840 8840 -p 9840 9840 -p 9841 98(1)

命令执行后返回了容器ID, 此时我们已经成功创建了 nginx 容器, 使用 docker ps 命令,可以查看到正在运行的 nginx 容器,映射端口为80。在浏览器访问主机,会看到nginx欢迎页,如果是云服务器,请记得开放对应的外网端口!

2401_84910683的博客 814

大数据最新Docker初级:Docker常用命令总结_docker命令在官网哪里看(1),2024年最新头条大数据开发面试

(img-ALmIoeCK-1715048508565)](img-AZJQH6rC-1715048508566)](img-zqFeu4A5-1715048508566)]注意:正在运行的容器不能删除!在使用容器之前需要先下载镜像!

2401_84187537的博客 283
上一篇: Shell学习笔记
下一篇: Common Linux Privesc(常见的Linux提权--easy)
Che_ng
博客等级 码龄5年 112粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值