Docker指令,记不住怎么办?

473 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第12天,点击查看活动详情

1.镜像命令

1.1 本地镜像管理

镜像都是存储在Docker宿主机的/var/lib/docker

  • 列出本地镜像:docker images

docker images [参数] 参数说明: -a:列出本地所有镜像(含中间映像层) -q:只显示镜像ID 运行结果说明 1.repository:镜像名称 2.tag:镜像标签 3.image id:镜像ID 4.created:镜像的创建日期 5.size:镜像大小

  • 删除本地镜像:docker rmi

docker rmi [参数] [镜像名或镜像名列表] 参数说明: -f:强制删除 举例: docker rmi -f tomcat hello-world(删除tomcat和hello-world,不带TAG默认为latest) docker rmi -f $(docker images -qa) 删除所有镜像

1.2 远程仓库

  • 从Docker Hub查找镜像:docker search

docker search [参数] 镜像名 参数说明: -s:列出收藏数不小于指定值的镜像; --automated:只列出automated build类型的镜像。 举例: docker search -s 10 nginx

  • 从镜像仓库拉取或更新指定镜像:docker pull

docker pull [参数] 镜像名[:TAG] 参数说明: -a:拉取所有镜像 举例: docker pull nginx docker pull -a nginx (从Docker Hub下载REPOSITORY为nginx的所有镜像)

  • 上传镜像(暂定)

1.配置阿里云的镜像加速器,前面已介绍;

2.命令行登录到阿里云的doker仓库,--username为阿里云的用户名 docker login --username=XXX registry.cn-hangzhou.aliyuncs.com

3.为本地镜像添加tag,XXX为命名空间 docker tag f4ec85e8298f registry.cn-hangzhou.aliyuncs.com/XXX/mynginx:0.1

4.push到docker仓库 docker push registry.cn-hangzhou.aliyuncs.com/XXX/mynginx:0.1

5.登录阿里云查看已上传的镜像列表:cr.console.aliyun.com/#/imageList

1.3 容器操作

  • 列出正在运行的容器:docker ps

docker ps [参数] 参数说明: -a:显示所有容器,包括未运行的 -q:只显示容器编号

  • 创建一个新的容器并运行一个命令:docker run

docker run [参数] 镜像名/ID [命令] [命令参数...] 参数说明: -i:以交互模式运行容器,通常与 -t 同时使用(一定要注意) -t:为容器重新分配一个伪输入终端; --name="my":为容器指定一个名称; -p:指定端口映射,格式为:主机(宿主)端口:容器端口;(一定要注意) -P:随机端口映射,容器内部端口随机映射到主机的高端口; -d:后台运行容器;(一定要注意) 举例: 1.交互方式创建容器方式 docker run -it --name=mycentos7 centos:7 /bin/bash 2.后台运行方式(守护方式) name不能重名 docker run -di --name=mycentos centos:7 /bin/bash docker exec -it mycentos /bin/bash docker run -p 8080:8080 tomcat

image-20210612201251169

  • 退出容器(以it的方式运行)

方式一:exit 退出docker,同时docker容器停止运行; 方式二:ctrl+p+q 退出docker,docker容器继续运行。

  • 容器的运行/停止/重启:docker start/stop/restart

docker start 容器ID [容器ID...] : 启动容器 docker stop 容器ID [容器ID...] : 停止容器 docker restart 容器ID [容器ID...] : 重启容器 以上操作都要建立在容器已经创建的基础上,也就是执行了docker run命令

可以使用systemctl status docker查看运行状态,systemctl enable docker设置开机启动

  • 在运行的容器中执行命令:docker exec

docker exec [参数] 容器id 命令 [命令参数...] 参数说明: -d:在后台运行; -i:交互式; -t:分配终端; 举例: docker exec -it mynginx /bin/bash

  • 杀掉一个运行中的容器:docker kill

docker kill [参数] 容器 [容器...] 参数说明: -s:向容器发送一个信号 举例: docker kill -s KILL mynginx

  • 删除容器:docker rm

docker rm [参数] 容器 [容器...] 参数说明: -f:强制删除 举例: docker rm -f mynginx docker rm $(docker ps -aq)

  • 获取容器的日志:docker logs

docker logs [参数] 容器 参数说明: -t:显示时间戳; -f:跟踪日志输出; --tail:仅列出最新N条容器日志 举例: 跟踪查看容器mynginx的日志输出 docker logs -f mynginx 查看容器mynginx从2016年7月1日后的最新10条日志 docker logs --since="2016-07-01" --tail=10 mynginx

  • 查看容器中运行的进程信息:docker top

docker top 镜像 举例: docker top mynginx

  • 从容器创建一个新的镜像:docker commit

docker commit [参数] 容器 [镜像[:TAG]] 参数说明: -a:镜像作者; -c:使用Dockerfile指令来创建镜像; -m:提交时的说明文字; 举例: docker commit -a "hanpang" -m "create mynginx" a404c6c174a2 mynginx:v1 运行docker images可以查看创建的镜像。

  • 用于容器与主机之间的数据拷贝:docker cp
将文件从容器拷贝到宿主机
docker cp 容器:源路径 目标路径
 
将文件从宿主机拷贝到容器
docker cp 源路径 容器:目标路径
 
举例:
将主机/usr/abc目录拷贝到容器96f7f14e99ab的/hou目录下
docker cp /usr/abc 96f7f14e99ab:/hou/
 
将主机/usr/abc目录拷贝到容器96f7f14e99ab中,重命名为hou
docker cp /usr/abc 96f7f14e99ab:/hou
 
将容器96f7f14e99ab的/abc目录拷贝到主机的/tmp目录中
docker cp  96f7f14e99ab:/abc /tmp/