1. 查看运行容器
docker ps
2. 查看所有容器
docker ps -a
3. 进入容器
其中字符串为容器ID:
docker exec -it d27bd3008ad9 /bin/bash
4.停用全部运行中的容器:
docker stop $(docker ps -q)
5.删除全部容器:
docker rm $(docker ps -aq)
6.一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
7. 搜索可以使用的镜像
docker search java

8. 下载安装镜像
docker pull node:latest
9. 启动镜像容器
# 正常启动一个node容器
docker run -it node:latest /bin/bash
# 加参数 --name 表示启动一个名为node的容器
docker run --name node -it node /bin/bash
# -p 80:80:将容器的80端口映射到主机的80端口
docker run -p 80:80 --name mynginx -it node /bin/bash
10.查看镜像
docker images

11.删除镜像
删除<none>
这个镜像
# docker rmi <镜像ID>
docker rmi 3871
12.删除并停止所有的容器
docker container prune
13.列出所有的容器 ID
docker ps -aq
14.停止所有的容器
docker stop $(docker ps -aq)
15.删除所有的容器
docker rm $(docker ps -aq)
16.删除所有的镜像
docker rmi $(docker images -q)
17.复制文件
docker cp mycontainer:/opt/file.txt /opt/local/docker cp /opt/local/file.txt mycontainer:/opt/
更新 : @snakeliwei 的提醒, 现在的docker有了专门清理资源(container、image、网络)的命令。 docker 1.13 中增加了docker system prune
的命令,针对container、image可以使用docker container prune
、docker image prune
命令。
-
docker image prune --force --all
或者docker image prune -f -a
: 删除所有不使用的镜像 -
docker container prune
: 删除所有停止的容器
18.运行Dockerfile
文件
docker build -t showroow:v1 .
这条命令的意思是利用当前目录下的Dockerfile来创建一个叫做showroow
的镜像标签为v1
19.运行新创建的容器
docker run -it my/python:v1 /bin/bash
20. 保存容器到镜像
docker commit -m="备注" 你的CONTAINER_ID 你的IMAGE
21.优化镜像体积
自动缩减 docker 镜像的体积的工具。大幅度缩减 docker 镜像的体积,方便分发,使用命令
docker-slim build --http-probe your-name/your-app
22. 发布镜像
首先要在dockerhub仓库上新建仓库,如下图所示

创建好后,在命令提示符里登录
docker login
登录完后,把所需上传的容器变为镜像
docker commit containerId dockerUserName/XXX
注:containerId为你需要上传的容器id,dockerUserName为dockerHub的登录名,xxx为仓库名,当然也不一定非得是dockerUserName/xxx,只是为了方便起见
接下来为存在于本地的镜像打标签
docker tag imageName dockerUserName/xxx[:tag]
注:imageName为你需要上传的镜像name,dockerUserName为dockerHub的登录名,xxx为仓库名,必须和你在dockerhub中新建的仓库名相同,tag不指定就是latest
打包好之后,就把打包好的镜像上传
docker push dockerUserName/xxx[:tag]
注:tag不指定就是latest
最后就去dockerhub上查看是否上传成功
23.常用的docker命令
#查找Docker Hub上的镜像
$ docker search imageName/ID
#获取Docker Hub上的镜像
$ docker pull ImageName/ID
#显示本地主机上的镜像列表
$ docker images
#运行本地主机上的镜像
$ docker run ImageName/ID
#列出正在运行的容器
$ docker ps
#查看正在运行容器的网络端口映射情况
$ docker port ContainerID
#查看正在运行容器的内部正在进程运行
$ docker top ContainerID
#查看正在运行容器的内部底层信息
$ docker inspect ContainerID
#停止正在运行容器
$ docker stop ContainerID/
#重启已经停止的容器
$ docker start ContainerID
#删除不需要的容器(必须在容器已经停止的情况下)
$ docker rm ContainerimageID
#移除本地镜像,移除前需要把该镜像下所有的容器删除
$ docker rmi ImageName/ID
#登录docker
$ docker login
#运行ubuntu:16.04镜像并创建容器和启动bash终端
$ docker run -t -i ubuntu:16.04 /bin/bash
#重命名容器名
$ docker rename wonderful_kepler Ubuntu16.04
#构建镜像
$ docker commit -m="has update" -a="SpiffyEight77" ff5d623e2d61 spiffyeight77/ubuntu:16.04
#提交镜像到docker hub 需要登录
$ docker push spiffyeight77/ubuntu
部分参数说明
-d: 守护模式 后台运行
-p: 是容器内部端口绑定到指定的主机端口
-P: 是容器内部端口随机映射到主机的高端口
-f : 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
-l : 查询最后一次创建的容器
-t : 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
-i : 则让容器的标准输入保持打开
-m:提交的描述信息
-a: 指定镜像作者
--rm: 停止容器后移除容器
ff5d623e2d61: 容器ID
spiffyeight77/ubuntu:16.04: 指定要创建的目标镜像名
进入容器是提示
sudo docker exec -it 569f05d5f4fc /bin/bash
提示错误
rpc error: code = 13 desc = invalid header field value "oci runtime error:
\ exec failed: container_linux.go:247:
\ starting container process caused \"exec: \\\"/bin/bash\\\":
\ stat /bin/bash: no such file or directory\"\n"
尝试
sudo docker exec -it 569f05d5f4fc /bin/sh
or
sudo docker exec -it 569f05d5f4fc bash
网友评论