常用命令
- login
- logs
- run
- stop
- start
- restart
- pull
- rm
- rmi
- images
- ps -a
- exec
- commit
- push
创建
可以在hub.docker.com上创建一个新的repo,或者自己复制一个现有的repo.
绑定github后,也可以直接通过Dockerfile来发生成最新的镜像
查看镜像列表
docker images
查看容器列表
docker ps
查看所有的容器
docker ps -a
查看最近创建的容器
docker ps -l
查找在指定 image 之后创建的 image 中的父 image
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxxxxx)
获取镜像
docker pull name/reponame
删除
docker rm Remove one or more containers
docker rmi Remove one or more images
删除已经退出运行的容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
删除none镜像
docker images |grep none |awk '{print $3}'|xargs docker rmi
要删除全部image的话
docker rmi $(docker images -q)
停止所有容器
停止容器,才能删除所包含的image
docker stop $(docker ps -a -q)
ssh登录docker
在开发阶段免不了需要ssh上去进行现场配置。
从ssh启动docker:
docker run -it username/imagename /bin/bash
ssh登陆,并挂载本地目录,默认读写权限:
docker run -it -v 宿主绝对路径:docker绝对路径 username/imagename /bin/bash
这样启动的入口进程是bash,整整需要启动的服务进程,再此模式下要自己手动启动
attach
docker attach --sig-proxy=false $CONTAINER_ID
如果当前的不是bash,attach上去也无法进行ssh,只有是上面这种直接启动ssh并后台运行的情况,attach上去,才进入ssh
exec
在Docker1.3版本开始,提供了一个更方便的命令exec。可以直接在容器内运行命令。所以我们ssh登录docker最方便的是exec:
docker exec -ti 7f16264f7ab4 /bin/bash
detach
docker没有专用的命令,目前不能使用eixit,因为会导致主进程退出。使用ctl+p+ctl+q来detach当前的进程
查看底层信息,比如IP等
docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID
commit
docker commit CONTAINER_ID docker_hub用户名/镜像名:tagname
push
docker push docker_hub用户名/镜像名:tagname
docker hub的使用
如果你使用hub.docker.com来管理你的镜像,那么就涉及到账户登录,如果你docker pull时遇到如下的提示:
unauthorized: incorrect username or password
那么说明你登录信息过期了,需要重新登录:
docker login
查看日志
查看最新30分钟的日志:
docker logs --since 30m CONTAINER_ID
其他需求,请详细查看logs 的参数
其他参考
资深专家都知道的 Docker 常用命令---源英文:Top Docker Commands Any Expert Should Know
Docker之容器的创建、启动、终止、删除、迁移等
docker入门——构建镜像