铁马冰河入梦来

docker常用命令说明

PS:docker仓库的配置信息在 /etc/docker/daemon.json文件中配置

1.仓库管理

// 登录docker仓库

sudo docker login


// 退出docker仓库

sudo docker logout


// 查找镜像,keyword替换为要查找的镜像关键词

// PS:出现了查找不到自己仓库里的镜像的问题,只使用自己的用户名可以查出所有的镜像

sudo docker search keyword

 

// 下载镜像

sudo docker pull ImageName


// 上传镜像

sudo docker tag LocalImageName:Tag UserName/NewImageName:NewTag

sudo docker push UserName/NewImageName:NewTag


2.镜像管理

// 查找你要下载的镜像,建议下载官方镜像

sudo docker search keyword


// 下载镜像

sudo docker pull ImageName


// 查看镜像列表

sudo docker images


// 删除一个镜像,可以在ImageName后面加:tag精确删除

sudo docker rmi ImageName


// 更新提交镜像

// 如:sudo docker commit -m="has update" -a="crazy4go" e218edb10161 crazy4go/ubuntu:v2

sudo docker commit -m="comments" -a="author" ContainerID author/NewImageName:NewTag


// 给镜像加标签

sudo docker tag ImageIdOrName:Tag  NewImageName:NewTag


3.容器管理

// 查看容器列表

sudo docker ps -a


// 启动一个镜像容器

sudo docker run -it imangename /bin/bash

PS1: 使用-d参数可以让容器后台运行,i表示交互式操作,t表示终端交互,/bin/bash 在镜像名后面表示交互shell,执行exit退出后镜像也会终止执行

PS2: 可以使用--name参数指定容器的名称,可以使用-P参数让内部端口映射到随机宿主机端口,可以使用-p ContainerPort:HostPort来把内部端口映射到指定的宿主机端口


// 停止一个容器

sudo docker stop ContainerID


// 重启一个容器

sudo docker restart ContainerID


// 进入容器

sudo docker attach ContainerID //终端退出之后容器会终止执行,强制关闭不使用exit命令除外

sudo docker exec -it ContainerID //终端退出之后容器继续运行


// 删除一个容器

sudo docker rm -f ContainerID // -f表示强制删除


// 导出一个容器

sudo docker export ContainerID > FileName.tar


// 导入本地镜像

sudo docker import FileName.tar UserName/ImageName:NewTag


// 查看端口映射,容器端口到宿主机端口的映射

sudo docker port ContainerID


// 查看容器内部标准输出

sudo docker logs ContainerID


// 查看容器内部的程序进程

sudo docker top ContainerID


// 查看容器的配置和状态信息

sudo docker inspect ContainerID

4.链接管理,让容器与容器之间可以互通

// 查看docker的网络配置情况

sudo docker network ps


// 新建网络

sudo docker network create -d bridge NetName

PS: -d 参数有 bridge 和 overlay 两种类型,其中overlay类型的网络用于Swarm mode


// 新建镜像链接到已有的网络

sudo docker run -it --name MyHost01 --network NetName ImageName /bin/bash

sudo docker run -it --name MyHost02 --network NetName ImageName /bin/bash

PS:这样MyHost01和MyHost02就可以通过主机名进行互访了,可以通过 sudo docker exec -it MyHost01 ping MyHost02 和 sudo docker exec -it MyHost02 ping MyHost01 来测试,如果没有ping命令可以通过 apt-get update 和 apt-get install iputils-ping 命令来安装ping


// 已有镜像链接到已有的网络

sudo docker network connect NetName ContainereName


// 配置DNS进行互访,这种情况下很少会碰到,暂时不做实验


评论