前置技能
- Linux 基础
- Git 基础
安装环境:
CentOS Docker 7 见官网
帮助指令
本机 docker 的版本
docker version
本机 docker 的详细信息
docker info
HELP,你懂的吧
docker --help
镜像构建信息
docker history xxxx(镜像ID)
镜像指令
列出本机镜像
OPTION
-a
:列出本地所有镜像(含中间映像层)-q
:只显示镜像 ID--digests
:显示镜像的摘要信息--no-trunc
:显示完整的镜像信息
docker images
搜索镜像(Docker Hub)
OPTION
-s xx
:列出收藏数不小于指定值的镜像--automated
:只列出 automated build 类型的镜像--no-trunc
:显示完整的镜像信息
docker search xxxx(具体镜像名字)
拉取镜像
docker pull xxxx(具体镜像名字)
等价:docker pull xxxx:latest
删除镜像
OPTION
-f
:强制删除
# 单个删除:
docker rmi xxxx
等价:docker rmi xxxx:latest
# 多个删除:
docker rmi xxx:TAG xxxx:TAG
# 全部删除:
docker rmi -f $(docker images -qa)
容器指令
新建并启动镜像
OPTION
--name
=”容器新名字”: 为容器指定一个名称-d
: 后台运行容器,并返回容器 ID,也即启动守护式容器-i
:以交互模式运行容器,通常与 -t 同时使用-t
:为容器重新分配一个伪输入终端,通常与 -i 同时使用-P
: 随机端口映射-p
: 指定端口映射,有以下四种格式:
1. ip:hostPort:containerPort
2. ip::containerPort
3. hostPort:containerPort
4. containerPort
docker run [OPTION] image [COMMAND][ARG...]
# eg:
docker run -it --name test tomcat [/bin/bash](可不写,默认是这个)
列出当前所有运行的容器
OPTION
-a
:列出当前所有正在运行的容器+历史上运行过的-l
:显示最近创建的容器-n xx
:显示最近 xx 个创建的容器-q
:静默模式,只显示容器编号--no-trunc
:不截断输出
docker ps
退出容器
- 方式一:容器停止退出
exit
方式二:容器不停止退出
键盘:
CTRL+P+Q
启动容器
docker start xxxx(容器ID or 容器名称)
重启容器
docker restart xxxx(容器ID or 容器名称)
停止容器
docker stop xxxx(容器ID or 容器名称)
强制停止容器
docker kill xxxx(容器ID or 容器名称)
删除已停止容器
docker rm xxxx(容器ID)
# 多个容器删除:
docker rm -f $(docker ps -aq)
docker ps -aq | xargs docker rm
Docker 其他容器指令
启动守护式容器
注意:若不是一直挂起的指令(eg:top、tail),会自动退出
docker run -d xxxx(容器名)
# 后台启动并挂起eg:
docker run -d tomcat /bin/sh -c "while true;do echo test;sleep 3;done"
每隔3秒打印test到控制台中
查看容器日志
OPTION
-t
:加入时间戳-f
:跟随最新的日志打印--tail xx
:显示最后 xx 条
docker logs -f -t --tail xxxx(容器ID)
查看容器内运行的进程
docker top xxxx(容器ID)
查看容器内部细节(JSON 串形式返回)
docker inspect xxxx(容器ID)
进入正在运行的容器并进行命令行交互
# 后面添加[/bin/bash]会进入容器终端,不加则返回结果
# 不仅可以在宿主机直接操作容器,也可以进入容器操作(功能更强)
docker exec -it xxxx(容器ID)
# 直接进入容器中启动命令的终端
docker attach xxxx(容器ID)
容器内拷贝文件到宿主机
docker cp xxxx(容器ID): 容器内路径 目的宿主机路径
Docker 指令使用案例
开启服务器并映射端口
# 分配宿主机8848端口映射该容器的8080端口
docker run -it -p 8848:8080 tomcat
# 随机分配宿主机端口映射该容器的8080端口
docker run -it -P tomcat
# 守护模式开启tomcat服务器
docker run -d -p 8848:8080 tomcat
提交容器副本新镜像
docker commit -m="镜像的描述信息" -a="作者" xxxx(容器ID) 创建的镜像名称(名称空间/原镜像名称):标签名(版本)
直接添加容器数据卷
docker run -it -v /宿主机绝对路径地址:/容器内绝对路径地址 镜像名
# 若报错:cannot open directory .: Permission denied(没遇到)
解决方法:docker run -it -v /宿主机绝对路径地址:/容器内绝对路径地址 --privileged=true 镜像名
# 设置容器只读权限
docker run -it -v /宿主机绝对路径地址:/容器内绝对路径地址:ro 镜像名
DockerFile 添加容器数据卷
- 第一步 编写 DockerFile
# volume test(可以不加,毕竟就是注释,跟写shell脚本差不多)
FROM tomcat
VOLUME ["/testdataOne","/testdataTwo"]
# 创建新容器时显示
CMD echo "This is test"
CMD /bin/bash
# 大致相当:(host1、host2在运行容器时会默认创建,需要使用docker inspect 指令获取)
docker run it -v /host1:/testdataOne -v /host2:/testdataTwo tomcat /bin/bash
- 第二步 根据编写的 DockerFile 文件构建新的镜像
# 若当前目录就是需要执行DockerFile文件所在目录,-f参数可以不写
docker build -f 指定DockerFile文件在宿主机上的决定路径 -t 新建镜像的名称 .
- 第三步 运行新建的镜像(数据卷就会被自动创建)
容器间传递共享
docker run -ti --name xxxx(新建容器命名) --volumes-from xxxx(传递数据卷的容器名称) 镜像
自制镜像上云
–> 阿里云
将制作好的镜像推送上云,具体指令见操作台
- 本文链接:https://wwww.zsmsfy.cn/2021/08/31/note/docker-order/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。