个人读书笔记,题外话都写在第1章https://blog.csdn.net/u013652550/article/details/119800308。
第10章主要介绍了一些Docker核心知识和指令,本章笔记偏向使用时查阅。
10.1 Docker基础
三大核心概念:镜像(Image)、容器(Container)、仓库(Repository)。
Hadoop:是一个由Apache基金会所开发的分布式系统基础架构。
帮助文档直接通过命令行docker COMMAND --help查看。
通过docker run hello-world测试。通过docker 命令名 --help查看使用帮助。
10.2 Docker镜像
命令 | 作用 | 示例 |
---|---|---|
pull | 获取镜像 | docker pull hello-world:latest |
images | 查看镜像 | docker images |
tag | 添加镜像标签 | docker tag hello-world:latest myhello-world:latest |
inspect | 查看详细信息 | docker inspect hello-world |
history | 查看镜像历史记录 | docker history hello-world |
search | 镜像查找 | docker search -f=stars=3 hello-world |
rmi | 删除镜像 | docker rmi myhello-world:latest |
commit | 创建镜像 | docker commit -m "add a image" -a "cuiyw" 90e4296835b8 cuiyw-hello-world |
import | 导入tar文件 | docker import G:\hello-world.tar hello-world-import:latest |
export | 导出容器 | docker export 90e4296835b8 -o G:\hello-world.tar |
save | 另存镜像 | docker save -o G:\helloworld-save.tar |
load | 载入镜像 | docker load -i G:\helloworld-save.tar |
10.3 容器
命令 | 作用 | 示例 |
---|---|---|
create | 新建容器 | docker create -it ubuntu |
start | 启动容器 | docker start f8385c139e00 |
run | 新建并启动容器 | docker run -it ubuntu |
run -d | 守护态运行 | docker run -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 10;done;" |
ps | 查看状态 | docker ps -a |
stop | 终止容器 | docker stop 29c19cd0caa7 |
attach | 进入容器 | docker attach keen_golick |
exec | 进入容器 | docker exec keen_golick bin/bash |
export | 导出容器 | docker export -o G:\ubuntu.tar 44ce0074a613 |
import | 导入容器 | docker import G:\ubuntu.tar import_ubuntu |
10.4 搭建私有仓库
以下为书上示例:
搭建仓库:docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
设置tag:docker tag busybox 127.0.0.1:5000/busyboxdocker
上传到仓库:docker push 127.0.0.1:5000/busyboxdocker
10.5 数据管理
主要有数据卷、数据卷容器两种方式。以下为书上示例:
1. 数据卷
在G:\docker\test目录下创建两个文件。挂载:docker run -d -it --name=test -v G:/docker/test:/test ubuntu /bin/sh
使用docker ps -a即可找到上面运行的容器,再使用docker exec -it 75ae60cef308 /bin/sh即可打开文件夹及文件。
使用docker run -d -it --name=vtest -v /vtest ubuntu /bin/sh创建了ubuntu镜像的容器vtest,并在容器中创建了一个名为vtest的数据卷。
2. 数据卷容器
数据卷容器就是一种普通容器,专门提供数据卷供其他容器挂载使用。这里以上面创建的test容器为例,将其作数据卷容器。通过下面命令创建了db1、db2两个容器,使用--volumes--from参数挂载test容器中的数据卷。
docker run -it --volumes-from test --name db1 ubuntu /bin/sh
docker run -it --volumes-from test --name db2 ubuntu /bin/sh
10.6 端口映射与容器互联
上文docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry中-p后的参数即进行端口映射。大写-P是随机映射一个49000~49900的端口到内部容器开放的网络端口,小写-p可以指定,并且在一个指定端口上只可以绑定一个容器。支持格式以下三种,仅最后一种常用:
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
使用port来查看映射情况。
容器互联使用--link即可。示例启动mysql server:docker run --name mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql,关联:docker run --name webapp --link mysql:db -it -d ubuntu /bin/sh。
10.7 Dockerfile
可以在build命令中使用-f标志指向文件系统中任何位置的Dockerfile。CMD、ENTRYPOINT各自叠加或重复叠加使用时仅最后一条生效。
命令 | 作用 | 格式/说明 |
---|---|---|
FROM | 基础镜像信息 | FROM <image>或FROM <image>:<tag> |
MAINTAINER | 指定维护者信息 | MAINTAINER <name> |
RUN | 运行指定命令 | RUN <command>或RUN ["executable","param1","param2"] |
CMD | 容器启动时指定操作 | CMD ["executable","param1","param2"] |
ENTRYPOINT | 指定容器启动时执行命令 | ENTRYPOINT ["executable","param1","param2"] |
LABEL | 给镜像添加信息 | LABEL <key>=<value> |
EXPOSE | 将容器中的端口映射 | 首先在Dockerfile中使用EXPOSE设置需要映射的容器端口,运行时使用-p |
ENV | 指定环境变量 | ENV <key> <value>或ENV <key>=<value> |
ADD | 将目录下文件添加到容器中 | 不含目录 |
COPY | 复制本地主机src | COPY <src> <dest> |
VOLUME | 使容器中目录持久化 | VOLUME ["/data"] |
USER | 设置启动容器的用户 | USER daemon |
WORKDIR | 指定配置工作目录 | 在RUN CMD ENTRYPOINT等前使用 |
ONBUILD | 配置当前镜像为其他镜像基础 | ONBUILD [INSTRUCTION] |
ARG | 指定一些镜像内使用参数 | ARG name [=default value]。docker build --build-arg <name>=<value>指定参数值 |
10.8 Docker容器Tomcat部署war包
创建Tomcat容器:docker run -d --name cmdtomcat -p 8080:8080 tomcat
上传war包到Tomcat容器:Docker cp G:\dockerwar\SpringBootSwagger-0.0.1-SNAPSHOT.war cmdtomcat:/usr/local/tomcat/webapps
重启容器:docker restart cmdtomcat
访问应用:输入http://localhost:8080/SpringBootSwagger-0.0.1-SNAPSHOT/swagger-ui.html即可正常显示页面。
以挂在房石启动:docker run -d -v G:/dockerwar/SpringBootSwagger-0.0.1-SNAPSHOT.war:/usr/local/tomcat/webapps/SpringBootSwagger-0.0.1-SNAPSHOT.war --name cmdtomcat2 -p 8081:8080 tomcat,访问时URL改为8081端口即可。
可能用到的一些参考资料:
Swagger ui stuck on unable to infer base url · Issue #1996 · springfox/springfox (github.com)
Docker(四):Docker 部署 tomcat 运行war包_树欲静而风不止-CSDN博客_docker运行war包