Docker使用学习笔记

【Docker 学习笔记】Docker 命令大全 【Docker 学习笔记】Docker 命令大全。本文总结了Docker使用过程中常用命令,以及各命令常用参数的解释说明。 阅读详情

教程地址:
https://www.runoob.com/docker/docker-tutorial.html
(另一个很好的教程):http://www.dockerinfo.net/document
镜像表示:

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。 如ubuntu:15.10

容器使用

  1. docker命令帮助

    docker # 查看全部命令
    docker command --help # 查看command使用详情
    
  2. 新建容器

    docker run ubuntu:15.10 /bin/echo "Hello world"
    

    各个参数解析:

    • docker: Docker 的二进制执行文件。
    • run: 与前面的 docker 组合来运行一个容器。
    • ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
    • /bin/echo “Hello world”: 在启动的容器里执行的命令

    当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

     - 检查本地是否存在指定的镜像,不存在就从公有仓库下载
     - 利用镜像创建并启动一个容器
     - 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
     - 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
     - 从地址池配置一个 ip 地址给容器
     - 执行用户指定的应用程序
     - 执行完毕后容器被终止
    
  3. 新建交互式的容器

    docker run -i -t --name runtest  ubuntu:15.10 /bin/bash
    

    各个参数解析:

    • -t: 在新容器内指定一个伪终端或终端。
    • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
    • –name 指定容器名
  4. 通过运行 exit 命令或者使用 CTRL+D 来退出容器

  5. 启动容器(后台模式)

    docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    docker run -itd --name ubuntu-test ubuntu /bin/bash # 交互式后台运行
    
  6. 查看容器

    docker ps # 查看正在运行容器
    docker ps -l # 查看最新一个创建的容器
    docker ps -a # 查看所有容器
    

    输出详情介绍:

    • CONTAINER ID: 容器 ID。
    • IMAGE: 使用的镜像。
    • COMMAND: 启动容器时运行的命令。
    • REATED: 容器的创建时间。
    • STATUS: 容器状态。
    • 状态有7种:
      • created(已创建)
      • restarting(重启中)
      • running 或 Up(运行中)
      • removing(迁移中)
      • paused(暂停)
      • exited(停止)
      • dead(死亡)
    • PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
    • NAMES: 自动分配的容器名称。

    也可以使用 docker inspect 来查看容器的名字

    docker inspect -f "{{ .Name }}" aed84ee21bde
    >>/web
    
  7. 查看容器内的标准输出

    docker logs 容器名/容器id 
    docker logs -f 容器名/容器id
    
    • -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
  8. 容器使用(非新建)

    docker start 容器名/容器id  # 启用容器 
    docker stop  容器名/容器id  # 停止容器
    docker restart  容器名/容器id  # 重启容器
    
    docker start ... 包含容器文件系统挂载的操作
    docker stop ... 包含容器文件系统卸载的操作
    docker restart ... 不包含容器文件系统的卸载与挂载操作,本质上docker restart不涉及文件系统的操作,因此restart命令并不是stop与start两个命令的顺序叠加。
    
    但为了保证容器的根文件系统与内存系统mount的正确性,推荐对一个容器的重启使用docker stop xxx
    
    然后 docker start xxx,而非docker restart xxx。
    
  9. 进入容器

    # 使用-d启动容器后,容器会在后台运行,要想进入,可使用以下两个方式
    docker attach 容器名/容器id # exit后,会停止容器,同时当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
    docker exec -it 容器名/容器id /bin/bash #推荐,exit后,不会停止容器
    
  10. 删除容器

     docker rm -f 容器名/容器id  # 强制删除,即使容器在运行
    
  11. 容器更新

    # 某个使用相同镜像的容器,新安装了iputils-ping,然后提交到了镜像中
    # 另一个使用相同的容器,则可如下更新后安装
    apt-get update
    apt install iputils-ping 
    
  12. 指定端口
    https://www.runoob.com/docker/docker-container-connection.html

    docker run -d -P training/webapp python app.py # 随机端口
    docker run -d -p 5000:5000 training/webapp python app.py # 指定端口
    docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py # 绑定网络ip,访问127.0.0.1:5001则可访问容器5000端口
    docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py # /udp绑定容器udp端口 ,127.0.0.1:5000->5000/udp
    docker port 容器名/容器id # 查看容器端口映射,如返回 5000/tcp -> 0.0.0.0:5000
    
    • -P:将容器内部使用的网络端口随机映射到我们使用的主机上。 通过docker ps 的Ports查看映射关系,如0.0.0.0:32769->5000/tcp,即把宿主机的32769映射到容器的5000端口,可通过浏览器登录 宿主机ip:32769登录。
  13. 检查容器

    docker top 容器名/容器id  # 查看容器内部运行的进程
    docker inspect 容器名/容器id  # 查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
    

镜像使用

  1. 列出镜像列表

     docker images
    
    • REPOSITORY:表示镜像的仓库源

    • TAG:镜像的标签

    • IMAGE ID:镜像ID

    • CREATED:镜像创建时间

    • SIZE:镜像大小

  2. 查找镜像

    docker search 镜像名
    
    • NAME: 镜像仓库源的名称
    • DESCRIPTION: 镜像的描述
    • OFFICIAL: 是否 docker 官方发布
    • stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
    • AUTOMATED: 自动构建。
  3. 拉取镜像

     docker pull 镜像名 # 默认拉取最新版本,
     docker pull 镜像名:版本号 # 拉取指定版本
    
  4. 删除镜像

     docker rmi 镜像名(或镜像名:版本号)
    
  5. 设置镜像标签

    docker tag 860c279d2fec runoob/centos:dev
    # docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。
    

容器互联

  1. docker network create -d bridge test-net 方案: https://www.runoob.com/docker/docker-container-connection.html
  2. link方案: http://www.dockerinfo.net/%e4%bd%bf%e7%94%a8%e7%bd%91%e7%bb%9c
  3. docker compose 方案

配置DNS

全量配置

可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:

{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。

配置完,需要重启 docker 才能生效。
查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:

$ docker run -it --rm  ubuntu  cat etc/resolv.conf
  • –rm:容器退出时自动清理容器内部的文件系统。

指定容器配置

docker run -it --rm -h host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu
  • –rm:容器退出时自动清理容器内部的文件系统。

  • -h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。

  • –dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。

  • –dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

如果在容器启动时没有指定 --dns 和 --dns-search,Docker 会默认用宿主主机上的 /etc/resolv.conf 来配置容器的 DNS。

数据卷和数据卷容器

http://www.dockerinfo.net/%e6%95%b0%e6%8d%ae%e5%8d%b7volumes
https://www.cnblogs.com/wade-luffy/p/6542539.html

生产环境中使用Docker的过程中,往往需要对数据进行持久化(挂载一个主机目录作为数据卷方式),或者需要在多个容器之间进行数据共享(数据卷容器),这必然涉及容器的数据管理操作。

其实,不挂载主机目录,仅用 -v /path的容器,就是数据卷容器

Docker Dockerfile

修改已有镜像

先使用下载的镜像启动容器。

$ sudo docker run -t -i training/sinatra /bin/bash
root@0b2616b0e5a8:/#

注意:记住容器的 ID,稍后还会用到。

在容器中添加 json 和 gem 两个应用。

root@0b2616b0e5a8:/# gem install json

当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交更新后的副本。

$ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c

其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。

使用 docker images 来查看新创建的镜像。

$ sudo docker images
REPOSITORY          TAG     IMAGE ID       CREATED       VIRTUAL SIZE
training/sinatra    latest  5bc342fa0b91   10 hours ago  446.7 MB
ouruser/sinatra     v2      3c59e02ddd1a   10 hours ago  446.7 MB
ouruser/sinatra     latest  5db5f8471261   10 hours ago  446.7 MB

之后,可以使用新的镜像来启动容器

$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
root@78e82f680994:/#

利用 Dockerfile 来创建镜像

总结的好,不用精简:https://www.runoob.com/docker/docker-dockerfile.html

补充:http://www.dockerinfo.net/image%e9%95%9c%e5%83%8f

Docker Compose

告别全局搜索!7种SRP-PHAT快速算法实战对比:哪个更适合你的麦克风阵列? 本文深入探讨了7种SRP-PHAT改进算法在声源定位领域的实战表现,包括SRC、CFRC、SPF等方案。通过对比计算效率、定位精度和环境鲁棒性等核心指标,为不同场景(如会议室、智能家居、工业机器人)提供算法选型建议,帮助工程师优化麦克风阵列性能。 阅读详情

相关推荐

Fluent温度超限调试:从能量方程到网格优化的实战指南

本文深入解析Fluent中温度超限问题的诊断与解决方法,从能量方程机制到网格优化策略,提供实战指南。通过分析温度与焓的换算关系,探讨典型场景如能量方程发散、局部网格质量差等,并给出五步调试法及高级命令应用,帮助工程师有效解决温度计算异常问题。

weixin_29045585的博客 530

Docker学习

一,Docker安装Nginx 1,搜索镜像 search 2,下载镜像 pull 3,启动容器 run # -d后台运行 # --name 起名字 # -p 端口设置 [root@localhost home]# docker run -d --name nginx01 -p 3344:80 nginx 8003c462b02e14eb1ec8e715ab3bb9455fc852ff05081e9363bcafb678f5685a [root@localhost home]# docker ps

fuckcss的博客 1810

Slurm集群调度策略详解(1)-主调度

Slurm调度系统中针对作业的调度主要有三种,主调度,回填调度,GANG调度,这篇文章主要针对主调度进行解析。

h_m_l的博客 6030

docker端口含义(docker容器端口映射、容器内部端口)(port/tcp、0.0.0.0:port1->port2/tcp、:::port1->port2/tcp)

【代码】docker端口含义(docker容器端口映射、容器内部端口)(port/tcp、0.0.0.0:port1->port2/tcp、:::port1->port2/tcp)

Dontla的博客 4182

本地部署DeepSeek连接MATLAB:打造私有化AI编程助手全攻略

大型语言模型(LLM)通过理解自然语言生成代码、解释技术概念,其核心原理是基于海量数据训练的Transformer架构。这项技术为工程计算和数据分析带来了效率革命,尤其在代码生成、调试辅助和文档自动化等场景价值显著。开源模型如DeepSeek-coder凭借优秀的代码理解能力,结合Ollama提供的本地化部署方案,实现了完全离线、低延迟的私有化部署。通过配置国内镜像加速下载,并利用MATLAB内置的HTTP通信函数构造API请求,工程师可以在熟悉的MATLAB环境中直接调用本地模型,处理数据清洗、算法验证等

weixin_30239339的博客 518

Unity插件UniWebView实战:UGUI动态调整内嵌网页尺寸与交互优化

本文详细解析了如何在Unity游戏中使用UniWebView插件实现内嵌网页的动态尺寸适配与深度交互。核心在于利用Reference Rect Transform属性,将网页窗口精准绑定至UGUI控件,并随其动态调整。文章进一步探讨了通过消息系统与JavaScript执行实现Unity与网页的双向通信,并提供了加载优化、过渡动画及事件拦截等实用技巧,助力开发者打造无缝、流畅的游戏内网页体验。

earth的博客 276

Docker 实用学习笔记(看这一篇就足够了)

10.2 DockerFile 的构建过程10.3 DockerFile 的指令10.4 实战测试10.5 实战 Tomcat 镜像10.6 发布镜像十一、Docker 网络11.2 – link11.3 自定义网络11.4 实战 部署 redis 集群11.5 SpringBoot 微服务打包十二、进阶内容Author: CodingGoritDate:2020年10月24日学习笔记记录自 [B站狂神说](一、Docker 学习大纲Docker 概述Docker 安装Docker命令镜像命令容器命令操作命

2501_90472525的博客 2068

GPU服务器选购避坑指南:从硬件配置到场景化性能调优

本文提供GPU服务器选购的全面指南,涵盖硬件架构解析、应用场景配置策略和性能调优实践。针对大模型训练、推理服务和科学计算等场景,详细分析GPU选型、内存带宽匹配和散热设计等关键因素,帮助技术决策者避免常见配置误区,实现成本效益最大化。

peace的博客 1030

docker基本使用总结

docker 的好处开箱即用,一次配置环境,后续永无后顾之忧;学习docker首先要明白镜像与容器的区别,该文是在了解这两者区别基础上给出了一些常用命令的操作。

静以修身,简以养德 3875

SC-FDMA

<br />SC-FDMA(Single-carrier Frequency-Division Multiple Access,單載波分頻多工),是LTE的上行鏈路的主流多址。<br />SC-FDMA是單波載(Single-carrier),與OFDMA相比之下具有的較低的PAPR(峰值/平均功率比,peak-to-average power ratio),比多載波的PAPR低1-3dB左右(PAPR是由于多載波在频域叠加引起)。更低的PAPR可以使行動終端(mobile terminal)在發送功效方面

jod的专栏 3299

Go语言面试:面试中经常被问到的50个经典面试题(附参考答案)

Go语言核心知识点摘要 基础语法与数据结构 make和new区别:new分配零值内存返回指针,make初始化引用类型返回实例 Slice底层:包含指针、长度、容量的结构体,多个slice可共享底层数组 nil与空slice:nil指针为nil,空slice指针非nil但JSON编码不同 Map原理:哈希表实现,非线程安全,扩容策略影响性能 for range注意:循环变量是拷贝,map遍历无序 defer执行:LIFO顺序,函数返回前执行 Struct比较:仅当所有字段可比较时才可比较 参数传递:只有值传递

数据知道的博客 4721

Docker学习笔记

Docker-03.快速入门-部署MySQL哔哩哔哩bilibili](https://www.bilibili.com/video/BV1S142197x7/?前面我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢?镜像结构 要想自己构建镜像,必须先了解镜像的结构。之前我们说过,镜像之所以能让我们快速跨操作系统部署应用而忽略其运行环境、配置,就是因为镜像中包含了程序运行需要的系统函数库、环境、配置、依赖。

qq_63882368的博客 1683

【异常】XXL-JOB提示异常ERROR com.xxl.job.core.util.XxlJobRemotingUtil - connect timed out

打开XXL-JOB的ELK,发现一堆报错。

奶爸的编程之路,也就一周冷个三天 2048

【docker】docker学习笔记

docker学习笔记

weixin_43308380的博客 1361

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

狂神Docker学习笔记下载

狂神Docker学习笔记下载 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个名为“狂神Docker学习笔记.pdf”的资源文件下载。该文件是学习Docker时整理的学习笔记,内容详实,适合初学者和进阶学习者参考。 资源文件描述 文件名: 狂神Docker学习笔记.pdf 文件类型: PDF 文件大小: [文件大小] 内容概述: 该PDF文件包含了Docker的...

gitblog_06644的博客 424

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Docker的学习笔记

网上关于docker的介绍很多,要不就是讲的很底层,要不就是不连贯,能把知识穿起来的我没找到,所以最后还是自己写个笔记,方便以后回顾。对于笔记的学习,还是看不太进去,准备找一些视频介绍进行学习。

qq_55728814的博客 1686

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

docker学习笔记

学习网址 # 获取镜像 docker pull ubuntu:18.04 # 列出已经下载的镜像(-a显示中间层) docker image ls [-a] # 列出悬虚镜像(-f为过滤器) docker image ls -f dangling=true # 列出id docker image ls -q # 输出后台运行结果 docker container logs 容器名字 # 容器列出 docker container ls [-a] docker container ls --no-trun

superprintf的博客 223

Docker学习笔记索引

Docker学习笔记 ->环境与背景篇->1、容器技术 Docker学习笔记 ->环境与背景篇->2、docker简介 Docker学习笔记 ->环境与背景篇->3、安装docker(ubuntu ) Docker学习笔记 ->环境与背景篇->3、安装docker(CentOS7 ) Docker学习笔记 ->环境与背景篇->3、安装d...

外环西路 591

Docker学习笔记 - 极简极入门级

Docker学习笔记 - 极简极入门级 docker pull docker push docker images docker rmi docker run docker stop/start/restart docker rm docker ps docker exec docker logs docker save/load docker inspect docker build docker network docker volume docker compose

<font color="Pink">Tisfy的博客</font> 1678

Docker学习笔记这一篇就够

​ Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。​ Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。

weixin_45501045的博客 1061

Docker 完整学习笔记

记录docker的学习过程

dandingchongci的博客 1281
上一篇: python易忘操作和小知识点集锦
下一篇: 软件设计原则
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值