公司网站建设费用的会计分录,网站如何屏蔽中国ip,wordpress单页后台模板,wordpress萌化作者 | Timothy Mugayi译者 | 弯月 责编 | 徐威龙封图| CSDN 下载于视觉中国Docker容器已经从一种锦上添花的技术转变成了部署环境的必需品。有时#xff0c;作为开发人员#xff0c;我们需要花费大量时间调试或研究Docker工具来帮助我们提高生产力。每一次新技术浪潮来临之际… 作者 | Timothy Mugayi译者 | 弯月 责编 | 徐威龙封图| CSDN 下载于视觉中国Docker容器已经从一种锦上添花的技术转变成了部署环境的必需品。有时作为开发人员我们需要花费大量时间调试或研究Docker工具来帮助我们提高生产力。每一次新技术浪潮来临之际我们都需要花费大量时间学习。 花费1-2天的时间来设置Docker集群或找出导致Docker容器启动失败的代码你是不是也有过类似的经历对于大多数开发人员来说我们花费在研究配置和找bug上的时间似乎都超过了实际推出新功能的时间尤其是当你所使用的环境仍然相对较新或尚未成熟时。我们中的有些人并没有那么走运无法通过完善的CI/CD流程打造稳定的环境。为此我从各大主流Docker技术文档网站上搜罗和整理出了这份日常工作最常使用的Docker命令教程。详尽的可选标志和参数的详细列表请参阅Docker手册https://docs.docker.com/engine/reference/commandline/cli/提示每个Docker命令都有内置的文档比如键入docker run --help就可以得到帮助文档。键入docker run --help将生成以下帮助文档。我希望本文可以帮助你摆脱调试和使用Docker的烦恼。阅读各个命令时请注意命令的相关说明。Docker构建 $ docker build \
--build-arg ARTIFACTORY_USERNAMEtimothy.mugayi \
--build-arg ARTIFACTORY_SECRET_TOKENAP284233QnYX9Ckrdr7pUEY1F \
--build-arg LICENSE_URLhttps://source.com/license.txt \
--no-cache -t helloworld:latest .
你可以使用可选的构建参数构建Docker镜像。在默认情况下Docker会缓存第一个Dockerfile构建或根据Dockerfile中的run命令向镜像添加新层后的构建目的是加速后续构建。如果你不需要缓存那么可以向上面的示例一样添加一个不缓存的参数。注意Docker命令可以按名称或Docker容器ID执行。下述命令中的CONTAINER可以换成容器ID或容器名称。 运行Docker容器$ docker start CONTAINER启动一个已有的容器。我们假定该容器已经下载并创建完毕。$ docker stop CONTAINER
停止正在运行的Docker容器。$ docker stop $(docker container ls -aq)如果你有多个正在运行的Docker容器而且你想停止所有容器那么可以输入docker stop以及所有容器ID的列表。$ docker exec -ti CONTAINER [COMMAND]
在某个特定的容器内运行一个shell命令。 $ docker run -ti — image IMAGE CONTAINER [COMMAND]
Docker run 与 start 有着明显的区别。从根本上说Docker run 做了两件事情1创建一个镜像的新容器2执行这个容器。如果你希望重新运行失败或退出的容器请使用docker start命令。$ docker run -ti — rm — image IMAGE CONTAINER [COMMAND]
这是一个很有趣的命令旨在同时创建和启动容器。它还想在容器内运行命令然后在命令执行完成后删除容器。docker run -d IMAGE:IMAGE_TAG
Usage:docker run -d helloworld:latest
如果你希望在分离状态中启动docker run命令例如作为Linux的后台守护程序则可以在run命令最后添加-d。$ docker pause CONTAINER
暂停某个特定容器内所有正在运行的进程。$ docker ps -a
上述命令将列出之前运行的所有Docker镜像。在找出你想运行的镜像后可以执行如下命令。请确保更改容器ID以反映最初的docker ps -a命令显示的结果。sudo docker run {container ID} -e AWS_DEFAULT_REGIONus-east-1 \
e INPUT_QUEUE_URLhttps://sqs.us-east-1.amazonaws.com/my_input_sqs_queue.fifo \
e REDIS_ENDPOINTredis.dfasdf.0001.cache.amazonaws.com:8000 \
e ENVdev \
e DJANGO_SETTINGS_MODULEengine.settings \
e REDIS_HOSTcmgadsfv7avlq.us-east-1.redis.amazonaws.com \
e REDIS_PORT5439 \
e REDIS_USERhello \
e REDIS_PASSWORDtrasdf**#0ynpXkzg
上述命令展示了如何运行带有多个作为参数传入的环境变量的Docker镜像\表示换行符。 调试Docker容器你可以使用docker ps获取当前正在运行的容器名称。 $ docker history IMAGE
example usage:
$ docker history my_image_name
上述命令可以显示特定镜像的历史记录。当你想深入了解Docker镜像时这些信息非常有用。让我们深入讨论一下因为你非常有必要了解这个命令的功能而有关该命令的文档少之又少。在我们谈论Docker时镜像是建立在多层之上的这些层是Docker镜像的基础。每个容器都包含一个可读/可写层的镜像你可以-将其视为持久状态或文件。在这之上才是其他只读层。这些层也称为中间镜像是在执行Docker镜像的build命令时执行Dockerfile中的命令时生成的。如果你的Dockerfile中包含from、run和/或copy指令那么build该镜像时run指令就会用自己的镜像ID创建一层。然后该镜像/层就会显示在docker history中而且还会显示镜像的ID以及生成日期。后续指令将生成另一个条目依此类推。CREATED BY列大致对应于Dockerfile中的一行。如下图所示。docker history命令的图示$ docker images列出当前存储在机器中的所有镜像。$ docker inspect IMAGE|CONTAINER ID
Docker inspect将显示有关特定Docker对象的低级信息。在调试的情况下 存储在该对象中的数据会非常有用例如交叉检查Docker挂载点。请注意该命令获取两个主要响应镜像级别的详细信息和容器级别的详细信息。你可以从该命令中获取如下信息容器ID以及创建的时间戳当前状态在尝试识别容器是否已停止以及为何停止时很有用Docker镜像信息、文件系统绑定、卷信息以及挂载环境变量例如传递给容器的命令行参数网络配置IPv4和IPv6的IP地址以及网关和辅助地址$ docker version
这个命令显示Docker的版本包括计算机上当前安装的客户端和服务器版本。 没错Docker是一个客户端-服务器应用程序。守护程序长期运行的Linux后台服务是服务器CLI是众多客户端之一。Docker守护程序会公开一个REST API许多不同的工具可以通过该API与该守护程序进行通信。$ docker version
Client: Docker Engine - CommunityVersion: 19.03.5API version: 1.40Go version: go1.12.12Git commit: 633a0eaBuilt: Wed Nov 13 07:22:34 2019OS/Arch: darwin/amd64Experimental: falseServer: Docker Engine - CommunityEngine:Version: 19.03.5API version: 1.40 (minimum version 1.12)Go version: go1.12.12Git commit: 633a0eaBuilt: Wed Nov 13 07:29:19 2019OS/Arch: linux/amd64Experimental: falsecontainerd:Version: v1.2.10GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339runc:Version: 1.0.0-rc8devGitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657docker-init:Version: 0.18.0GitCommit: fec3683Docker版本输出这是如何设置客户端-服务器体系结构的图像AWS ECS上的Docker有时你需要进入运行中的Docker容器调试或交叉检查配置是否正确。你可以使用docker exec -it container ID /bin/bash来获取shell访问权限。如果你想找出无法运行的Docker镜像例如你想使用AWS ECS集群则会收到一则晦涩难懂的错误消息如下所示。坦白地说引发这一错误的原因多种多样例如1你的代码有问题引发了未捕获的异常并且Docker容器在启动时宕机2在使用EC2实例上的ECS群集时出现了磁盘空间不足的情况如果你的ECS的放置类型没有选择Fargate就会出现这种问题3你现有的Docker容器占用了所有EC2的可用内存。Essential container in task exited执行以下命令即可找出最近运行失败的Docker容器。如果你的账号拥有sudo访问权限请忽略sudo。你可以使用该命令根据给定的输出通过重新运行容器来查看其失败的原因。$ sudo docker ps -a --filter statusdead --filter statusexited --last 1
如有疑虑重启Docker服务$ sudo service docker stop
$ sudo service docker start
# on a MAC you an use the docker utilty or alternatively run
$ killall Docker open /Applications/Docker.app相信无需进一步的解释。 清理Docker镜像 $ docker system pruneDocker在清理未使用的对象例如镜像、容器、卷和网络方面采取了保守的态度。 除非你明确要求Docker删除否则通常不会删除这些对象。因此如果不删除这些对象那么很快就会占用大量空间。因此定期运行下述命令清理未使用的Docker镜像非常重要。docker kill CONTAINER杀死某个正在运行的容器。$ docker kill $(docker ps -q)杀死所有正在运行的容器。$ docker rm CONTAINER 删除某个目前没有运行的容器。如果镜像保存在远程镜像库中那么不会受到影响。 $ docker rm $(docker ps -a -q): 删除所有没有运行的容器。$ docker logs my_container 访问容器的日志在调试时非常有用。 从远程镜像库中提取Docker镜像 1、Docker HubDocker Hub是Docker提供的一项服务用于查找和共享打开的容器镜像。 如果你希望从Docker Hub将镜像拉取到本地那么只需在Docker run命令后面加上镜像路径即可。以下命令说明了如何拉并运行稳定版本的Rocker镜像$ docker run --rm -p 8787:8787 rocker/verse Docker首先会尝试检查本地计算机上是否有该镜像。如果没有在从Docker Hub库中下载镜像这个功能是开箱即用的。$ docker pull rocker/verse 如果你只想拉取镜像而不想运行镜像则只需运行docker pull即可。如果你想登录Docker Hub则可以运行上述命令然后输入密码即可。 2、自定义 Docker 镜像库$ docker login your.docker.host.com
Username: foo
Password: ********
Email: usermyemail.com
如果你想从某个需要身份验证的通用自定义Docker镜像库提取镜像则可以使用docker login命令如上所示。请注意执行上述操作时会在~/.docker/config.json文件中创建一个条目。修改~/.docker/config.json可以修改身份验证详细信息。3、亚马逊ECR亚马逊ECRAmazon Elastic Container Registry是一个完全托管的Docker容器仓库允许开发人员存储、管理和部署Docker容器镜像。亚马逊ECR与ECSElastic Container Service无缝协作。如果你需要从ECR提取镜像则可以参照如下命令。你需要使用拥有AWS访问权限和密钥的IAM用户配置AWS CLI。亚马逊ECR要求IAM用户访问秘钥必须通过某个IAM策略赋予ecr:GetAuthorizationToken的权限然后才能通过镜像库的验证并提取镜像。另外你可以利用亚马逊ECR Docker Credential Helper实用程序。以下方法假定你使用的是AWS CLI且已设置好所有权限。$ aws ecr list-images --repository-nametwitter-data-engine-core
$ aws ecr describe-images —- repository-nametwitter-data-engine-core
$ aws ecr get-login —- region us-east-1 —- no-include-email Get-login命令会生成一个长的Docker登录命令。你只需复制并执行。当然首先必须先进行身份验证然后才能尝试从AWS ECR执行Docker镜像提取。$ docker login -u AWS -p {YOUR_TEMPORARY_TOKEN}
$ docker pull 723123836077.dkr.ecr.us-east-1.amazonaws.com/twitter-data-engine-core:build-9
导入和导出Docker镜像$ docker save your_docker_image:latest /usr/local/your_docker_image.tar
$ docker load /usr/local/your_docker_image.tar 如果你有需要并且想将镜像导出到硬盘并加载到Docker镜像那么就可以执行上述命令。如果你想通过另一种媒介Docker镜像库之外将Docker镜像从一台机器转移到另一台机器那么导出到文件非常有用。由于安全性在某些环境中你的访问可能会受到限制。你无法实施镜像库到镜像库的迁移因此这是一个很实用的命令。原文https://medium.com/better-programming/the-ultimate-docker-command-list-d98ef300fe6d2020 AI 开发者万人大会将于6月26日通过线上直播形式让开发者们一站式学习了解当下 AI 的前沿技术研究、核心技术与应用以及企业案例的实践经验同时还可以在线参加精彩多样的开发者沙龙与编程项目。参与前瞻系列活动、在线直播互动不仅可以与上万名开发者们一起交流还有机会赢取直播专属好礼与技术大咖连麦。今日福利评论区留言入选都可获得价值299元的「2020 AI开发者万人大会」在线直播门票一张。 快来动动手指写下你想说的话吧推荐阅读医疗保健、零售、金融、制造业……一文带你看懂大数据对工业领域的影响
如何运行没有Root权限的Docker干货来了
数据分析师 vs 算法工程师Python 出身的程序员如何抉择
Kubernetes这么火你还不知道是啥赶紧来看看吧~
如何开发日均吸引100万活跃用户的DApp先收藏再看
5 亿微博数据疑泄露Python 爬虫如何避免踩天坑
真香朕在看了