Docker 基本命令
systemctl start docker
: 启动 Docker
systemctl stop docker
: 停止 Docker
systemctl restart docker
: 重启 Docker
systemctl enable docker
: 开机启动 Docker
docker info
: 查看 Docker 概要信息
docker --help
:查看 Docker 帮助文档
docker version
: 查看Docker版本信息
Docker 镜像 基本命令
1、docker images
or docker image ls
: 列出本机所有镜像
options 可选参数
可选参数 | 参数描述 |
---|---|
-a | 显示所有镜像(包括中间层) |
-q | 只显示镜像Id |
-qa | 可以组合使用 |
--digests | 可以显示镜像的摘要信息 |
--no-trunc | 可以显示完整的镜像信息 |
2、docker search
: 搜索镜像
options 可选参数
可选参数 | 参数描述 |
---|---|
--no-trunc | 显示完整的镜像描述 |
-s | 列出收藏数不小于指定值的镜像 |
--automated | 只列出Docker Hub自动构建类型的镜像 |
docker pull
: 拉取镜像
dockers pull 镜像名称 :
注意:不加TAG,默认下载最新版本 latest
3、docker rmi
: 删除镜像
-
删除单个
docker rmi 镜像名称:[TAG] 如果不写 TAG 则默认删除最新版 latest
-
有镜像生成的容器在运行的时候,会删除失败,需要加 -f 强制删除
[root@iZbp17khuqdfkef3nl1db3Z ~]# docker rmi rabbitmq
Error response from daemon: conflict: unable to remove repository reference "rabbitmq" (must force) - container 99693943e972 is using its referenced image 84bc4895f175docker rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG] 多个镜像之间空格隔开
删除所有镜像
docker rmi $(docker images -q)
: 删除所有镜像
Docker 容器 基本命令
-
docker run [OPTIONS] image [COMMAND][ARG...]
: 创建并启动容器 options 可选参数
可选参数 参数描述 --name='容器新名字' 为容器指定一个名称 -i 以交互模式运行容器、通常和 -t 同时使用 -t 为容器重新分配一个伪输入终端,通常和 -i 同时使用 -d 后台运行容器,并返回容器id -
docker run --name 别名 镜像id
: 启动普通容器 -
docker run -it --name 别名 镜像Id
来运行一个容器,取别名,交互模式运行,以及分配一个伪终端 : 启动交互式容器 -
docker run -di --name 别名 镜像Id
:以守护式方式创建并启动容器
-
-
docker ps [OPTIONS]
: 列出容器 options 可选参数
可选参数 参数描述 -a 显示所有容器,包括未运行的 -f 根据条件过滤显示的内容 --format 指定返回值的模板文件 -l 显示最近创建的容器 -n 显示最近创建的 n 个容器 --no-trunc 不截断输出 -q 静默模式,只显示容器编号 -s 显示总的文件大小 -qa 列出所有容器id -
exit
:容器停止退出ctrl + p + q
: 容器不停止退出docker attach 容器Id or 容器名
: 进入容器dockr start 容器id or 容器名
: 启动容器dockr restart 容器id or 容器名
: 重启容器docker stop 容器id or 容器名
:停止容器docker kill 容器id or 容器名
: 暴力停止,直接杀死进程(不推荐)docker rm 容器id
: 如果删除正在运行的容器,会报错,如果需要删除,需要强制删除docker rm 容器Id -f
: 强制删除docker rm -f $(docker ps -qa)
: 删除所有容器docker stop $(docker ps -aq)
: 停止所有容器docker exec -it 容器id /bin/bash
: 进入容器在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时,提示:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
等更新完毕以后再敲命令:apt-get install vim命令即可。
Docker 容器与宿主机端口映射
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
: docker run :创建一个新的容器并运行一个命令
docker run -i -t -p 宿主机端口:容器应用端口 --name 别名 镜像id
: Docker 容器与宿主机端口映射
options 可选参数
可选参数 | 参数描述 |
---|---|
-d | 后台运行容器,并返回容器ID |
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-P(大写p) | 随机端口映射,容器内部端口随机映射到主机的高端口 |
-p(小写p) | 指定端口映射,格式为:主机(宿主)端口:容器端口 |
--name | 为容器指定一个名称 |
修改 Docker 默认存储位置,Docker 容器迁移
Docker中默认存放镜像和容器的目录是:/var/lib/docker/ ,/var下比较容易满建议迁移。
我的系统是 Centos7,具体解决步骤如下:
-
停止Docker 服务:
systemctl stop docker; //每个liunx版本的命令不一样。
-
在空间充足的磁盘下创建新的docker目录
mkdir -p /data/docker; //在根目录下新建
-
迁移/var/lib/docker目录下面的文件到刚才新建好的 /data/docker下面
cp -rvf /var/lib/docker/* /data/docker
-
修改 Docker 配置
vim /etc/systemd/system/docker.service.d/devicemapper.conf
-
在文件末尾添加:
--graph=/data/docker
devicemapper.conf文件的内容如下:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --insecure-registry=私服地址 --graph=/data/docker注意:如果/etc/systemd/system/docker.service.d/devicemapper.conf,这个路径找不到的话,就新建,新建之后加入内容,没有私服地址的话就可以去掉”--insecure-registry=私服地址”。
-
重载配置,重启docker
systemctl daemon-reload;
systemctl restart docker;
systemctl enable docker; 启动成功后,确定容器没问题后删除/var/lib/docker/目录中的文件,然后就OK了。
查看容器日志
docker logs
: 获取容器的日志
语法 :docker logs [OPTIONS] CONTAINER
options 可选参数
可选参数 | 参数描述 |
---|---|
-f | 跟踪日志输出 |
--since | 显示某个开始时间的所有日志 |
-t | 显示时间戳 |
--tail | 仅列出最新N条容器日志 |
Docker 容器目录挂载
我们 在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以实现宿主机和容器目录的双向数据自动同步。
我们可以通过容器目录挂载,能够轻松实现代码上传、配置修改、日志同步等需求。
语法 : docker run -i -t -v /宿主机目录:/容器目录 镜像id
多目录挂载 :docker run -i -t -v /宿主机目录:/容器目录 -v/宿主机目录2:/容器目录2 镜像id
注意 :如果同步多级目录,可能会出现权限不足的提示,只需要添加 **--privileged=true **来解决挂载的目录没有权限的提示问题。
Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。
譬如我要启动一个centos容器,宿主机的/data/hData目录挂载到容器的/cData目录,可通过以下方式指定:
docker run -i -t -v /data/hData:/cData 470671670cac
注意点
- 容器目录不可以为相对路径
- 宿主机目录如果不存在,则会自动生成