1.简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

在之前的项目部署中,我们需要在linux服务器上安装python,nginx,uwsgi,redis, ,mysql等等,这是一个非常耗时的过程,可能要花费一天的时间,如果我们在以后迁移到其他服务器怎么办,难道要重新部署一次吗?!!!

为此我们可以使用docker技术,将所有的部署放在docker中,然后将docker打包,如果以后需要迁移,直接将镜像发送到服务器,一键启动

1.1 Docker的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

1.2 相关链接

Docker 官网:https://www.docker.com

Github Docker 源码:https://github.com/docker/docker-ce

2.docker的生命周期概念

  • 镜像:一个系统的只读版本,例如一个微型的centos或者ubuntu系统

  • 容器:容器进程,应用程序以后封装在容器中运行,相互隔离

  • 仓库:存储镜像的一个仓库地址,便于和他人共享镜像文件

我们基于镜像运行容器,一个镜像可以运行多个容器实例,这样的话多个容器内的环境也是一模一样的

3.安装docker

3.1 下载

使用官方安装脚本自动安装

# 下载curl
sudo apt install curl

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3.2 确保docker服务已打开

# 查看docker服务状态 
sudo service docker status
# 重启docker服务
sudo service docker restart
# 关闭docker
sudo service docker stop
# 开启docker服务
sudo service docker start

3.3 测试docker是否成功安装

sudo docker run hello-world

显示如下下界面代表安装成功

4 卸载docker

删除安装包:

sudo apt-get purge docker-ce

删除镜像、容器、配置文件等内容:

sudo rm -rf /var/lib/docker

5 操作docker

docker服务操作

sudo service docker start   # 开启docker服务
sudo service docker stop # 关闭docker服务
sudo service docker restart # 重启docker服务
sudo service docker status # 查看docker服务状态

5.1 查看所有镜像

sudo docker images
包括:镜像名称 镜像ID 镜像创建时间 镜像大小

5.2 查看容器

docker ps   # 查看存活的容器
docker ps -a # 查看所有容器,包括已退出的容器

5.3 运行docker

在运行一个镜像的时候,如果容器中没有存活的进程,容器就会直接挂掉

# 简单运行一下,通常会执行一下容器就会挂掉
docker run 镜像名称
# 交互式的运行一个的docker容器,-i:交互式命令, -t:开启一个终端
docker run -it 镜像名称 /bin/bash # 后台运行一个docker容器,并指定运行shell代码 -d:让容器后台运行, -c:运行的shell命令
docker run -d 镜像名称 /bin/sh -c "while true;do echo 辛苦了,学习linux; sleep 1;done" # 运行容器并指定名称
docker run --name xxx -it 镜像名称 /bin/bash # 运行容器并指定端口映射
docker run --name xxx -it 镜像名称 -p 6000:5000

# 运行容器并指定端口映射,文件夹映射
docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e 环境变量key:环境变量velue
# 运行容器并制定端口映射,文件夹映射和环境PATH映射
docker run --name xxx -it 镜像名称 -p 6000:5000 -v 宿主机目录:容器目录 -e
# 进入一个存活的容器 docker exec -it 容器id /bin/bash # 容器重启 docker restart 容器id # 容器停止 docker stop 容器id # 容器启动 docker start 容器id
sudo docker run -d --name kunmzhao  -e PYTHONPATH=/home/auto/code/tng-synlite -v /host/path/to/broad-tests:/broad-tests  -v /home/mars/kunmzhao/ata_script:/ata_scripts_containers.cisco.com/synergy_lite/runnertest:3.6.15

5.4 docker镜像的获取

方式一:dockerhub获取,先搜索后下载
  docker search 镜像名称docker pull  镜像名称

​方式二:自己制作docker commit 容器id 新镜像名称

5.5 删除镜像

# 删除镜像要确保没有使用该镜像的容器,否则失败
docker rmi 镜像id # 批量删除镜像
docker rmi `docker iamges -aq`

5.6 删除容器

# 确保容器是未运行的
docker rm 容器id # 批量删除容器
docker rm `docker ps -aq`

5.7 查看指定容器的运行日志

docker logs  容器id
docker logs -f 容器id #实时刷新容器内的日志,例如检测nginx等日志信息

5.8 镜像的制作,导出及导入

  • 镜像制作

    docker commit  容器ID  镜像名称

  • 镜像导出
    docker save  镜像id   >   镜像的压缩文件

  • 镜像导入
    初次导入镜像没有tag,添加一个即可
    docker load < 镜像的压缩文件
    docker tag 镜像id 镜像新名称

1.docker的基本使用的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. javaweb-thymeleaf,加载jar包---视图基础

    1.加载完thymeleaf的jar包 将thymeleaf的jar包复制到项目下lib文件夹中 右击lib文件夹,点击Add as librarb... 打开Project Structure,找到 ...

  2. PostgreSQL 大对象导出报错问题分析

    1.前言 在处理用户问题过程遇到一个问题.用户通过pg_dump导出 bytea 对象时,当行的大小超过 1G时,会报错: [v8r6c5b41@dbhost01 ~]$ sys_dump -t t1 ...

  3. spark 执行spark-example

    1. 找到CDH 安装spark的目录 执行 which spark-shell /usr/bin/spark-shell 执行 ll /usr/bin/spark-shell lrwxrwxrwx ...

  4. B树-查找

    B树系列文章 1. B树-介绍 2. B树-查找 3. B树-插入 4. B树-删除 查找 假设有一棵3阶B树,如下图所示. 下面说明在该B树中查找52的过程 首先,从根结点出发,根结点有两个键40和 ...

  5. 为中小企业打造的数字化采购SaaS平台的特点与必要性

    ​激烈的市场竞争.复杂的国际环境.以及疫情的常态化将企业的供应链推向风口浪尖.供应链管理(SCM, Supply Chain Management).供应商关系管理(SRM,Supplier Rela ...

  6. CentOS7 系统服务器初始化配置、安全加固、内核升级优化常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875630?spm_id_from=333.999.0.0 描述: 适用于企业内部 CentOS7 系列操作服务器初始化. ...

  7. Docker目录/var/lib/docker/containers文件太大

    Docker在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加,本篇来了解一些控制日志文件的方法. 查出占用磁盘较大的文件 Docker 的日志文 ...

  8. 修改 Docker容器 自动启动/不自动启动,挂载路径,存储位置

    有时候创建容器时忘了添加参数 --restart=always,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker conta ...

  9. 01_Typora学习

    Typora学习 使用Typora 编辑器 一. 标题 一个#后加空格表示一级标题(快捷键Ctrl+1) 两个#后加空格表示二级标题(快捷键Ctrl+2) 以此类推,目前最多到六级标题(快捷键Ctrl ...

  10. PAT (Basic Level) Practice 1021 个位数统计 分数 15

    给定一个 k 位整数 N=dk−1​10k−1+⋯+d1​101+d0​ (0≤di​≤9, i=0,⋯,k−1, dk−1​>0),请编写程序统计每种不同的个位数字出现的次数.例如:给定 N= ...