Docker常用命令整合(持续更新)

Docker常用命令

启动docker:

systemctl start docker

停止Docker:

systemctl stop docker

重启Docker:

systemctl restart docker

查看Docker状态:

systemctl status docker

设置开机自启(linux启动后Docker自动启动):

systemctl enable docker

查看Docker概要信息:

docker info

查看Docker总体帮助文档:

docker --help

查看docker具体命令帮助文档:

docker 具体命令 --help

镜像命令

列出本地主机上的镜像(查询本地非远程库):

docker images

参数:

* -a:列出所有镜像(含历史镜像)
* -q:只显示镜像ID
* -f:过滤

在远程仓库中搜索镜像(查询远程非本地库):

docker search 镜像名称
参数:

* -f:过滤
* --limit 数量:只展示前几项
下载镜像:docker pull 镜像名称[:tag]
不加 tag 时,默认下载最新的镜像(即tag为latest)。

查看占据的空间:

docker system df

删除镜像:

docker rmi 镜像名称/ID

可以使用空格分隔,删除多个镜像:

docker rmi 镜像1 镜像2 镜像3

删除全部镜像:(不建议用,删除需要谨慎)

docker rmi -f $(docker images -qa)

容器命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用的参数:

* --name:为容器指定一个名称
* -d:后台运行容器并返回容器ID,也即启动守护式容器
* -i:以交互模式(interactive)运行容器,通常与-t同时使用
* -t:为容器重新分配一个伪输入终端(tty),通常与-i同时使用。也即启动交互式容器(前台有伪终端,等待交互)
* -e:为容器添加环境变量
* -P:随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口
* -p:指定端口映射

-p指定端口映射的几种不同形式:

* -p hostPort:containerPort:端口映射,例如-p 8080:80
* -p ip:hostPort:containerPort:配置监听地址,例如 -p 10.0.0.1:8080:80
* -p ip::containerPort:随机分配端口,例如 -p 10.0.0.1::80
* -p hostPort1:containerPort1 -p hostPort2:containerPort2:指定多个端口映射,例如-p 8080:80 -p 8888:3306

启动交互式容器

启动交互式容器(启动镜像里面的ubuntu,打开ubuntu命令为终端)
 -i 交互模式
 -t 分配一个伪输入终端tty
 ubuntu 镜像名称
/bin/bash(或者bash) shell交互的接口

docker run -it ubuntu /bin/bash

退出交互模式:

 在交互shell中exit即可退回宿主机

exit;

exit 退出后,容器会停止;

ctrl + P + Q 退出后容器依然正在运行。

列出正在运行的容器:

docker ps [OPTIONS]
常用参数:

* -a:列出当前所有正在运行的容器+历史上运行过的容器
* -l:显示最近创建的容器
* -n:显示最近n个创建的容器
* -q:静默模式,只显示容器编号

启动已经停止的容器命令:

docker start 容器ID或容器名
重启容器:
docker restart 容器ID或容器名
停止容器:
docker stop 容器ID或容器名
强制停止容器:
docker kill 容器ID或容器名
删除已经停止的容器:
docker rm 容器ID或容器名
强制删除正在运行的容器:
docker rm -f 容器ID或容器名
一次删除多个容器实例:
docker rm -f ${docker ps -a -q} 或者`docker ps -a -q | xargs docker rm`

启动守护式容器

大部分情况下,我们系统docker容器服务时在后台运行的,可以通过-d指定容器的后台运行模式:比如mysql 、redisd等

docker run -d 容器名

注意事项:

如果使用docker run -d ubuntu尝试启动守护式的ubuntu,会发现容器启动后就自动退出了。

因为Docker容器如果在后台运行,就必须要有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(例如top、tail),就会自动退出。

对比:
在这里插入图片描述

查看容器日志:
docker logs 容器ID或容器名
查看容器内运行的进程:
docker top 容器ID或容器名
查看容器内部细节:
docker inspect 容器ID或容器名

进入正在运行的容器,并以命令行交互:

docker exec -it 容器ID bashShell

重新进入:

docker attach 容器ID

docker execdocker attach 区别:

* attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止
* exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止

如果有多个终端,都对同一个容器执行了 docker attach,就会出现类似投屏显示的效果。一个终端中输入输出的内容,在其他终端上也会同步的显示。
推荐:使用docker exec进入,exit退出

Docker常用命令整合(持续更新)_第1张图片

拷贝

容器内文件拷贝到宿主机:
docker cp 容器ID:容器内路径 目的主机路径
宿主机文件拷贝到容器中:
docker cp 主机路径 容器ID:容器内路径

导入和导出容器:

export:导出容器的内容流作为一个tar归档文件(对应import命令);

import:从tar包中的内容创建一个新的文件系统再导入为镜像(对应export命令);

导出

docker export 容器ID > tar文件名

docker export abcd> abc.tar

导入

cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号

cat abc.tar | docker import - test/mytest:1.0.1

将容器生成新镜像

比如:当容器中不能执行vim命令,可以通过安装索要的包,转换形成一个新的镜像,----好比java中的继承
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[tag]

你可能感兴趣的:(docker,docker,容器)