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. AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...

  2. ORM增删改查并发性能测试

    这两天在对一些ORM进行性能测试(涉及SqlSugar.FreeSql.Fast.Framework.Dapper.LiteSql),测试用的是Winform程序,别人第一眼看到我的程序,说,你这测试 ...

  3. 华南理工大学 Python第3章课后小测-2

    1.(单选)给出如下代码 s = 'Hello scut' print(s[4::-1]) 上述代码的输出结果是(本题分数:2)A) HelloB) olleHC) scutD) tucs您的答案:B ...

  4. 后端程序员实现一个IP归属地的小程序

    在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...

  5. 谣言检测——(GCAN)《GCAN: Graph-aware Co-Attention Networks for Explainable Fake News Detection on Social Media》

    论文信息 论文标题:GCAN: Graph-aware Co-Attention Networks for Explainable Fake News Detection on Social Medi ...

  6. linux系统排查数据包常用命令

    1.查看当前系统中生效的所有参数 sysctl -a 2.统计处于TIME_WAIT状态的TCP连接数 netstat -ant|grep TIME_WAIT|wc -l 3.统计TCP连接数 net ...

  7. 复现CVE-2022-10270(向日葵远程代码执行漏洞)

    警告 请勿使用本文提到的内容违反法律.本文不提供任何担保. 漏洞描述 向日葵是一款免费的,集远程控制电脑手机.远程桌面连接.远程开机.远程管理.支持内网穿透的一体化远程控制管理工具软件.CNVD披露了 ...

  8. 史上最全的selenium三大等待介绍

    一.强制等待 1.设置完等待后不管有没有找到元素,都会执行等待,等待结束后才会执行下一步 2.实例 driver = webdriver.Chrome() driver.get("https ...

  9. 1_Maven

    一. 引言 1.1 项目管理问题 项目中jar包资源越来越多, jar包的管理越来越沉重 1.1.1 繁琐 要为每个项目手动导入所需的jar, 需要搜集全部的jar 1.1.2 复杂 项目中的jar如 ...

  10. 企业MES系统与ERP信息集成要素有哪些?

    关于要讲明企业MES系统与ERP信息集成要素有哪些,得先弄清楚他们之间的关系:从工厂的管理来说,ERP在上MES在下,ERP统领企业全局包括MES,为管理层服务,重心在于企业决策,ERP对企业宏观管理 ...