Docker基本用法到自定义镜像-基础入门学习

Docker基本用法篇(个人基础入门学习)

Docker 简介:
在这里插入图片描述

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口 (类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 的应用场景
Web 应用的自动化打包和发布
自动化测试和持续集成、发布
在服务型环境中部署和调整数据库或其他的后台应用
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS (Platform-as-a-Service) 环境
Docker 的优点
简化程序:Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
避免选择恐惧症:如果你有选择恐惧症,还是资深患者。Docker 帮你打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
节省开支:一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
Docker 引擎
Docker 引擎是一个包含以下主要组件的客户端服务器应用程序。
一种服务器,它是一种称为守护进程并且长时间运行的程序。
REST API用于指定程序可以用来与守护进程通信的接口,并指示它做什么。
一个有命令行界面 (CLI) 工具的客户端。
Docker 引擎组件的流程如下图所示:

在这里插入图片描述
Docker 功能特点:
虽然Docker提供了很多功能,但这里只列出了一些主要功能,如下所示:
轻松快捷的配置
这是Docker的一个主要功能,可帮助我们轻松快速地配置系统。可以在更少的时间和精力的情况下部署代码。 由于Docker可以在各种各样的环境中使用,基础架构不再要求与应用程序的环境相关联。
提高工作效率
通过放宽技术配置和应用的快速部署。 毫无疑问,它节约了时间提高了生产率。 Docker不仅有助于在孤立环境中执行应用程序,而且还减少了资源。
应用隔离
Docker提供用于在隔离环境中运行应用程序的容器。 每个容器独立于另一个容器,并允许执行任何类型的应用程序。
云调度
它是Docker容器的集群和调度工具。 Swarm使用Docker API作为其前端,这有助于我们使用各种工具来控制它。 它还可以将Docker主机集群控制为一个虚拟主机。 这是一个用于启用可插拔后端的自组织引擎组。

路由网
它将可用节点上已发布端口的传入请求路由到活动容器。 即使节点上没有任务正在运行,此功能也可以实现连接。
服务
服务是允许指定集群内的容器状态的任务列表。 每个任务表示一个应该运行的容器的一个实例,并且Swarm在节点之间调度它们。
安全管理
它允许将保密数据保存到云群 (swarm) 中,然后选择给予服务访问某些保密数据。它包括一些重要的命令给引擎,如保密数据检查,保密数据创建等。

在这里插入图片描述

出现这种情况使用root用户执行赋权命令:
#sudo usermod -aG docker root
重新登录

使用docker测试hello-world(参考:https://blog.csdn.net/qq_26624661/article/details/79565735)
docker pull hello-world来拉取hello-world镜像
从仓库拉取到了HelloWorld的镜像,接下来我们来运行一下,通过输入docker run hello-world
如图:
使用docker images查看镜像
查看docker容器

docker ps -a

删除docker容器
#docker rm 容器id

运行交互式容器
docker pull ubuntu(拉取ubuntu镜像,该镜像包含完整的操作系统)
在这里插入图片描述
进入ubuntu
在这里插入图片描述

后台运行与停止容器:
输出一个死循环语句
docker run -d ubuntu /bin/sh -c “while true;do echo hello docker;sleep 1;done”
在这里插入图片描述
docker run -d(表示后台运行) ubuntu /bin/sh -c “while true;do echo hello docker;sleep 1;done”
查看docker日志docker logs 90128ffdda84(容器iD)
在这里插入图片描述
停止docker容器
docker stop 90128ffdda84
与一个正在运行容器交互
#docker exec -it 90128ffdda84(容器id) /bin/bash
进入docker容器后
查看正在执行的命令
#ps -ef|grep echo
在这里插入图片描述
在这里插入图片描述
Docker帮助命令
#docker command -help
Docker ps 下有哪些可以执行的命令
#docker ps --help
在这里插入图片描述
运行WEB容器
docker run -d(后台运行) -P(即port,将容器的端口完全映射到宿主机上) training/webapp(这一部分为镜像) python app.py(这一部分内容为执行python app.py命令)
在这里插入图片描述
-p(小写的p,标识来绑定指定端口)
#docker run -d -p 5000:5000(将宿主机5000端口映射到容器5000端口) training/webapp python app.py
在这里插入图片描述
查看容器内部运行进程
#docker top a31c25c74e5e
在这里插入图片描述
查看容器状态
使用 docker inspect 来查看Docker的底层信息。它会返回一个JSON文件记录着Docker容器的配置和状态信息
#docker inspect a31c25c74e5e(或者容器名)
在这里插入图片描述
在这里插入图片描述
批量移除容器
在这里插入图片描述
批量移除容器命令
#docker rm 3749174db624 a31c25c74e5e
在这里插入图片描述
Docker镜像管理
当运行容器时,使用的镜像如果在本地中不存在,docker就会自动从docker镜像仓库中下载,默认是Dcoker Hub(https://hub.docker.com/)公共镜像源下载。

获取镜像
查看镜像
#docker images
获取镜像
#docker pull 镜像名
#docker pull tomcat
在这里插入图片描述
注:docker下载任何镜像之前都得先下载镜像的依赖,例如tomcat,要先下载一个有jdk的linux,然后在下载tomcat,类似maven下载包的方式
查找镜像

#docker search tomcat
在这里插入图片描述
Ok代表该tomcat是官方的即apache公司的
在这里插入图片描述

更新镜像
#apt-get update
在这里插入图片描述
在这里插入图片描述
修改容器数据源
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装vim参考:(https://blog.csdn.net/weixin_39800144/article/details/79231002)
#apt-get install vim 安装vim的命令
在这里插入图片描述
提交容器副本
#docker commit -m(消息日志)=”has update” -a(作者)=”yb” 容器id yb/ubuntu(镜像名称):v2(标签,不给标签默认是latest)(该镜像会发布到本地创库,不会发布到官方)
#docker commit -m=“install vim” -a=“yb” 5ffbb1b9a787 yb/ubuntu:v2

创建和移除镜像
Dockkerfile内容参考(https://www.cnblogs.com/liuyansheng/p/6098470.html)
docker build 命令用于从Dockkerfile构建映像。可以在docker build 命令中使用 -f 标志指向文件系统中任何位置的Dockerfile
#docker build -t /path/to/a/Dockerfile
所有手动安装的文件都放到/usr/local下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建Dockerfile文件(执行顺序从上到下)
在这里插入图片描述

Version 0.1

基础镜像

FROM ubuntu:latest

维护者信息

MAINTAINER [email protected]

镜像操作命令,例如 RUN tar -zxvf tomcat.tar.gz

RUN /bin/bash -c ‘echo “Hello World”’
#打包镜像的时候将宿主机文件打包到容器里面
COPY test.txt /home
#指定工作目录,如果不存在该文件夹,则新建一个,该命令可以简单理解为cd
WORKDIR /home
#将容器端口暴露出来
EXPOSE 80
EXPOSE 8080

容器启动命令

CMD {"/bin/echo",“this is a echo test”}
在这里插入图片描述
docker build 命令用于Dockkerfile构建映像
#docker build -t yb/myubuntu .
在这里插入图片描述
在这里插入图片描述
步骤四copy的文件不存在
在这里插入图片描述
在这里插入图片描述
删除错误镜像
#docker rmi bad1a5d2ca35
在这里插入图片描述
设置镜像标签
#docker tag 命令,为镜像添加一个新标签
#docker tag cf81f0c4ca27(镜像id) yb/myubuntu:v2
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46266503/article/details/106542848