1.docker的基本使用
1.简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
在之前的项目部署中,我们需要在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的基本使用的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- Docker 第一篇--初识docker
已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...
- 在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 ...
- docker for mac 学习记录
docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...
- scrapy爬虫docker部署
spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...
- [原][Docker]特性与原理解析
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...
- 开发者的利器:Docker 理解与使用
困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...
- 使用python自动生成docker nginx反向代理配置
由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...
- 微服务与Docker介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
随机推荐
- AI听曲识歌!哼曲、口哨吹,都能秒识! ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...
- ORM增删改查并发性能测试
这两天在对一些ORM进行性能测试(涉及SqlSugar.FreeSql.Fast.Framework.Dapper.LiteSql),测试用的是Winform程序,别人第一眼看到我的程序,说,你这测试 ...
- 华南理工大学 Python第3章课后小测-2
1.(单选)给出如下代码 s = 'Hello scut' print(s[4::-1]) 上述代码的输出结果是(本题分数:2)A) HelloB) olleHC) scutD) tucs您的答案:B ...
- 后端程序员实现一个IP归属地的小程序
在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...
- 谣言检测——(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 ...
- linux系统排查数据包常用命令
1.查看当前系统中生效的所有参数 sysctl -a 2.统计处于TIME_WAIT状态的TCP连接数 netstat -ant|grep TIME_WAIT|wc -l 3.统计TCP连接数 net ...
- 复现CVE-2022-10270(向日葵远程代码执行漏洞)
警告 请勿使用本文提到的内容违反法律.本文不提供任何担保. 漏洞描述 向日葵是一款免费的,集远程控制电脑手机.远程桌面连接.远程开机.远程管理.支持内网穿透的一体化远程控制管理工具软件.CNVD披露了 ...
- 史上最全的selenium三大等待介绍
一.强制等待 1.设置完等待后不管有没有找到元素,都会执行等待,等待结束后才会执行下一步 2.实例 driver = webdriver.Chrome() driver.get("https ...
- 1_Maven
一. 引言 1.1 项目管理问题 项目中jar包资源越来越多, jar包的管理越来越沉重 1.1.1 繁琐 要为每个项目手动导入所需的jar, 需要搜集全部的jar 1.1.2 复杂 项目中的jar如 ...
- 企业MES系统与ERP信息集成要素有哪些?
关于要讲明企业MES系统与ERP信息集成要素有哪些,得先弄清楚他们之间的关系:从工厂的管理来说,ERP在上MES在下,ERP统领企业全局包括MES,为管理层服务,重心在于企业决策,ERP对企业宏观管理 ...