版权声明:这可是本菇凉辛辛苦苦原创的,转载请一定带上我家地址,不要忘记了哈 . https://cloud.tencent.com/developer/article/1436093
以下内容全文出自书目:《 Docker 进阶与实战 》
仓库的名字通常由两部分组成,中间以斜线分开,前是用户名,后是镜像名。如:tom/ubuntu 。
Docker 公司提供的官方 Registry 叫 Docker Hub 。鉴权认证保证了 Registry 访问的安全性。
若要将镜像 push 到第三方 Registry , 那么镜像名中必须包含该 Registry 地址。
其实 Registry 也是一个单独的开源项目。任何人都可以下载后部署一个自己的 Registry 。
sudo ape-get install docker.io
Docker 容器与主机共享操作系统内核。
容器 = cgroup + namespace + rootfs + 容器引擎(用户态工具)
Cgroup : 资源控制
Namespace : 访问隔离
rootfs :文件系统隔离
容器引擎 :生命周期控制
ip netns delete new_ns
docker import / docker load 。 docker load 一般只用于导入由 docker save 导出的镜像。
18.生成镜像方式:
docker commit :可增量的生成一个镜像。
docker build : 通过 dockerfile 文件生成镜像。
docker ps
docker images
docker inspect
-v 会在容器的 /tmp/data 目录下创建一个新的数据卷。
可用 docker Inspet 查看数据卷在主机中的位置。
-v 也可将 Docker daemon 所在主机上的文件或文件夹挂载到容器中。
-v 参数的主机目录必须使用绝对路径,若指定路径不存在, Docker 会自动创建该目录。
使用数据卷容器存储的数据不会轻易丢失,删除容器、甚至是初始化该数据卷的 dbdata ,该数据卷也不会被删除。
sudo convoy create volume_name
删除:
sudo convoy delete volume_name
备份:
sudo convoy backup create snaplvoll --dest vfs:///opt/convoy/
core dump 文件的大小、
进程数据段的大小、
可创建文件的大小、
常驻内存集的大小 、
打开文件的数量、
进程栈的大小、
CPU 时间 、
单个用户最大线程数、
进程最大虚拟内存
基础镜像信息、维护者信息、镜像操作指令、容器启动命令
其第一条有效信息必须是基础镜像信息: FROM 指令。用来指定要制作的镜像继承自哪个镜像。
可以写多个 FROM 指令来构建复杂镜像。
EXPOSE : 暴露端口
CMD :容器启动时执行的命令。
每个 Dockerfile 只能有一条 CMD 命令,写了多条时只有最后一条会被执行。
若用户启动容器时指定了运行命令,则会覆盖 CMD 指定命令。
VOLUME :创建一个可从本地主机或其它容器挂载的挂载点。
常用来存放数据库或需要永久保存的数据。
ENV :指定一个环境变量。被后续 RUN 命令使用并在容器运行时保持。
1. 解析 Dockerfile,找到基础镜像。
2. 以基础镜像为基础,创建一个容器。
3. 在容器中按顺序执行 Dockerfile 中的命令。
4. 若不是 RUN 命令,如 ENV 命令,记录下来以便启动时执行。
5. 把属性命令记录在 Image 的属性中。
6. 所有命令执行完后,commit 该容器为新的镜像。
80:8089 表示将主机上的 80 端口映射到容器中的 8089 端口。(对外端口:容器内端口)
1. “ ports ” 对应 docker run 中的 -p 参数。
2. “ volumes ” 对应 -v 选项。
3. “ links ” 对应 “ --links ” 选项。
39.搭建 Jenkins 环境有 2 种方式:
1) 直接在主机中配置 Jenkins 环境 。
2) 使用 Docker 镜像配置 Jenkins 环境:
1. 下载 Jenkins 镜像: docker pull jenkins
2. 启动 Jenkins 容器: docker run -d -p 49001:8080 -t Jenkins
-d : 后台运行; -p : 端口映射; -t :给容器命名。