Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级、可移植的、自给自足的容器。Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。

docker核心概念:

镜像image:容器的模板,通过镜像可以创建容器。

容器container:轻量级的运行沙箱,里面包含着程序和程序运行所附带的运行环境(用户权限、进程空间、用户空间、网络等)。容器是从镜像创建的应用运行实例。

仓库Repositiry:存放镜像的地方,docker官方仓库docker hub

容器引擎:docker-ce 社区版 docker-ee 企业版

安装Docker

https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.57e31b11xdEX47

docker version --查看当前docker版本

镜像操作命令:

OpenVz官方镜像站:https://wiki.openvz.org/Download/template/precreated

创建:

docker pull 仓库注册地址/仓库名

-a --获取仓库中所有镜像

docker pull ubuntu:18.04 --获取镜像到本地(仓库名:标签)如果不添加标签,则获取最新版

自定义创建镜像:

docker commit -m "注释" -a "作者信息" 容器ID 新仓库名:标签 --基于容器创建一个新的镜像

示例:docker commit -m "add new file" -a "bert" 3dcd bert:1.0 --基于容器ID:3dcd创建一个新的镜像bert:1.0

docker import 模板(由官方提供模板)文件路径 name:tag --基于本地导入镜像(仅导入镜像中的文件系统)

基于dockerfile创建:写一个脚本dockerfile文件,利用一个指定的父镜像,对父镜像进行操作描述

存出镜像:docker save -o 保存后的文件路径.格式 镜像ID\name:tag

docker save 镜像ID\name:tag > bert.tar --可以通过重定向存出镜像

载入镜像:docker load -i 文件需要载入的文件路径

上传镜像:将已存在的镜像上传到镜像仓库

(1)先将镜像存出,然后发送到仓库

(2)docker push name:tag 使用push时注意镜像仓库名必须和实际仓库名一致

镜像查看:

docker image ls --查看当前获取完成的镜像-使用仓库名、标签、镜像ID确定一个镜像

-a --列出所有镜像

-f --过滤 实例: -f dangling=true --只显示没有被使用过的镜像

-q --仅输出ID信息,默认为否

docker image inspect ubuntu:18.04 --查看镜像详细信息

docker image inspect f9a80a55f492 (64个16进制,256比特) --查看镜像详细信息

docker history ubuntu:18.04 --查看镜像历史封装内容

docker history f9a80a55f492



docker tag ubuntu:latest myubuntu:1.1 --自定义仓库名和标签(不会再占用空间大小)

镜像管理:

docker search [option] --搜索含有关键字的仓库或镜像

docker search --filter=is-official=true nginx

docker rmi 镜像ID\name:id --删除镜像

docker image rm 镜像ID\name:id

--删除时如果镜像有对应运行容器,则镜像无法删除(可以使用-f强制执行)

--如果镜像存在多个链接镜像,则删除时无法同时删除多个镜像(可以使用-f强制执行)

docker image prune --清理镜像(批量的对镜像进行删除)

-a --删除所有无用的镜像

--filter --通过过滤相关条件

-f --强制清理,不进行提示

容器操作命令:

容器创建:

docker create 镜像ID\name:id --创建容器(创建出来的容器默认为关闭的)

-t --分配一个伪终端

-i --保持标准输入打开(没有的话,进入容器无法输入命令)

-d --是否在后台运行容器(保持守护进程)

docker create -it ubuntu:18.04 --创建容器



docker run 镜像ID\name:id --创建容器()

工作逻辑:

1、检查本地是否有镜像,没有则自动去公共仓库下载

2、利用镜像创建一个容器,并启动该容器

3、分配一个文件系统给容器,并在只读镜像层外挂载读写层

4、从宿主机配置的网桥接口中桥接一个虚拟接口到容器中

5、从网桥地址池配置一个IP地址给容器

6、执行用户指定的应用程序

7、执行完成后容器自动终止

容器查看:

docker ps -a --查看当前所有容器(包括关闭的)

容器管理:

(1)docker start 容器ID --启动容器



(2)docker restart 容器ID --重启容器

进入容器

(1)docker attach 容器ID --进入容器操作(建议在启动和创建容器时,加入-it。使用exit\ctrl+d退出容器进程)

attache多个窗口进入到同一个容器是,命令会同步显示

(2)dcoker exec -it 容器ID /bin/bash --可以启动新的终端,指定终端类型

删除终止容器

(1)docker rm 容器ID --删除处于终止或退出状态的容器

-f --强制删除

-l --删除容器的连接,但是保留容器

-v --删除容器挂载的数据卷

(2)docker stop 容器ID --终止容器

(3)docker pause 容器ID --暂停容器,unpause解除

(4)docker container pause --清除关闭的容器

(5)docker kill 容器ID --强制终止容器,直接发送sigkill信号

导入和导出容器

(1)导出容器:docker export -o 导出的文件路径 容器ID

docker export 容器ID > bert.tar --使用重定向的方式导出

(2)导入容器:docker import 123.tar name:tag

查看容器

(1)docker container inspect 容器ID --查看容器的详细信息

(2)docker top 容器ID --查看容器内的进程

(3)docker stats 容器ID --查看容器的统计信息

(4)docker ps --查看已运行的容器

-a --查看所有容器

容器和主机之间复制文件

docker cp 主机本地文件路径 容器ID:容器内路径

示例:docker cp /bert.txt 523:/ --拷贝当前主机的bert.txt文件到容器ID为523的/目录下

示例:docker cp 523:/bert.txt /tmp --拷贝容器ID为523的/bert.txt文件到当前主机/tmp目录下

查看容器内文件系统的变更

docker diff 容器ID

查看容器端口映射

docker container port 容器ID

更新配置命令

docker container update 容器ID --更新容器运行时的配置或者设置资源限制配额

仓库命令

1、公共仓库

docker hub 公共镜像仓库 https://hub.docker.com

docker pull 仓库地址/维护用户名/仓库名

2、第三方仓库

3、本地仓库

docker run -d -p 5000:5000 registry:2

-p --指定端口映射

-d --后台进程保护

docker run -itd -v /docker/registry/:/docker/registry -p 5000:5000 --restart=always --name bert registry:latest

参数说明

1)-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;

2)-v:把宿主机的/docker/registry目录绑定到容器/docker/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;

3)-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;

4)--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;

5)--name bert:创建容器命名为bert,可自定义任何名称;

6)registry:latest:这个是pull下来的镜像;

curl http://9.134.130.35:5000/v2/_catalog --查看仓库镜像文件,用浏览器访问也是同样的结果

客户端更改配置文件

vim /etc/docker/daemon.json --修改下载的镜像源,添加私有镜像服务器的地址



修改后需要重启docker才能生效

docker数据管理

docker的数据卷是一个可以供容器使用的特殊目录或文件,它将主机操作系统目录直接映射进容器,类似于linux的mount挂载文件系统的行为。

1、数据卷可以在主机和容器之间共享和重用

2、数据卷内的数据修改后会立即生效,无论是容器内的操作还是本机操作

3、数据卷的更新不会影响容器

4、卷可以一直存在,直到没有容器使用

数据卷的管理命令

docker volume 默认保存在本地的/var/lib/docker/volumes下

docker volume rm 卷名 --删除卷

docker volume ls --列出卷列表

docker volume create -d local test --创建本地名为test的卷

docker volume inspect test --查看卷的详细信息

docker volume prune -a --清除所有无用的卷

容器引擎-Docker的更多相关文章

  1. 你不得不了解的应用容器引擎---Docker

    最近突然想搭一个redis集群玩玩,因为公司的电脑同时开2个虚拟机就卡的不行,所以我就想到用Docker开启多个redis-server来搭建.然后在网上找着找着发现,使用Docker,哪需要搭建啊, ...

  2. 【开发工具 docker】值得学习的应用容器引擎docker安装

    概述: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何 ...

  3. 应用容器引擎-Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

  4. Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布

    微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...

  5. Kubernetes将弃用Docker!与 containerd容器引擎

    时间戳:2022-06-07 20:32:19 星期二 撰写文档参考:(阿良-腾讯课堂)Kubernetes将弃用Docker 参考博客k8s入坑之路(3)containerd容器 container ...

  6. 史上最全面的Docker容器引擎使用教程

    目录 1.Docker安装 1.1 检查 1.2 安装 1.3 镜像加速 1.4 卸载Docker 2.实战Nginx 3.Docker命令小结 4.DockerFile创建镜像 4.1 Docker ...

  7. Centos7下安装与卸载docker应用容器引擎

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  8. Docker 1.3.3/1.4.0 发布下载,Linux 容器引擎

    Docker 1.3.3 发布,下载地址: https://github.com/docker/docker/archive/v1.3.3.zip 改进记录包括: Security Fix path ...

  9. 操作系统-容器-引擎容器-百科:Docker

    ylbtech-操作系统-容器-引擎容器-百科:Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上 ...

  10. 【转帖】技术选型之Docker容器引擎

    技术选型之Docker容器引擎 https://segmentfault.com/a/1190000019462392 图过不来的 原作者写的挺好的 题外话 最近对Docker和Kubernetes进 ...

随机推荐

  1. Qt编写安防视频监控系统44-视频上传

    一.前言 视频上传用来将本地存储的视频文件上传到云端服务器,间接的实现了本地视频存储到云端的功能,其实本质上是先存储在本地,文件生成后再去上传到云端的,最终的效果一样就是,为了拓展兼容性,直接做了单独 ...

  2. Ubuntu 20.04编译opencv-3.1.0时报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope

    Ubuntu 20.04源码编译安装opencv320 报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope的解决办法 ...

  3. [转]CUDA,NVIDIA Driver,Linux,GCC之间的版本对应关系表格

    在安装CUDA时一定要注意其与英伟达显卡驱动以及Linux系统和GCC版本的对应关系,如果版本之间不匹配,是安装不成功的. 一.CUDA与Driver的对应版本 参考链接:https://docs.n ...

  4. 【问题解决记录】vue解决低版本安卓与ios10以下系统兼容性问题

    问题描述: 项目中的企业微信内部应用,使用Vue-cli搭建的H5页面web,在低版本的安卓手机或ios8.0.9.0中出现接口数据访问失败,HTTP状态码返回0的问题,无法正常使用系统.安卓手机主要 ...

  5. winform 引用AForge调用摄像头拍照

    Nuget安装这个2个: AForge.Controls; AForge.Video.DirectShow; code: namespace WindowsFormsApp1 { partial cl ...

  6. 第八章 AtomicInteger源码解析

    1.原子类 可以实现一些原子操作 基于CAS 下面就以AtomicInteger为例. 2.AtomicInteger 在没有AtomicInteger之前,对于一个Integer的线程安全操作,是需 ...

  7. UTS Open '21 P6 - Terra Mater

    传送门 前言 本题是一道很好的"dp"题,无论是正难反易,还是模型转化都值得称赞,尤其是最后的神之一手,让我大脑宕机. 题意描述 给定一个长度为 \(N\) 的序列 \(H\),修 ...

  8. CentOS7安装nvm和node

    一.安装nvm 官方文档:https://github.com/nvm-sh/nvmwindows版文档:https://github.com/coreybutler/nvm-windowswindo ...

  9. 云电脑Win7系统安装报错详解:问题与解决方案

    本文分享自天翼云开发者社区<云电脑Win7系统安装报错详解:问题与解决方案>,作者:每日知识小分享 随着云计算技术的快速发展,越来越多的人开始使用云电脑.然而,在为云电脑安装Win7系统时 ...

  10. 恭喜我同事的论文被IEEE HPCC收录!

    近日,由天翼云科技有限公司云网产品事业部天玑实验室撰写的<关于公有云区分负载QoS感知的内存资源动态超分管理优化>(Thoth:Provisioning Overcommitted Mem ...