Docker学习

前言

今天第一次学习docker,跟着一位up主的视频进行了练习,把一些视频中讲到的内容记录了下来,并结合菜鸟教程中docker教程写下本文。

本文是我零基础入门docker的第一篇文章,供大家参考,自身实力不足,难免出现纰漏,恳请指出,希望大家共同努力,一起变强!

什么是docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

如何练习

Play With Docker( PWD )是一个利用云主机搭建的在线实验环境,具有开源免费、 Web 端友好、指引步骤详细、开箱即用等特性,用户可以构建、运行Docker容器,甚至可以在Docker Swarm模式下创建集群。

https://labs.play-with-docker.com/

新手常见命令

docker pull

docker pull : 从镜像仓库中拉取或者更新指定镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

docker pull nginx

完成从仓库 通过pull 构建成镜像

docker images查看镜像

​ 查看有哪些镜像

docker run创建容器

docker run -d -p 80:80 nginx

​ 创建一个新的容器并运行一个命令

语法docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

-d 为后台运行容器 返回容器ID

-p 指定端口映射 主机端口:容器端口

​ 用docker run -d -p 81:80 nginx可以创建一个新的外部端口映射到相同的容器端口,打开的页面相同

以命令行模式进入容器

$ docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

docker ps查看运行的容器

​ 查看正在运行的容器

docker exec执行命令

​ exec命令退出容器终端,不会导致容器的停止

​ 在运行的容器中执行命令

docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

OPTIONS说明:

  • -d 分离模式: 在后台运行
  • **-i ** 即使没有附加也保持STDIN 打开
  • -t **分配一个伪终端

容器的进入与退出

##### 进入bash界面

docker exec -it 90 bash (90为CONTAINER ID的前两位)

docker exec -it 90 /bin/bash

不知上述两种方法是否等价

​ 进入容器后 使用linux命令

ls

cd /usr/share/nginx/html/

​ 显示html文件

cat index.html

​ cat的作用是显示整个文件

echo hello >index.html

​ 修改文件

打开80端口的html文件 发现页面被修改 81保持不变

bash参考资料

在容器中以root@c0c.....:/#开头

exit退出容器

exit

或者使用CTRL+D

root@IP:~# 表明我们已经退出了当前的容器,返回到当前的主机中。

docker stop停止容器

docker stop c0(container id)

docker rm -f删除容器

​ 强制删除容器

docker commit 指定镜像名字

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

​ 实例

将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。

runoob@runoob:~$ docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
runoob@runoob:~$ docker images mymysql:v1
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mymysql             v1                  37af1236adef        15 seconds ago      329 MB

dockerfile

​ Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

#### 新建dockerfile文件

vim Dockerfile

​ vim操作不会的自行搜索

​ 输入如下内容

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yCQwKUly-1617546827392)(C:\Users\Zilong\AppData\Roaming\Typora\typora-user-images\image-20210404200510834.png)]

创建主页

vim index.html

docker build

docker build -t name2 .

​ 用docker images查看镜像 发现已经创建name2的镜像

使用 docker run -d -p 91:80 name2 运行镜像

通过91号端口即可进入新的容器html主页

docker save 保存容器到镜像

docker save name2 > 1.tar

docker load

​ 导入使用 docker save 命令导出的镜像。

docker load < 1.tar

参考资料

docker10分钟入门

docker菜鸟教程

新手零基础快速入门Docker相关推荐

  1. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  2. rust放置木箱转向_[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]...

    [易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kre ...

  3. 零基础快速入门web学习路线(含视频教程)

    下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...

  4. python海龟教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环...

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  5. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  6. ROS2零基础快速入门

    ROS2入门最快需要多少时间?3天: ROS2开发一款基础机器人需要多久?3个星期: ROS2怎么才能算"精通"?不可能,3年也不行-- 如何判断一款通用性软件成熟并可以投入精力去 ...

  7. 零基础快速入门SpringBoot2.0教程 (三)

    一.SpringBoot Starter讲解 简介:介绍什么是SpringBoot Starter和主要作用 1.官网地址:https://docs.spring.io/spring-boot/doc ...

  8. 【PR】零基础快速入门教程

    [PR]零基础快速入门教程 PR(Premiere)能做什么? PR欢迎界面及新建项目 工作区及窗口说明 导入文件 建立序列 视频剪辑 添加字幕 导出视频 使用软件:Premiere2020 新年卷起 ...

  9. 《Kubernetes零基础快速入门》简介

    容器技术快速入门书<Kubernetes零基础快速入门>,京东当当天猫都有发售.定价59元,打折一下更合适. Kubernetes为容器化的应用提供了资源调度.部署.运行.服务发现.扩容和 ...

最新文章

  1. 【微信小程序canvas】实现小程序手写板用户签名(附代码)
  2. 科大星云诗社动态20210423
  3. Android WebView 致安卓应用闪退,mPaaS 助你规避这波 Bug
  4. (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
  5. Day Two(Beta)
  6. 用python进行多页数据爬取_Python Scrapy如何实现多页数据爬取?
  7. DDD:四色原型、DDD、DCI之间的关系
  8. 从王者荣耀里我学会的前端新手指引
  9. 不使用资源文件动态创建对话框的做法
  10. H3C nat转换实验
  11. Spring Security 11 种过滤器介绍
  12. 大唐杯 5G协议与信令 任务六、任务七(24:30-35:00)
  13. [Matlab] norm函数用法(用于RMSE和R2)
  14. 在三维空间中表示平面和直线
  15. 学计算机的女生选择公务员还是考研,女生本科毕业!考研好,还是考公务员更好?...
  16. vulcan 编程_Vulcan和AUSK之间的比较:如何充分利用Node,React和GraphQL
  17. 安卓手机真的不行了,搞不定卡顿问题,只能抄袭苹果iOS系统,然而各怀鬼胎的它们终究画虎不成反类犬...
  18. [分享] 【强烈推荐】要速度更要方便!75款实用Chrome插件推荐
  19. 【XSY3126】异或II 数学
  20. brk系统调用和copy-on-write机制

热门文章

  1. vue 使用table2excel导出excel表格(带图片)
  2. 問題の解決策 [USACO18JAN]Lifeguards P(题解)
  3. 会计记账公式、六要素、记账流程
  4. C语言编程从键盘输入n值
  5. 以人工智能或无人化、自动化技术影响世界
  6. 非计算机专业有前景吗,十大最有前景的专业,第一名居然不是计算机
  7. oracle.jdbc.driver.OracleDriver和oracle.jdbc.OracleDriver这两个驱动有什么区别?
  8. 推荐几款HTML5开发工具
  9. Docker、nvidia-container-toolkit安装与常用docker命令及docker镜像和容器的更新维护
  10. 击中击不中变换的作用理解