docker常用命令

总览

  • Docker环境信息 — docker [info|version]
  • 容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
  • 容器操作运维 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]
  • 容器rootfs命令 — docker [commit|cp|diff]
  • 镜像仓库 — docker [login|pull|push|search]
  • 本地镜像管理 — docker [build|images|rmi|tag|save|import|load]
  • 容器资源管理 — docker [volume|network]
  • 系统日志信息 — docker [events|history|logs]

具体操作命令

镜像源设置

1
2
3
4
5
6
7
8
9
10
- [docker官网中国区镜像](https://www.docker-cn.com/)
`--registry-mirror=https://registry.docker-cn.com`
- [网易163 docker镜像](https://c.163.com/product/service) **未使用,请自行判断**
`--registry-mirror=http://hub-mirror.c.163.com`
- [USTC镜像加速](https://lug.ustc.edu.cn/wiki/mirrors/help/docker)
`--registry-mirror=https://docker.mirrors.ustc.edu.cn`
- [daocloud镜像](https://www.daocloud.io/) **需注册**
`--registry-mirror=http://{your_id}.m.daocloud.io`
- [alicloud](https://jsfun.info/archive/docker在国内使用的加速配置/) **注册后有自己的加速地址**
`--registry-mirror=https://{your_id}.mirror.aliyuncs.com`

查看信息

1
2
$ docker info
$ docker --version

容器信息

1
2
3
4
#查看正在运行的容器
docker ps
#查看所有的去容器或最新启动的一个容器
docker ps [-a|-l]
1
2
3
4
@Gatsby ➜  blog git(master) ✗  docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bc82d9e95ae3 docker/getting-started "/docker-entrypoint.…" 11 seconds ago Up 10 seconds 0.0.0.0:80->80/tcp stupefied_zhukovsky
@Gatsby ➜ blog git(master) ✗ 0.0.0.0:80->80/tcp stupefied_zhukovsky

关闭和启动容器

docker的run,start,stop,restart四种操作中只有run会实例化容器

1
docker [start|stop|restart] <constainer id|name>

镜像相关

列出本地镜像

1
2
3
4
@Gatsby ➜  ~  docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 dfeff22e96ae 3 days ago 131MB
docker/getting-started latest 1f32459ef038 3 months ago 26.8MB

搜索镜像

1
2
3
4
@Gatsby ➜  ~  docker search python
NAME DESCRIPTION STARS OFFICIAL
AUTOMATED
python Python is an interpreted, interactive, objec… 5574 [OK]

实例化镜像

1
2
3
4
@Gatsby ➜  blog git(master) ✗  docker run -d -p 80:80 docker/getting-started
Unable to find image 'docker/getting-started:latest' locally
latest: Pulling from docker/getting-started
...

参数说明

  • -d 后台运行
  • -p 端口映射
  • :tag-name 镜像标签
1
2
3
4
5
6
7
8
@Gatsby ➜  ~  docker run -it -p 80:80 docker/getting-started
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
  • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
1
2
docker attach 1e560fca3906 
docker exec -it 243c32535da7 /bin/bash

删除镜像

1
docker rmi [image-name|container id]

设置镜像标签

1
runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev

Docker仓库

官方公共仓库地址:https://hub.docker.com

登录登出

1
2
$ docker login
$ docker logout

推送到仓库

1
$ docker push seanlook/mongo

额外

快速刪除容器和镜像

刪除全部容器

1
docker rm $(docker ps -aq)

一条命令实现停用并删除容器:

1
docker stop $(docker ps -q) & docker rm $(docker ps -aq)

快速删除数据卷

若要删除未使用的volume,可以使用内置程序。volume rm命令。

列出volumes:

1
$ docker volume ls -qf dangling=true

删除:

1
$ docker volume rm $(docker volume ls -qf dangling=true)

参考

[^2]: docker实验室: https://labs.play-with-docker.com/docker
[^3]: 官方文档:https://docs.docker.com/
[^4]: cnblog:https://www.cnblogs.com/duanxz/p/7905233.html