您现在的位置是:首页 > 行业发展

「Docker自学笔记」Docker常用命令&用法

智慧创新站 2025-05-26【行业发展】90人已围观

简介安装(Ubuntu)使用(常用命令)容器数据卷创建自定义镜像DockerFile容器内自定义镜像源自定义网络保存镜像导入镜像推送镜像到hubDocker常用命令Docker常用命令官方下载安装官方文档Docker仓库搜索安装(Ubuntu)更多内容请查考官方文档依次执行下列代码即可!使用Docker...

安装(Ubuntu)使用(常用命令)容器数据卷创建自定义镜像DockerFile容器内自定义镜像源自定义网络保存镜像导入镜像推送镜像到hubDocker常用命令


Docker常用命令

官方下载安装

官方文档

Docker仓库搜索

安装(Ubuntu)

更多内容请查考官方文档

依次执行下列代码即可!

使用Docker仓库进行安装安装apt依赖包,用于通过HTTPS来获取仓库sudoapt-getinstall\apt-transport-https\ca-certificates\curl\gnupg\lsb-release\software-properties-common设置稳定版仓库sudoadd-apt-repository\"deb[arch=amd64]\$(lsb_release-cs)\stable"万能的帮助命令docker命令--help搜索镜像dockersearch镜像拉取镜像dockerpull镜像:版本查看本地所有镜像dockerimagesdockerimages-aq删除镜像dockerrmi-f镜像名/id删除所有镜像添加--rm参数可以实现在退出容器后就删除容器(一般用于测试)参数说明:-i:交互式操作。-t:终端。ubuntu:ubuntu镜像。/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式Shell,因此用的是/bin/bash。要退出终端,直接输入exit这个命令会停止容器!可以使用ctrl+p+q组合键退出,不会退出容器这个命令会停止容器!ctrl+p+q查看当前运行的容器dockerpsdockerps-a启动一个已停止的容器dockerstart容器id重启一个容器dockerrestart容器id当使用stop无法正常停止的时候使用killdockerrun-i-t-d-p6666:80--nameubuntu-testubuntu/bin/bash重新进入容器当前正在运行的命令终端,使用exit会停止容器!dockerexec-i-t容器id/bin/bash删除容器dockerrm-f容器别名/容器id拷贝容器文件到宿主机(复制文件)dockercp容器id/容器id:容器内文件路径要拷贝到的路径查看容器的cpu内存状态dockerstatsdockercommit-a"xiaoqiangclub"-m"thisisatest!"a404c6c174a2mymysql:v1OPTIONS说明:-a:提交镜像的作者;-c:使用Dockerfile指令来创建镜像;-m:提交时的说明文字;-p:在commit时,将容器暂停。

dockerrun-it--rmid/bin/bash添加参数--rm可以实现在退出容器后就删除容器(一般用于测试)

直接输入exit这个命令会停止容器!可以使用ctrl+p+q组合键退出,不会退出容器

我们常用dockerexec-i-t容器id/bin/bash命令进入容器并开启一个新的终端,这个命令进入容器后使用exit不会停止容器

后台启动容器使用dockerrun-i-t-d--nameubuntu-testubuntu/bin/bash

复制文件命令dockercptest-ubuntu:/home//home

dockerrun-m设置容器使用内存最大值

容器数据卷

添加-v参数来映射目录,命令dockerrun-it-v主机目录:容器目录镜像/bin/bash

具名挂载:-添加-v参数来映射目录,命令dockerrun-it-v卷名:主机目录:容器目录镜像/bin/bash;使用dockervolumels查看卷

docker容器内路径具名挂载docker/宿主机路径:容器内路径使用ro/rw来设置读写权限:ro:readonly;rw:readwrite;默认为:rw;如果设置为ro:说明这个路径只能通过宿主机改变,容器内无法改变!

dockerinspect获取容器/镜像的元数据(详情)

创建自定义镜像

使用Dockercommit命令从容器创建一个新的镜像,下面是他的用法

xiaoqiang@xiaoqiangclub:~/studyArea/dockerStudynbsp;dockercommit--helpUsage:dockercommit[OPTIONS]CONTAINER[REPOSITORY[:TAG]]这个就是我们安装ipython后新创建的镜像my-ubuntulatestbeb3e79259ee10hoursago134MB
DockerFile

DockerFile常用命令

FROM作者,姓名+邮箱RUN添加内容(COPY文件,会自动解压)WORKDIR目录挂载EXPOST指定容器启动的时候需要运行的命令,只有最后一个会生效,可被替代!ENTRYPOINT当构建一个被继承时,DockerFile就会运行ONBUILD的指令,是一个触发指令。COPY构建的时候设置环境变量

DockerFile常用命令

容器内自定义镜像源

简单示例

xiaoqiang@xiaoqiangclub:~/桌面/docker-study/DockerFilenbsp;vimmyDockFile-ubuntuxiaoqiang@xiaoqiangclub:~/桌面/docker-study/DockerFilenbsp;catmyDockFile-ubuntuFROMubuntuMAINTAINERxiaoqiangclubxiaoqiangclub@/usr/localWORKDIR$MYPATH使用连接构建为一层,最后清理缓存RUNaptupdate\apt-getinstall-yvimnet-tools\rm-rf/var/lib/apt/lists/*EXPOSE80CMDecho$MYPATHCMDECHO"--------"CMD/bin/bash

报错解决方案

文件

deb

使用dockerhistory容器id/容器名:版本可以查看容器的构建过程

容器内更换镜像源后使用aptupdate可能会提示以下错误(NO_PUBKEY缺少公钥):

依次运行公钥和gpg--export--armor公钥|apt-keyadd-即可(非docker容器中运行的话需要添加sudo)

root@eee3e5c095f6:/报错的时候提供的公钥gpg:directory'/root/.gnupg'createdgpg:keybox'/root/.gnupg/'createdgpg:/root/.gnupg/:trustdbcreatedgpg:key3B4FE6ACC0B21F32:publickey"UbuntuArchiveAutomaticSigningKey(2012)ftpmaster@"importedgpg:Totalnumberprocessed:1gpg:imported:1root@eee3e5c095f6:/将一个容器连接到网络create将一个容器从自定义网络断开inspect列出所有网络prune删除一个或多个网络

下面是docker默认的网络

xiaoqiang@xiaoqiangclub:~/studyArea/dockerStudynbsp;dockernetworklsNETWORKIDNAMEDRIVERSCOPEb3c47254c1cebridgebridgelocal205f46f5b907hosthostlocal8d0210334194nonenulllocal

我们可以使用--net网络的方式指定容器使用的网络,如dockerrun-it--nethostmy-ubuntu

有时候在docker中使用Ubuntu镜像无法联网,我们可以尝试使用命令dockerrun-it--nethostubuntu即可解决!(有些情况下重启一下主机就解决了!)

自己创建一个dockernetworkcreate参数

xiaoqiang@xiaoqiangclub:~/studyArea/dockerStudynbsp;dockernetworkcreate--helpUsage:dockernetworkcreate[OPTIONS]NETWORKCreateanetworkOptions:--attachableEnablemanualcontainerattachment--aux-addressmapAuxiliaryIPv4orIPv6addressesusedbyNetworkdriver(defaultmap[])--config-fromstringThenetworkfromwhichtocopytheconfiguration--config-onlyCreateaconfigurationonlynetwork-d,--driverstring创建一个网络,默认:bridge--gatewaystrings网关--ingressCreateswarmrouting-meshnetwork--internalRestrictexternalaccesstothenetwork--ip-rangestringsAllocatecontaineripfromasub-range--ipam-driverstringIPAddressManagementDriver(default"default")--ipam-optmapSetIPAMdriverspecificoptions(defaultmap[])--ipv6EnableIPv6networking--labellistSetmetadataonanetwork-o,--optmapSetdriverspecificoptions(defaultmap[])--scopestringControlthenetwork'sscope--subnetstrings子网掩码

--drive类型

bridge:多由于独立container之间的通信host:直接使用宿主机的网络,端口也使用宿主机的overlay:当有多个docker主机时,跨主机的container通信macvlan:每个container都有一个虚拟的MAC地址none:禁用网络

根据上面的使用说明,我们可以尝试使用命令/16--来创建一个网络(也可以直接简写dockernetworkcreatetest-net):

xiaoqiang@xiaoqiangclub:~/studyArea/dockerStudynbsp;/16--7f4d8f0

现在查看一下docker下的网络dockernetworkls

xiaoqiang@xiaoqiangclub:~/studyArea/dockerStudynbsp;dockernetworklsNETWORKIDNAMEDRIVERSCOPE2087a9b3522dbridgebridgelocal205f46f5b907hosthostlocal856ac8b90e9bmynetbridgelocalifconfigeth0:flags=4163UP,BROADCAST,RUNNING,指定导入的文件,代替STDIN-q,--quiet#精简输出信息

例如,也可以

推送镜像到hub

dockerlogindockerlogout登入登出

参考文章

阿里云复制下来的操作指南

1.登录阿里云DockerRegistry
$dockerlogin--username=xiaoqiang****
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

2.从Registry中拉取镜像
$/xiaoqiangclub/xiaoqiangclub:[镜像版本号]
3.将镜像推送到Registry
$dockerlogin--username=xiaoqiang****
$dockertag[ImageId]/xiaoqiangclub/xiaoqiangclub:[镜像版本号]
$/xiaoqiangclub/xiaoqiangclub:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

4.选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用作为Registry的域名登录。

5.示例
使用"dockertag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

$dockerimages
REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE
/acs/
$/acs/agent:0.7-dfb6816
使用"dockerpush"命令将该镜像推送至远程。

$/acs/agent:0.7-dfb6816

很赞哦!(42)