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 MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Docker镜像

Docker 镜像提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
通俗点讲,Docker镜像就像是一个模版,可以通过他来创造容器

Docker容器

容器和镜像之间的关系,有点像面对对象语言中的ClassInstance的关系,容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但又跟一般的进程不一样。容器可以有自己的文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 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 --help

Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST] # 这个参数选择版本

Pull an image or a repository from a registry

Options:
  -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 --help

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

Options:
  -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 --help

Usage:  docker ps [OPTIONS]

List containers

Options:
  -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     # 强制停止容器  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值