Docker-简单了解和简单命令的使用

Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器(Container):容器是独立运行的一个或一组应用。
Docker 客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。
Docker 主机(Host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker 仓库(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker Hub 提供了庞大的镜像集合供使用。
Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

docker run ubuntu:18.04 /bin/echo “Hello world”
Hello world
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。

运行交互式的容器:docker run -i -t ubuntu:18.04 /bin/bash
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。

启动容器(后台模式):docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo hello world; sleep 1; done”
得到:130d9302343ce185dff8b1a8437253d9d37477f5c5102a2fcb9bda96f922fb28 这是容器id
对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

docker ps查看容器运行状态‘

docker ps -a 查看所有容器

在容器内使用docker logs + ps出来的container id或者names,查看容器内的标准输出

docker stop + container id 或者names来停止容器

docker pull + 镜像名,来预先下载镜像,例如docker pull ubuntu:18.04

docker rm + 容器名 移除指定容器。

docker rmi + 镜像名 移除指定镜像,前提是该镜像没有容器

docker run -i -t --name=容器名 镜像名 /bash/bin 创建容器并进入容器交互页面

docker exec -it 容器名 /bash/bin 进入容器交互页面

docker start/stop/restart 容器名

docker commit -m ‘日志信息’ -a ‘提交者’ 容器id 新镜像名

docker image prune 删除虚悬镜像

docker 容器名或者id logs 获取后台运行(-d)的容器的日志信息

docker run -dit --privileged --name=容器名 镜像名 /usr/sbin/init
docker exec -it 容器名 /bash/bin
来创建并进入容器交互页面,并且容器能够使用systemctl命令
-d:后台运行容器,并返回容器ID
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
-t:在新容器内指定一个伪终端或终端。

创建数据卷容器
$ docker run -it -v /dbdata --name dbdata ubuntu
将数据卷容器附给其他容器
$ docker run -it --volumes-from dbdata --name db2 ubuntu

过滤器 commit dockerfile 镜像构建上下文
RUN执行命令行编写须知(所有run都在同一个RUN当中,最后需要删除无关的文件)
健康检查HEALTHCHECK 多阶段构建

所有的文件复制均使用COPY指令,仅在需要自动解压缩的场合使用ADD
CMD容器启动命令,一般推荐使用exec格式,这类格式在解析时会被解析成为JSON数组,因此,一定要使用双引号

使用attach进入容器exit之后,容器会终止,而exec进入容器exit之后容器不会终止,推荐使用exec

Docker 不是虚拟机,容器中的应用都应该以前台执行,容器内没有后台服务的概念
容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必需的。

用户既可以使用docker load来导入镜像存储文件到本地镜像库,也可以使用dockerimport来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

容器中管理数据主要有两种方式:数据卷(Volumes)、挂载主机目录 (Bind mounts)

数据卷可以在容器之间共享和重用、对 数据卷 的修改会立马生效
对 数据卷 的更新,不会影响镜像、数据卷默认会一直存在,即使容器被删除

猜你喜欢

转载自blog.csdn.net/clearlxj/article/details/120747753
今日推荐