目录
一、帮助启动类命令
(1)启动docker
(2)停止docker
(3)重启docker
(4)查看docker
(5)设置开机自启
(6)查看docker概要信息
(7)查看docker总体帮助文档
(8)查看docker命令帮助文档
二、镜像命令
(1)docker images
(2)docker search
(3)docker pull
(4)docker system df
(5)docker rmi
三、容器命令
(1)docker run
(2)docker ps
(3)退出容器
① exit
② ctrl+p+q
(4)进入正在运行的容器并以命令行交互
① docker exec -it 容器ID/容器名称 bashShell
② docker attach 容器ID
(5)启动已停止运行的容器
(6)重启容器
(7)停止容器
(8)强制停止容器
(9)删除已停止的容器
(10)查看容器日志
(11)查看容器内运行的进程
(12)查看容器内部细节
(13)从容器内拷贝文件到主机上
(14)导入和导出容器
一、帮助启动类命令
(1)启动docker
systemctl start docker
(2)停止docker
systemctl stop docker
(3)重启docker
systemctl restart docker
(4)查看docker
systemctl status docker
(5)设置开机自启
systemctl enable docker
(6)查看docker概要信息
docker info
(7)查看docker总体帮助文档
docker --help
(8)查看docker命令帮助文档
docker 命令 --helpexample:
docker run --help
二、镜像命令
(1)docker images
列出本地主机上有的镜像
docker images [OPTIONS]常用参数:
-a :列出所有的镜像 (含历史映像层)
-q :只显示镜像IDexample:
docker images -a
docker images -q
docker images -aq
docker images redis #查找镜像名为redis的镜像
docker images redis:6.0.8 #查找镜像名:版本号(REPOSITORY:TAG)对应的镜像
字段解析:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签版本号
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
(2)docker search
去配置的镜像网站库找寻找某个镜像,比如:Docker
docker search [OPTIONS] 镜像名字常用参数:
--limit nu #只输出查到的前nu条记录example:
docker search redis
docker search --limit 3 redis
docker search redis --limit 3 # 放在镜像名称前面后面均可
字段解析:
- NAME:镜像名称
- DISCRIPTION:镜像说明
- STARTS:点赞数
- OFFICAL:是否是官方认可的
- AUTOMATED:是否自动构建
(3)docker pull
从远程库拉取镜像
docker pull 镜像名字[:TAG]example:
docker pull redis:6.0.8
docker pull ubuntu # 没有指定版本即拉取最新版 即默认为 ubuntu:latest
(4)docker system df
查看镜像/容器/数据卷所占的空间
docker system df
(5)docker rmi
删除本地有的镜像
#删除单个
docker rmi 镜像ID #删除镜像,如果此时镜像上面有容器正在运行,会报错无法删除
docker rmi -f 镜像ID #强制(forced)删除镜像#删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG #删除全部(慎用)
docker rmi -f $(docker images -qa)
#首先docker images -qa会列举本地所有的镜像的ID,然后作为一个集合送入rmi一个个删除
(6)docker commit
Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。我们进行扩展后提交到本地成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]example:docker pull ubuntu # 从镜像仓库拉取基础ubuntu镜像(支持扩展),原始的默认Ubuntu镜像是不带着vim命令的#外网联通的情况下,在容器内安装vim命令
apt-get update
apt-get -y install vim#安装完成后,commit我们自己的新镜像
docker commit -m="ubuntu-add-vim" -a="zjy" a4b1b1cc54f0 atguigu/myubuntu:1.3
提交结果,可以明显的看到SIZE变大了
三、容器命令
(1)docker run
新建启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用参数:
--name=NAME #为容器指定名字为NAME,不使用的话系统自动为容器命名
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互,一般连用,即-it);-P: 随机端口映射,大写P
-p: 指定端口映射,小写pexample:以ubuntu为例,启动后要交互先声明交互模式,其次交互得需要一个终端,因此参数为-it
docker run -it ubuntu /bin/bash指定名称
docker run -it --name=myubuntu ubuntu /bin/bash
启动守护式容器
在大部分的场景下,我们希望 docker 的服务是在后台运行的,
我们可以过 -d 指定容器的后台运行模式。
docker run -d 容器名example:
docker run -d redis:6.0.8
docker run -d ubuntu
注意
上面的docker run -d ubuntu 执行后,使用docker ps -a进行查看,会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start。但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用, 这样的容器后台启动后,会立即自杀,因为它觉得他没事可做了.
最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,类似centos、ubuntu
(2)docker ps
docker ps [OPTIONS]常用参数:
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n nu:显示最近nu个创建的容器。
-q :静默模式,只显示容器编号。example:
docker ps -aq
docker ps -n 3
docker ps -l
(3)退出容器
① exit
run进去容器,exit退出,容器停止
② ctrl+p+q
run进去容器,ctrl+p+q退出,容器不停止
(4)进入正在运行的容器并以命令行交互
① docker exec -it 容器ID/容器名称 bashShell
② docker attach 容器ID
example:#容器ID
docker exec -it c32f612cc218 /bin/bash
docker attach c32f612cc218#容器名称
docker exec -it wizardly_booth /bin/bash
docker attach wizardly_booth
区别
exec 是在容器中打开新的终端,并且可以启动新的进程。用exit退出,不会导致容器的停止。
attach 直接进入容器启动命令的终端,不会启动新的进程。用exit退出,会导致容器的停止。
推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。
(5)启动已停止运行的容器
docker start 容器ID或者容器名
(6)重启容器
docker restart 容器ID或者容器名
(7)停止容器
docker stop 容器ID或者容器名
(8)强制停止容器
docker kill 容器ID或容器名
(9)删除已停止的容器
#删除一个
docker rm 容器ID
docker rm -f 容器ID #强制删除#删除多个
docker rm -f $(docker ps -a -q)
或
docker ps -a -q | xargs docker rm
(10)查看容器日志
docker logs 容器ID
(11)查看容器内运行的进程
docker top 容器ID
(12)查看容器内部细节
docker inspect 容器ID
(13)从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径example:
#以ubuntu为例,我们在/tmp目录下通过touch a.txt创建a文本,将其复制到本机download目录下
docker cp 958443b97285:/tmp/a.txt /download
(14)导入和导出容器
export 导出容器的内容留作为一个tar归档文件[对应import命令]
import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
docker export 容器ID > 文件名.tar
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号example:#以ubuntu为例
docker export 958443b97285 > abcd.tar
cat abcd.tar | docker import - atguigu/ubuntu:3.7 # 注意 - 左右有分别有一个空格