docker 入门笔记
docker
Docker使用
概念: docker就是一个容器,可以类比于Windows上的虚拟机, 别人把image都弄好了传到社区里我们只要pull下来进入容器就可以用了。
显示可用的容器
docker images
删除指定镜像
docker rmi <镜像Id>
下载镜像
docker pull hello-world
不指定版本号默认拉取latest版本的
删除指定镜像
docker rmi <镜像Id>
查看容器
docker ps [OPTIONS]
列出当前正在运行的容器, 结果的第一列是container_Id, 第2列是容器名称.
参数:
- a :显示所有的容器,包括未运行的。
- f :根据条件过滤显示的内容。
- –format :指定返回值的模板文件。
- l :显示最近创建的容器。
- n :列出最近创建的n个容器。
- –no-trunc :不截断输出。
- q :静默模式,只显示容器编号。
- s :显示总的文件大小。
停止指定的容器
docker stop container_id/container-name
该容器Id或名称可以从docker ps中获取.
启动容器
docker start container_id/container-name
该容器Id或名称可以从docker ps中获取.
重启容器
docker restart container_id/container-name
该容器Id或名称可以从docker ps中获取.
删除容器
docker rm container_id/container-name
批量删除容器
docker rm $(docker ps -a -q)
删除所有运行结束了容器,正在运行的容器不会被删除
查看容器内的进程
docker top container_id/container-name
查看容器的日志输出
docker logs [-f] [-t] [--tail string]
容器名,
查看容器的日志输出,
-f是打开跟踪,
-t是加上时间戳,
--tail 100
表示仅显示最后的100行日志
- f : 跟踪日志输出
- –since :显示某个开始时间的所有日志
- t : 显示时间戳
- –tail :仅列出最新N条容器日志
搜寻镜像
docker search
镜像名字
显示指定镜像的详细信息
docker image inspect image_id
docker container inspect container_id/container-name (包括容器的Ip)
列出没有被容器化的镜像
docker images -f dangling=true
删除那些没有被容器化的镜像
docker rmi $(docker images -qf dangling=true)
可以磁盘占用情况.
docker system df
docker 一些管理命令集
除了上面常用的命令外, docker 还有一些管理命令集, 这些命令集还可以包含二级命令:
config
Manage
Docker configs
container
Manage containers
image
Manage images network
Manage networks node Manage
Swarm nodes plugin
Manage plugins secret Manage
Docker secrets service
Manage services
stack Manage
Docker stacksswarm Manage
Swarmsystem Manage
Docker trust Manage trust on Docker images volume Manage volumes
比较常用的是:
docker image build
编译
Dockfile
docker network create
创建
docker
网络
docker volume create
创建数据卷
docker run/exec 命令
运行 hello-world 容器, 如果本地没有下载, 将会自动从hub站点下载.
docker run hello-world 命令
以守护态运行容器
docker run -d --name mybusybox busybox /bin/sh -c "while true; do echo hello world; sleep 1; done"
登陆一个容器, 运行中的容器其实是一个功能完备的Linux操作系统, 所以我们可以在登陆该容器执行常规的Linux命令.
docker exec -it container_id/container-name /bin/bash
使用 redis-cli 登陆 myredis 容器
docker exec -it myredis redis-cli
exec 后的 -it 参数的意思是, 以交互的方式并分配一个伪tty, 经常一起联用.
附录:
菜鸟教程
Docker 命令大全
容器生命周期管理
- run
- start/stop/restart
- kill
- rm
- pause/unpause
- create
- exec
容器操作
- ps
- inspect
- top
- attach
- events
- logs
- wait
- export
- port
容器rootfs命令
- commit
- cp
- diff
镜像仓库
- login
- pull
- push
- search
本地镜像管理
- images
- rmi
- tag
- build
- history
- save
- load
- import
info|version
- info
- version
网络问题: 遇到Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
可能是网络模块有问题。
解决方案1 : yum update
解决方案2:创建一个自己的network。docker network create your-network --subnet 172.24.24.0/24
,然后在yaml文件上加上
version: '3'services: app: build: ./app networks: - xxx-networknetworks: xxx-network: external: true
解决方案3:sudo service network-manager restart