Docker入门实践
容器技术
容器一词的英文是container,除了容器container还有集装箱的意思。集装箱有一下几个特点
- 集装箱相互隔离
- 多次使用,使用周期长
- 快速装货与卸货
回到计算机的世界中来,容器技术可以让应用程序之间运行时相互隔离。
在之前,可以通过将应用程序部署在不同的虚拟机中从而实现隔离。
与虚拟机通过操作系统实现隔离不同,容器技术只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配置。容器更加的轻量级且占用的资源更少
什么是Docker?
- docker是一个开源的软件部署解决方案
- docker也是轻量级的应用容器框架
- docker可以打包、发布、运行任何的应用
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。
Docker应用场景
- web应用的自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他的后台应用
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境
Docker系统架构
标题 | 说明 |
---|---|
镜像(Images) | Docker 镜像是用于创建 Docker 容器的模板 |
容器(Container) | 容器是独立运行的一个或一组应用 |
仓库(Registry) | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 |
客户端(Client) | Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信 |
主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器 |
Docker Machine | Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
Docker镜像
Docker 镜像提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
通俗点讲,Docker镜像就像是一个模版,可以通过他来创造容器
Docker容器
容器和镜像之间的关系,有点像面对对象语言中的Class
与Instance
的关系,容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但又跟一般的进程不一样。容器可以有自己的文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器与容器之间是隔离的,容器与宿主机(运行容器的机器)也是隔离的
Docker仓库
Docker仓库集中存储,分发镜像,对镜像进行管理。
一个 Docker Registry 中可以包含多个仓库,每个仓库可以有很多个Tag,一个Tag对应代表一个镜像
Docker命令
1. 帮助命令
docker version # 查看docker版本
docker info # 查看docker详细信息
docker --help # 查看docker帮助手册
2. 镜像命令
查看镜像
[root@DTYYDS ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 5 months ago 231MB# 解释
REPOSITORY : 镜像的仓库
TAG : 镜像的标签
IMAGE ID : 镜像的ID
CREATED : 镜像的创建时间
SIZE : 镜像的大小# 可选参数
Options:-a, --all Show all images (default hides intermediate images)--digests Show digests-f, --filter filter Filter output based on conditions provided--format string Pretty-print images using a Go template--no-trunc Don't truncate output-q, --quiet Only show image IDs
搜索镜像
[root@DTYYDS ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12231 [OK]
mariadb MariaDB Server is a high performing open sou… 4695 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 907 [OK]
percona Percona Server is a fork of the MySQL relati… 571 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 466 [OK]
mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 93
centos/mysql-57-centos7 MySQL 5.7 SQL database server 92
bitnami/mysql Bitnami MySQL Docker Image 65 [OK]
databack/mysql-backup Back up mysql databases to... anywhere! 56
circleci/mysql MySQL is a widely used, open-source relation… 25
ubuntu/mysql MySQL open source fast, stable, multi-thread… 24
mysql/mysql-router MySQL Router provides transparent routing be… 23
centos/mysql-56-centos7 MySQL 5.6 SQL database server 22
google/mysql MySQL server for Google Compute Engine 19 [OK]
mysqlboy/mydumper mydumper for mysql logcial backups 3
mysqlboy/docker-mydumper docker-mydumper containerizes MySQL logical … 3
bitnami/mysqld-exporter 2
ibmcom/mysql-s390x Docker image for mysql-s390x 1
ibmcom/tidb-ppc64le TiDB is a distributed NewSQL database compat… 0
mysqlboy/elasticsearch 0
mysqleatmydata/mysql-eatmydata 0
mysql/mysql-operator MySQL Operator for Kubernetes 0
mirantis/mysql 0
cimg/mysql 0
mysql/ndb-operator MySQL NDB Operator for Kubernetes 0
[root@DTYYDS ~]# ## 可选参数
Options:-f, --filter filter Filter output based on conditions provided--format string Pretty-print search using a Go template--limit int Max number of search results (default 25)--no-trunc Don't truncate output
拉取镜像
[root@DTYYDS ~]# docker pull ubuntu
Using default tag: latest # 默认最新版本
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322 # 签名
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest # 真实地址[root@DTYYDS ~]# docker pull --helpUsage: docker pull [OPTIONS] NAME[:TAG|@DIGEST] # 这个参数选择版本Pull an image or a repository from a registryOptions:-a, --all-tags Download all tagged images in the repository--disable-content-trust Skip image verification (default true)--platform string Set platform if server is multi-platform capable-q, --quiet Suppress verbose output
删除镜像
[root@DTYYDS ~]# docker rmi ubuntu. ## rmi = remove image
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Deleted: sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1
Deleted: sha256:9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b[root@DTYYDS ~]# docker rmi --helpUsage: docker rmi [OPTIONS] IMAGE [IMAGE...]Remove one or more imagesOptions:-f, --force Force removal of the image--no-prune Do not delete untagged parents
[root@DTYYDS ~]#
3. 容器命令
新建容器并启动
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]--name="Name" 指定容器名字
-d 后台运行
-it 以交互形式运行
-p 指定端口-p 主机端口:容器端口-p 容器端口
-P 随机端口
查看容器
[root@DTYYDS ~]# docker ps --helpUsage: docker ps [OPTIONS]List containersOptions:-a, --all Show all containers (default shows just running)-f, --filter filter Filter output based on conditions provided--format string Pretty-print containers using a Go template-n, --last int Show n last created containers (includes all states) (default -1)-l, --latest Show the latest created container (includes all states)--no-trunc Don't truncate output-q, --quiet Only display container IDs-s, --size Display total file sizes
删除容器
docker rm 容器id # 按id删除容器
docker rm -f $(docker ps -aq) # 删除所有容器 -f是强制删除的意思
容器的启动与停止
docker restart 容器id # 重启容器
docker start 容器id # 启动容器
docker stop 容器id # 停止容器
docker kill 容器id # 强制停止容器
Docker入门实践相关推荐
- 这是一次 docker 入门实践
前言 其实接触 docker 也有一段时间了,但是一直没有做下总结,现在网上关于 docker 的介绍也有很多了,本着好记性不如烂笔头的原则,还是自己再记录一波吧. 实现目标 安装 docker ce ...
- docker入门实践之数据卷管理
在实际使用docker过程中,有时需要查看容器内应用产生的数据,或需要把容器内的数据进行备份,甚至是多个容器间需要共享数据,这势必涉及到数据管理,那么docker的数据怎么管理呢? 容器中数据管理主要 ...
- docker入门实践,我与你一起实战演练
查看本地所有的镜像 docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE nginx latest 7b2ec12a5042 3 mon ...
- docker入门实践,制作属于自己的mysql5.7镜像
在docker容器中安装Mysql 在docker容器中安装Mysql,与直接在centos中安装是没有任何区别的,可以参考这篇文章下载必要的安装包,并进行安装 https://blog.csdn.n ...
- docker入门实践,安装指定版本的mysql镜像
本文以安装mysql5.7为例 查找镜像仓库 含有mysql关键字的记录,这里选择了stars最高,即第1条 $ docker search mysql NAME DESCRIPTION STARS ...
- Docker快速入门实践-纯干货文章
Docker快速入门实践-老男孩高级架构师课程内容,如果细看还能发现讲解视频呦!小伙伴们赶紧猛戳吧! 老男孩高级架构师内部学员实践文档分享! Docker快速入门实践-纯干货文章 老男孩教育2016启 ...
- Docker入门到实践 (一) docker简介与安装、常用命令讲解
Docker入门到实践 (一) docker简介与安装 一.docker 介绍 Docker 是一个开源的应用容器引擎 打包应用以及依赖包到一个可移植的镜像中,发布到任何机器上,实现虚拟化.容器是 ...
- 容器化技术最佳实践1--容器化技术简介与Docker入门
容器化技术最佳实践1–容器化技术简介与Docker入门 文章目录 容器化技术最佳实践1--容器化技术简介与Docker入门 容器化简介 通过虚拟化了解容器化 对开发和运维的好处 容器化部署特点 什么情 ...
- 前端的Docker入门与实践
前端的Docker入门与实践 感谢 & 参考 本文内容还是相对很浅的,Docker中关于分布式,集群的内容没有涉及,所以本文推荐前端同学看一看,后端同学就不推荐了.本文中所有命令都是针对Ubu ...
最新文章
- 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)
- centos eclipse 安装
- Kendo UI Validator 概述
- python写接口函数_python接口自动化测试二十:函数写接口测试
- django 指定模型排除的字段
- Linux按照行数、大小切分文件
- xampp 中 mysql的相关配置
- ie-此更新不适应于此电脑
- 【渝粤教育】广东开放大学 广东开放大学学习指引 形成性考核 (28)
- P3287 [SCOI2014]方伯伯的玉米田
- 打码兼职练习程序下载及说明
- “你给查查本月及下月入司一年+的员工”
- STM32F4基于DMA的多通道ADC采集——遇到的问题解决
- 21 | 良心中间商:HTTP的代理服务
- 中国企业数字银行行业市场供需与战略研究报告
- 【微处理器与嵌入式】实验2——蜂鸣器+流水灯 汇编
- 云数据中心与传统数据中心
- JavaScript在函数中定义全局变量
- 分时租赁大败退之下 威马汽车缘何涉足共享出行?
- Word2003表格内容无法居中的几种解决方案