docker的基本使用方法
介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
docker和git的原理很像,如果你学过git那么docker你理解起来也就会更加的容易。
Docker 的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1、快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
- 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
- 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
- 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
- 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
2、响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
3、在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
Docker安装
ubuntu上安装
sudo apt-get install docker-ce docker-ce-cli containerd.io
Docker 镜像加速
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:阿里云
配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker的使用
一个小例子:使用 docker run 命令来在容器内运行一个应用程序并输出Hello world
docker run ubuntu:15.10 /bin/echo "Hello world"
你的docker执行完这一个命令到底干了什么呢?
首先你的docker会检查你当地有没有ubuntu版本号是15.10的镜像文件,如何没有就从docker服务器上下载相应的镜像进行建立容器,如果有就直接建立容器,当然我是从阿里云下载的,国外的太慢了。
下载完成后会自动运行该容器输入Hello World
各个参数解析:
docker: Docker 的二进制执行文件。run: 与前面的 docker 组合来运行一个容器。ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。/bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello world”,然后输出结果。
运行交互式的容器
我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
docker run -i -t ubuntu:15.10 /bin/bash
各个参数解析:
-t: 在新容器内指定一个伪终端或终端。-i: 允许你对容器内的标准输入 (STDIN) 进行交互。
注意第二行 root@0123ce188bd8:/#,此时我们已进入一个 ubuntu15.10 系统的容器
我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表
root@31fcd7c2c3e0:/# cat /proc/version
Linux version 5.3.0-40-generic (buildd@lcy01-amd64-024) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #32~18.04.1-Ubuntu SMP Mon Feb 3 14:05:59 UTC 2020
root@31fcd7c2c3e0:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@31fcd7c2c3e0:/#
运行 exit 命令或者使用 CTRL+D 来退出容器。
root@Ubuntu ~# docker run -d ubuntu:15.10 /bin/sh -c"while true;do echo hello world;sleep 1;done"
faf663a8110f902b16deeac092e5fd610a782c200d01de6839dfcd99c75c1a93
在输出中,我们没有看到期望的 “hello world”,而是一串长字符
faf663a8110f902b16deeac092e5fd610a782c200d01de6839dfcd99c75c1a93
这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。
首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
在宿主主机内使用 docker logs 命令,查看容器内的标准输出:
容器使用
获取镜像
docker pull ubuntu(镜像名)
启动容器
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
$ docker run -it ubuntu /bin/bash
docker start 镜像id 启动容器
docker stop 镜像id 关闭容器
docker restart 镜像id 重启容器
后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attachdocker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
attach 命令
下面演示了使用 docker attach 命令。
$ docker attach 1e560fca3906
注意: 如果从这个容器退出,会导致容器的停止。
exec 命令
下面演示了使用 docker exec 命令。
docker exec -it 243c32535da7 /bin/bash
导出和导入容器
导出容器
如果要导出本地某个容器,可以使用 docker export 命令。
$ docker export 1e560fca3906 > ubuntu.tar
导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
删除容器
删除容器使用 docker rm 命令:
$ docker rm -f 1e560fca3906
这只是最简单的用法
具体请参考: docker教程
docker的基本使用方法相关推荐
- scala akka_如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法
scala akka by Miguel Lopez 由Miguel Lopez 如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法 (How to Dockerise a S ...
- linux docker运行目录,Linux更改Docker运行根目录的方法
下面的就是解决Docker存放位置的空间太小,导致Docker运行缓慢的方法了,有遇到这个问题的用户,就用这种方法进行解决吧. 解决方法: 一是重装系统,这也太不人性化了,忽略...下次部署 Dock ...
- docker 容器环境 检测方法
1.背景 现在有研究表明,人们目前有使用Docker进行恶意代码重现工作的倾向.Docker的反检测可分为三部分:CPU反检测,内存反检测和存储数据反检测.该技术利用了AUFS的层叠镜像技术,使得我们 ...
- Docker容器的使用方法
Docker容器的使用方法 一.拉取镜像 1.检测镜像是否存在 2.拉取下载镜像 3.查看本地镜像 二.运行镜像 1.安装相关包 2.生成容器 3.查看容器运行状态 三.测试容器内的应用 四.检查宿主 ...
- 简单谈谈Docker镜像的使用方法_docker
在上篇文章(在Docker中搭建Nginx服务器)中,我们已经介绍了如何快速地搭建一个实用的Nginx服务器.这次我们将围绕Docker镜像(Docker Image),介绍其使用方法.包括三部分: ...
- 基于领域知识的Docker镜像自动构建方法
点击上方蓝字关注我们 基于领域知识的Docker镜像自动构建方法 陈伟1,2, 叶宏杰1,2, 周家宏1,2, 魏峻1,2 1 中国科学院大学,北京 100190 2 中国科学院软件研究所,北京 10 ...
- Docker容器映射端口方法
Docker容器映射端口分两种情况,如果新建容器,直接在docker run或docker create时添加:如果是运行中的容器,该怎样添加呢? 第一种情况:新建容器时添加 格式:docker ru ...
- docker制作镜像的方法
docker镜像简介 docker镜像是分层的,有底层网上叠加下载. dockerfille是以文本的方式生成镜像,他的好处在于生成镜像后可以查看生成流程.相对于docker commit,使它更加的 ...
- 群晖Docker加速的简单方法
群晖Docker加速的简单方法 官网的Docker,下载速度太慢,注册表添加加速源不能解决问题,发现还是官方的 ...
- Docker安装包安装方法
Docker安装包安装方法 1.下载安装包 containerd.io-1.2.6-3.3.el7.x86_64.rpm container-selinux-2.119.2-1.911c772.el7 ...
最新文章
- 解决Linux CENTOS服务器 tree命令出现乱码 解析原因
- MySQL批量导入数据
- 面试:说说参数验证 @Validated 和 @Valid 的区别?
- pdf拼版插件_pdf文件中的文字批量转曲的办法
- 一个多版本IE共存软件 IETester(支持IE5.5,6,7,8Beta1)
- SMW0 HTML模版的形式上传文件 维护MIME类型
- Java设计模式-工厂模式(2)工厂方法模式
- UNILEVER STUDENT PROJECTS EVENT
- php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友
- 使用Scrapy框架编写爬虫
- LookupError: unknown encoding: utf-8
- Viscosity for Mac(好用的Open客户端)
- Mac安装Gradle eclipse安装buildship插件
- 计算机桌面的壁纸经典,电脑好看的励志的壁纸欣赏
- 锁(synchronized和Lock)
- 使用什么协议扫描服务器端口,服务器端口扫描
- Ubuntu下ping命令提示域名解析失败以及无法打开网页
- PAT A1065 A+B and C (64bit) ——斜风细雨不须归
- 先验分布与后验分布,认真看看这篇
- VS错误:未能加载文件或程序集“NPOI, Version=2.3.0.0, Culture=neutral, PublicKeyToken...