Docker学习笔记---day004
Docker学习笔记—day004(Docker常用基础命令)
一、帮助启动类命令
# 启动命令
systemctl start docker
# 停止docker
systemctl stop docker
# 重启docker
systemmctl restart docker
# 查看docker状态
systemctl status docker
# 开机自启
systemctl enable docker
# 查看docker信息
docker info
# 查询docker的帮助文档
docker --help
# 查询docker指定命令的帮助文档
docker 具体命令 --help
二 、镜像命令
2.1、列出本地主机上的所有镜像
列出本地主机上的所有镜像:docker images
同一个仓库员可以有多个TAG版本,代表这个仓库源的不同版本,一般使用Repository:TAG来定义不同的镜像
不指定,那么就会用默认最新的进行版本(如ubuntu:latest)
docker images -a # 列出本地所有的镜像(含历史映像层)
docker images -q # 只显示镜像ID

2.2、查询某个镜像
查询某个镜像 :docker search 镜像名
# 例如:在远程仓库查询redis的镜像
docker search redis
docker search --limit 5 redis # 只查询点赞数最多的前5个发布的镜像

2.3、拉取某个镜像(pull)
简单使用方法:docker pull 镜像名字
具体使用方法:docker pull 镜像名称:某个具体版本
docker pull mysql #默认拉取mysql的最新版本Latest'
docker pull mysql:5.7 # 指定mysql的5.7版本进行拉取mysql镜像
2.4、查看镜像/容器/数据卷所占的空间(docker system df)
docker system df # 查看镜像/容器/数据卷所占的空间
各类参数名所代表的含义:

2.5、删除某个镜像
使用方法:docker rmi ID/镜像名
docker rmi hello-world # 根据镜像的名称进行删除
docker rmi 1b44b5a3e06a # 依据ID删除hello-world的镜像(具有唯一性)
docker rmi -f hello-world # 强制删除hello-world的镜像(尽管有容器在使用它)
docker rmi -f 镜像名1:TAG 镜像名2:TAG # 删除多个镜像
docker rmi -f $(docker images -qa) # 删除全部镜像
# $起了一个引用的作用
遇到的问题:普通删除无法删除

2.6、docker中的虚悬镜像
定义:仓库名、标签都是None镜像,俗称虚悬镜像
一般需要删除,没有什么大用

三、容器命令
镜像是模版,真正干活的是容器实例
3.1、新建+启动容器
使用方法:docker run [options] image [COMMAND] [ARG]
OPTIONS说明(常用常用):有些是一个减号有的是两个减号
-- name="容器的新镜子" # 为容器指定一个新名称
-d #后台运行容器并返回容器ID,也即启动守护式容器(后天运行)
-i # 以交互模式运行容器,通常与-t同时使用
-t # 为容器重新分配一个伪输入终端,通常与-i同时使用
# 也即启动交互式容器(前台有伪终端,等待交互)
-P # 随机端口映射,大写P
-p # 指定端口映射,小写p
| 参数 | 说明 |
|---|---|
| -p hostPort:containerPort | 端口映射 -p 8080:80 |
| -p ip:hostPort:containerPort | 配置监听地址 -p 10.0.0.100:8080:80 |
| -p hostPort:containerPort:udp | 指定协议 -p 8080:80:tcp |
| -p 81::80 -p 443:443 | 指定多个 |
启动交互式容器(前台命令行)
使用ubuntu镜像ubuntu:latest 以交互模式启动一个容器,在容器内执行/bin/bash命令
docker run -it ubuntu /bin/bash # it: 交互式的伪终端
# 参数说明:
# -i 交互模式
# -t 终端
# /bin/bash 放在镜像后的命令,交互式shell
# 直接退出终端,输入exit,容器会停止
# ctrl + p + q 退出,容器不停止

3.2、列出所有正在运行的容器
使用方法docker ps [OPTIONS]
docker ps -a # -a:列出当前所有正在运行的容器 + 历史上运行过的
docker ps -l # -l:显示最近创建的容器
docker ps -n num # -n:显示最近num个创建的容器
docker ps -q # -q:静默模式,只显示容器编号

3.3、启动已经停止运行的容器
使用方法:docker start 容器ID或者容器名
docker start a303752bfe41
3.4、重启容器
使用方法:docker restart 容器ID或者容器名
docker restart a303752bfe41
3.5、停止容器和强制停止容器
停止容器:docker stop 容器ID或者容器名
强制停止容器:docker rm 容器ID或者容器名
docker stop 3ab9cfa1013b # 停止该容器
docker kill 3ab9cfa1013b # 强制停止该容器
3.6、删除已停止的容器
注意:不能删除正在运行的容器(必须先停止,再删除)
使用方法:docker rm 容器ID
强制删除正在运行的容器:docker rm - f 容器ID(不推荐使用)
docker rm 3ab9cfa1013b # 删除已停止的容器
docker rm -f 3ab9cfa1013b # 尽管容器正在运行,但还是可以删除的
3.7、启动守护式容器(-d 后台服务器)
有镜像才能创建容器(以redis6.0.8为镜像示例)
背景:在大部分场景下,希望docker的服务是在后台运行的,我们可以通过-d 指定容器的后台运行模式
使用方法:docker run -d 容器名
问题1:守护式启动后,通过docker ps并没有发现启动的容器(启动失败)
docker run -d ubuntu

原因:Docker容器后台运行,就必须有一个前台进程。容器的命令如果不是那些一直分挂起的命令(如 tail、top),就会自动退出。
解决办法:将你要运行的程序以前台进程的形式运行
常见的就是命令行模式,表示我们还有交互操作,别终端。
redis的前后台启动演示:
前台交互式启动:docker run -it redis:6.0.8(导致一退出,redis服务终端)
后天守护式启动:docker run -d redis:6.0.8
docker run -d redis
3.7.1、查看容器日志:docker logs 容器ID
docker logs 83169a8c50ec
查看redis容器实例的后台工作日志

3.7.2、查看容器内运行的进程:docker top 容器ID

3.7.3、查看容器内部细节
docker inspect 容器ID(每个容器都是一个mini版的linux内核)
3.7.4、进入正在运行的容器并以命令行交互(重点)
docker exec -it 容器ID bashshell
重新进入docker attach 容器ID
上述两个的区别:
- attach直接进入容器启动命令终端,不会启动新的进程,用exit退出,会导致容器的停止
- exec是在容器中打开新的终端,会启动新的进程,用exit退出,不会导致容器停止
注意:推荐大家使用docker exec这个命令
3.7.5、将容器的内部的文件拷贝的主机上
docker cp 容器ID:容器内部路径文件 主机目录
# 将ID为cadb48b24333 在/tmp下面的a.txt文件拷贝到 /etc/docker当中
docker cp cadb48b24333:/tmp/a.txt /etc/docker

3.7.6、导入和导出容器
export导出容器的内部留作为一个tar归档文件
import从tar包中的内容创建一个新的文件系统再导入为镜像
docker export cadb48b24333 > abcd.tar # 将容器导出为对应归档文件
cat abcd.tar | docker import - radan/ubuntu:latest # 将归档文件还原为一个镜像
docker images # 查看镜像
docker run -it radan/ubuntu bash # 利用镜像再回复原本的ubuntu容器

更多推荐

所有评论(0)