操作Container
启动容器并启动bash(交互方式)
1
| docker run -i -t <image_name/continar_id> /bin/bash
|
启动容器以后台方式运行(更通用的方式)
这里的 image_name
包含了tag
,例如hello.demo.kdemo:v1.0
1
| docker run -d -it image_name
|
附着到正在运行的容器
1
| docker attach <id、container_name>
|
进入正在运行的容器内部,同时运行bash(比attach更好用)
这里的bash
也可以换成具体的命令,例如ping 127.0.0.1
1
| docker exec -t -i <id/container_name> /bin/bash
|
docker exec
是如此的有用,以至于我们通常是将其封装为一个脚本,放到全局可调用的地方,比如,可以写成一个indocker.sh
1 2 3 4 5 6 7 8
| $ cat indocker.sh docker exec -t -i $1 /bin/bash
$ docker ps | less -S CONTAINER ID IMAGE 9cf7b563f689 hello.demo.kdemo:v160525.202747
$ ./indocker.sh 9cf7b563f689
|
查看容器日志
1
| docker logs <id/container_name>
|
实时查看日志输出
1 2
| docker logs -f <id/container_name>
|
列出当前所有正在运行的container
用一行列出所有正在运行的container
容器多的时候非常清晰
列出所有的container
列出最近一次启动的container
显示一个运行的容器里面的进程信息
1
| docker top <id/container_name>
|
查看容器内部详情细节
1
| docker inspect <id/container_name>
|
在容器中安装新的程序
1
| docker run <id/container_name> apt-get install -y app_name
|
从容器里面拷贝文件/目录到本地一个路径
1
| docker cp <id/container_name>:/container_path to_path
|
保存对容器的修改(commit)
当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器
1
| docker commit <id/container_name> new_image_name
|
删除单个容器
1
| docker rm <id/container_name>
|
删除所有容器
1 2 3 4 5
| docker rm `docker ps -a -q`
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
|
停止、启动、杀死、重启一个容器
1 2 3 4
| docker stop <id/container_name> docker start <id/container_name> docker kill <id/container_name> docker restart <id/container_name>
|
操作Image
列出镜像
从dockerhub检索image
1
| docker search <image_name>
|
下载image
1
| docker pull <image_name>
|
删除一个或者多个镜像
显示一个镜像的历史
1
| docker history <image_name>
|
发布docker镜像
1
| docker push <new_image_name>
|
要发布到私有Registry中的镜像,在镜像命名中需要带上Registry的域名(如果非80端口,同时需要带上端口号)
1
| docker push dockerhub.yourdomain.com:443/hello.demo.kdemo:v1.0
|
拉取docker镜像
1
| docker pull <image_name>
|
网络操作
查看docker0的网络(宿主机上操作)
查看容器的IP地址
1
| docker inspect -f '{{ .NetworkSettings.IPAddress }}' <id/container_name>
|
或者附着到容器内部查看其内部ip
1
| docker exec -it <id/container_name> ip a show eth0
|
docker信息
查看docker版本
1 2 3 4 5 6 7 8 9 10 11 12 13
| $ docker version Client: Docker Engine - Community Version: 20.10.6 API version: 1.41 Go version: go1.13.15 Git commit: 370c289 Built: Fri Apr 9 22:46:01 2021 OS/Arch: linux/amd64 Context: default Experimental: true
Server: Docker Engine - Communit
|
查看docker系统的信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ docker info Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Build with BuildKit (Docker Inc., v0.5.1-docker) scan: Docker Scan (Docker Inc., v0.7.0)
Server: Containers: 83 Running: 61 Paused: 0 Stopped: 22
|
高级技巧
docker 批量删除无用的容器或镜像
1 2 3 4
| docker rm `docker ps -a | grep Exited | awk '{print $1}'`
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
|
清理所有停止运行的容器
1 2 3
| docker container prune
docker rm $(docker ps -aq)
|
清理所有悬挂()镜像
1 2 3
| docker image prune
docker rmi $(docker images -qf "dangling=true")
|
清理所有无用数据卷
清理所有无用镜像
清理后再次使用需要重新下载
按需批量清理容器
1
| docker ps -a --filter 'exited=0'
|
目前支持的过滤器(–filter)有
- id (container’s id)
- label (label= or label==)
- name (container’s name)
- exited (int - the code of exited containers. Only useful with –all)
- status (created|restarting|running|removing|paused|exited|dead)
- ancestor ([:], or <image@digest>) - filters containers that were created from the given image or a descendant.
- before (container’s id or name) - filters containers created before given id or name
- since (container’s id or name) - filters containers created since given id or name
- isolation (default|process|hyperv) (Windows daemon only)
- volume (volume name or mount point) - filters containers that mount volumes.
- network (network id or name) - filters containers connected to the provided network
- health (starting|healthy|unhealthy|none) - filters containers based on healthcheck status
按需批量清理镜像
1 2 3 4 5 6
| docker images --filter "dangling=true" docker rmi $(docker images -qf "dangling=true") docker image prune --filter 'exited=0'
|
目前支持的过滤器(–filter)有
- dangling (boolean - true or false)
- label (label= or label==)
- before ([:], or <image@digest>) - filter images created before given id or references
- since ([:], or <image@digest>) - filter images created since given id or references
- reference (pattern of an image reference) - filter images whose reference matches the specified pattern
查看docker日志
1
| docker logs -f `docker ps | grep qq- | awk '{print $1}'`
|