Docker常用命令及中间件应用示例

Docker

查看docker系统信息

docker info

查看docker版本信息

docker version

查看镜像/容器/数据卷所占的空间

docker system df


镜像

搜索镜像

按名称搜索 docker search redis
按条件搜索 docker search --filter "is-official=true" --filter "stars=3"

下载最新或指定版本的镜像

docker pull redis
docker pull redis:5.0.5
docker pull mysql:latest
docker pull grafana/grafana

列出本地镜像

docker images 或 docker image ls

批量获取镜像ID

docker image ls -a -q

查看镜像详细信息

docker image inspect [镜像名称]

删除镜像或容器

docker image rm [xxxxxx]
docker rmi [xxxxxx]
删除无用的虚悬镜像 docker image prune
删除一个或多个容器 docker rm []
删除所有镜像 docker rmi $(docker images -q)
批量删除镜像 docker image rm $(docker image ls -a -q)
批量删除容器 docker container rm $(docker container ls -a -q)
删除untagged images,也就是id为None的镜像 docker rmi $(docker images | grep "^" | awk "{print $3}")


容器

运行、启动和停止容器

docker run --name docker-redis --restart=always -d -p 6379:6379 redis
docker run -itd --name docker-mysql --restart=always -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker run --name docker-nginx --restart=always -d -p 8080:80 -v /Users/ninglg/nginx:/usr/share/nginx/html nginx
docker run -d --name=docker-grafana --restart=always -p 3000:3000 grafana/grafana
docker run --name docker-etcd --restart=always -d -p 2379:2379 -p 2380:2380 elcolio/etcd
启动容器 docker start [容器名/ID]
停止容器 docker stop [容器名/ID]
批量停止容器 docker container stop $(docker container ls -a -q)
强制停止容器 docker kill [容器名/ID]
后置设置更新容器自启动 docker update --restart=always [容器名/id]

设置挂载(如redis为例)

-v /opt/data/redis:/data ##将主机中/opt/data/redis目录下的redis挂载到容器的/data
-v /opt/data/redis/redis.conf:/etc/redis/redis.conf ##将主机中redis.conf配置文件挂载到容器的/etc/redis/redis.conf文件中

指定容器数据卷启动 (等于主机目录挂载到容器指定目录)

docker run -it -v 主机目录:容器目录 镜像名
docker run -it -v /mydata:/mydata centos

查看运行中、历史创建的、所有的容器

docker ps
docker ps -n 5
docker ps -a

访问容器

docker exec -it docker-redis redis-cli
docker exec -it docker-mysql mysql -uroot -p123456
docker exec -it docker-nginx bash
docker exec -it docker-etcd /bin/sh

获取容器ID或名字

docker container ls -a

批量获取容器ID

docker container ls -a -q

查看容器详细信息

docker inspect [容器名称]

查看容器所属的ip地址:

docker inspect docker-redis | grep IPAddress


docker管理

数据卷管理

docker volume create 数据卷名称 #创建数据卷
docker volume rm 数据卷名称 #删除数据卷
docker volume inspect 数据卷名称 #查看数据卷

网络管理

docker network ls 查看网络信息
docker network create --subnet=网段 网络名称
docker network rm 网络名称

容器编排

docker-compose

创建一个docker-compose.yml文件


构建镜像

创建镜像

docker build 或 docker build -t docker-xxx:0.1 .

env GOOS=linux GOARCH=386 go build main.go
docker build -t main:v1 .
docker run --name docker-main -d -p 8090:8090 main:v1