Docker常用命令及示例

前言

  用于记录自己在使用docker时使用的常用命令以及示例。

镜像

镜像拉取

docker pull ${docker-registry/}${repo}:${tag}

不指仓库地址时,默认会使官方仓库,即docker.io/library

不指定tag时,默认为latest

镜像标签

docker tag ${imageid} ${docker-registry/}${repo}:${tag}

给镜像重命,标签不能重复。

当推送镜像前需要将仓库名修改成想推送的仓库地址

镜像导出导入

docker save ${image} > ${tar}
docker load  ${tar}

将镜像文件导出成tar包,或者是将tar包镜像导入

删除镜像

docker rmi ${image}

被正在运行的容器所使用的镜像无法删除,可以先停止容器然后强制删除

docker rmi -f ${image}

无法强制删除存在子镜像的父镜像(即dockerfile中FROM命令引入的镜像为当前镜像的父镜像),如果想删除此类镜像,需要先删除其所有子镜像。这里提供一个脚本可列出某镜像的所有子镜像

#!/bin/bash
parent_id=$1
for i in $(docker images -q)
do
    if [ "$1" != "$i" ];then 
      docker history $i | grep -q $1 && docker images | grep $i
    fi
done | sort -u

将以上内容保存为findchildimage.sh,运行findchildimage.sh ${imageid}。

容器

启动容器

前台,后台启动

docker run --rm -it ${image}
docker run --rm -d ${image}

--rm 表示容器停止运行后删除容器

--it 表示通过控制台交互方式运行容器

-d 表示后台运行容器

端口映射,及目录挂载

docker run -v ${host_path}:${container_path} -p ${host_port}:${container_port}

 -v 表示将主机的目录挂载到容器对应目录 (特别注意,如果是想到把容器里已有的文件放到外部进行读写,则应该先将容器里的文件拷贝出来到待挂载的目录后,再进行挂载)

-p 表示将主机的端口映射到容器的端口 (一般当容器提供外部服务时需要加入该参数。这样外部通过访问主机的端口,即可访问到容器内对应的端口,默认为tcp协议类型)

入口指定

有些时候不想运行镜像里面的入口程序或命令,可以通过以下方式强制更改。下面的例子是将入口强制修改为sh。

docker run --rm -it --entry-point /bin/sh ${image}

停止,重启容器

docker restart|stop ${container}

进入容器

常用进入容器的sh的命令

docker exec -it ${container} /bin/sh

参考:

https://docs.docker.com/engine/reference/run/

 

posted @ 2019-02-08 21:18  月清水影  阅读(438)  评论(0编辑  收藏  举报