当前位置:   article > 正文

Dockers&&Docker-compose_docker-compose ab版

docker-compose ab版

目录

1,bash通用安装

2,docker核心概念

3,配置国内镜像加速

4,docker镜像及容器相关操作

5,离线安装

6,dockerfile格式

7,基于alpine制作镜像

8,基于ubuntu制作镜像

9,镜像分层构建及实现tomcat

10,镜像分层构建及实现nginx

11,HAProxy镜像

12,docker-compose

13,haubor仓库 


1,bash通用安装

  1. A:执行下载docker引擎的脚本文件
  2. curl -fsSL get.docker.com -o get-docker.sh
  3. B:执行脚本通过脚本下载,并设置阿里云加速
  4. sh get-docker.sh --mirror Aliyun
  5. C:启动docker服务:
  6. systemctl start docker ;systemctl enable --now docker
  7. systemctl status docker
  8. D:创建docker用户组,将当前用户加入docker组
  9. groupadd docker;usermod -aG docker $USER
  10. E:查看docker安装的信息
  11. docker info;docker version
  12. F:docker会出现如下情况:客户端引擎和服务端引擎
  13. Client: Docker Engine - Community
  14. Version: 23.0.5
  15. API version: 1.42
  16. Go version: go1.19.8
  17. Git commit: bc4487a
  18. Built: Wed Apr 26 16:18:56 2023
  19. OS/Arch: linux/amd64
  20. Context: default
  21. Server: Docker Engine - Community
  22. Engine:
  23. Version: 23.0.5
  24. API version: 1.42 (minimum version 1.12)
  25. Go version: go1.19.8
  26. Git commit: 94d3ad6
  27. Built: Wed Apr 26 16:16:35 2023
  28. OS/Arch: linux/amd64
  29. Experimental: false
  30. containerd:
  31. Version: 1.6.21
  32. GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
  33. runc:
  34. Version: 1.1.7
  35. GitCommit: v1.1.7-0-g860f061
  36. docker-init:
  37. Version: 0.19.0
  38. GitCommit: de40ad0
  39. G: runc 低阶运行时
  40. dockershim 中间人
  41. containerd 高阶运行时
  42. containerd 接受客户端命令,通过dockershim传递给runc进行处理

2,docker核心概念

  1. 镜像: images
  2. 定义:一个镜像就是代表一个软件
  3. 容器:container
  4. 定义:一个镜像运行一次就会生一个容器,容器就是一个运行的软件服务
  5. 仓库:registry
  6. 定义:存储镜像软件的位置 ===》 仓库web页面:docker hub或私有镜像仓库harbor(需自己搭建)
  7. https://hub.docker.com/
  8. 国内地址:https://www.daocloud.io/

镜像:一个镜像代表一个虚拟环境,是一个只读的文件,如mysql镜像,redis镜像等

容器:镜像每次运行之后就产生一个容器,就是正在运行的镜像文件,特点是可读可写

仓库:用来存储镜像的位置,类似于maven仓库,也是经i选哪个下载和上传的位置

dockerfile:docker生成镜像的配置文件,用来书写自定义镜像的一些配置信息

tar:镜像的打包文件,之后可以还原成镜像

3,配置国内镜像加速

  1. 查看
  2. [root@localhost ~]#dockerd --help | grep json
  3. --config-file string Daemon configuration file (default "/etc/docker/daemon.json")
  4. 此文件默认没有,需要自己创建:
  5. vim /etc/docker/daemon.json
  6. {
  7. "registry-mirrors": [
  8. "http://hub-mirror.c.163.com",
  9. "https://docker.mirrors.ustc.edu.cn",
  10. "https://registry.docker-cn.com"
  11. ]
  12. }
  13. 之后重新加载docker:
  14. systemctl daemon-reload;systemctl restart docker;docker info
  15. 查看Registry Mirrors:
  16. http://hub-mirror.c.163.com/
  17. https://docker.mirrors.ustc.edu.cn/
  18. https://registry.docker-cn.com/
  19. 核心目录:
  20. 软件数据目录 /var/lib/docker/
  21. 专属服务目录 /etc/docker
  22. 测试:docker run hello-world

4,docker镜像及容器相关操作

  1. [root@localhost ~]#docker images --help
  2. Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
  3. List images
  4. Aliases:
  5. docker image ls, docker image list, docker images
  6. Options:
  7. -a, --all Show all images (default hides intermediate images)
  8. --digests Show digests
  9. -f, --filter filter Filter output based on conditions provided
  10. --format string Format output using a custom template:
  11. 'table': Print output in table format with column headers (default)
  12. 'table TEMPLATE': Print output in table format using the given Go template
  13. 'json': Print in JSON format
  14. 'TEMPLATE': Print output using the given Go template.
  15. Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates
  16. --no-trunc Don't truncate output
  17. -q, --quiet Only show image IDs
  18. 选项:
  19. 全部显示所有图像(默认为隐藏中间图像)
  20. ——摘要显示了摘要
  21. -f,过滤器过滤器输出基于提供的条件
  22. ——使用自定义模板格式化字符串格式输出:
  23. “表”:以带有列标题的表格格式打印输出(默认值)
  24. “表格模板”:使用给定的Go模板以表格格式打印输出
  25. “JSON”:打印在JSON格式
  26. “模板”:使用给定的Go模板打印输出。
  27. 有关使用模板格式化输出的更多信息,请参阅https://docs.docker.com/go/formatting/
  28. -不截断输出
  29. -安静,只显示图像id
  30. *****docker --help
  31. Usage: docker [OPTIONS] COMMAND
  32. A self-sufficient runtime for containers
  33. Common Commands:
  34. run Create and run a new container from an image
  35. 运行“创建”,并从映像中运行一个新的容器
  36. exec Execute a command in a running container
  37. 执行:在正在运行的容器中执行一个命令
  38. ps List containers
  39. ps列表容器
  40. build Build an image from a Dockerfile
  41. 从码头文件构建映像
  42. pull Download an image from a registry
  43. 从注册表中下载一个图像
  44. push Upload an image to a registry
  45. 将图像上传推送到注册表
  46. images List images
  47. 图像列表图像
  48. login Log in to a registry
  49. 登录名:登录到注册表
  50. logout Log out from a registry
  51. 注销从注册表中注销
  52. search Search Docker Hub for images
  53. 搜索搜索码头工人中心的图像
  54. version Show the Docker version information
  55. 版本显示Docker版本信息
  56. info Display system-wide information
  57. 信息显示:系统范围内的信息
  58. Management Commands:
  59. builder Manage builds
  60. 构建器管理构建
  61. buildx* Docker Buildx (Docker Inc., v0.10.4)
  62. Docker构建镜像*(DockerInc.,v0.10.4)
  63. compose* Docker Compose (Docker Inc., v2.17.3)
  64. Docker编排工具(Docker Inc.,v2.17.3)
  65. container Manage containers
  66. 容器管理容器
  67. context Manage contexts
  68. 上下文管理上下文
  69. image Manage images
  70. 图像管理图像
  71. manifest Manage Docker image manifests and manifest lists
  72. 清单管理Docker映像清单和清单列表
  73. network Manage networks
  74. 网络管理网络
  75. plugin Manage plugins
  76. 插件管理插件
  77. system Manage Docker
  78. 系统管理文档
  79. trust Manage trust on Docker images
  80. 信任,管理对Docker映像的信任
  81. volume Manage volumes
  82. 卷管理卷
  83. Swarm Commands:
  84. swarm Manage Swarm
  85. Commands:
  86. attach Attach local standard input, output, and error streams to a running container 将本地标准的输入、输出和错误流附加到正在运行的容器
  87. commit Create a new image from a container's changes
  88. 提交从容器的更改中创建一个新的图像
  89. cp Copy files/folders between a container and the local filesystem
  90. 在容器和本地文件系统之间复制文件/文件夹
  91. create Create a new container
  92. 创建:创建一个新的容器
  93. diff Inspect changes to files or directories on a container's filesystem
  94. 差异检查对容器的文件系统上的文件或目录的更改
  95. events Get real time events from the server
  96. 事件从服务器获取实时事件
  97. export Export a container's filesystem as a tar archive
  98. 导出将容器的文件系统导出为tar存档
  99. history Show the history of an image
  100. 历史显示一个图像的历史
  101. import Import the contents from a tarball to create a filesystem image
  102. 导入从目标中导入内容以创建文件系统映像
  103. inspect Return low-level information on Docker objects
  104. 检查返回有关Docker对象的低级信息
  105. kill Kill one or more running containers
  106. 杀死,杀死一个或多个正在运行的容器
  107. load Load an image from a tar archive or STDIN
  108. 从tar存档或STDIN加载图像
  109. logs Fetch the logs of a container
  110. 日志获取一个容器的日志
  111. pause Pause all processes within one or more containers
  112. 暂停暂停一个或多个容器中的所有进程
  113. port List port mappings or a specific mapping for the container
  114. 端口列表端口映射或容器的特定映射
  115. rename Rename a container
  116. 重命名重命名容器
  117. restart Restart one or more containers
  118. 重新启动,重新启动一个或多个容器
  119. rm Remove one or more containers
  120. 删除一个或多个容器
  121. rmi Remove one or more images
  122. 删除一个或多张图像
  123. save Save one or more images to a tar archive (streamed to STDOUT by default)
  124. 保存一个或多个图像保存到tar存档(默认情况下流到STDOUT)
  125. start Start one or more stopped containers
  126. 启动,启动一个或多个已停止的容器
  127. stats Display a live stream of container(s) resource usage statistics
  128. 统计数据显示容器资源使用情况统计数据的实时流
  129. stop Stop one or more running containers
  130. 停止停止一个或多个正在运行的容器
  131. tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  132. 标记创建一个引用为SOURCE_IMAGE的标记TARGET_IMAGE
  133. top Display the running processes of a container
  134. 顶部显示容器的运行进程
  135. unpause Unpause all processes within one or more containers
  136. 取消暂停取消暂停一个或多个容器中的所有进程
  137. update Update configuration of one or more containers
  138. 更新一个或多个容器的更新配置
  139. wait Block until one or more containers stop, then print their exit codes
  140. 等待块,直到一个或多个容器停止,然后打印其退出代码
  141. Global Options:
  142. --config string Location of client config files (default "/root/.docker")
  143. -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  144. -D, --debug Enable debug mode
  145. -H, --host list Daemon socket(s) to connect to
  146. -l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
  147. --tls Use TLS; implied by --tlsverify
  148. --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
  149. --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
  150. --tlskey string Path to TLS key file (default "/root/.docker/key.pem")
  151. --tlsverify Use TLS and verify the remote
  152. -v, --version Print version information and quit
  153. Run 'docker COMMAND --help' for more information on a command.
  154. For more help on how to use Docker, head to https://docs.docker.com/go/guides/
  155. 全局选项:
  156. ——配置字符串客户端配置文件的位置(默认值为“/root/.docker”)
  157. -c,——上下文字符串用于连接到守护进程的上下文的名称(用“文档器上下文使用”覆盖DOCKER_HOST env var和默认上下文设置)
  158. -调试启用调试模式
  159. 主机列表守护进程插接字(s)
  160. -l、--日志级别字符串设置日志记录级别(“调试”、“info”、“警告”、“错误”、“致命”)(默认为“info”)
  161. ——TLS使用TLS;隐含的——TLS验证
  162. ——tlscacert字符串信任证书仅由此CA签名(默认为“/root/.docker/ca.pem”)
  163. ——Tlscert字符串路径到TLS证书文件(默认“/root/.docker/cert.pem”)
  164. ——TLS key字符串到TLS关键字文件的路径(默认为“/root/.docker/key.pem”)
  165. --验证使用TLS并验证远程器
  166. 打印版本信息并退出
  167. 运行“docker命令——帮助”以获取关于命令的更多信息。
  168. 想了解更多关于如何使用Docker的帮助,请访问https://docs.docker.com/go/guides/

1,镜像操作

  1. 1,查看镜像:docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. 镜像名称 镜像版本 镜像ID 镜像创建时间 镜像大小
  4. 2,搜索镜像:docker search 镜像名称
  5. 例:docker search tomcat
  6. NAME(镜像名称) DESCRIPTION (描述信息)STARS(星级)OFFICIAL(官方镜像)AUTOMATED(三方上传)
  7. 3,下载镜像:docker pull 镜像名称:可指定版本号,不指定则拉取最新镜像latest
  8. 例:docker pull tomcat ---》 默认最新版本latest
  9. docker pull tomcat:7.0 ---》指定版本号
  10. 4,删除镜像:docker rmi 镜像名或者镜像ID(dockers正在运行中禁止删除)
  11. docker rmi -f 镜像名或ID(强制删除)
  12. 例:docker rmi 448a08f1d2f9
  13. 5,查看指定的镜像:docker images 镜像名称
  14. 6,只查看镜像ID:docker images -q
  15. 例:docker images nginx -q
  16. 7,查看所有镜像ID:docker ps -qa
  17. 8,批量删除多有镜像:docker rm -fv $(docker ps -qa)

2,容器相关操作

  1. 命令格式:
  2. docker [OPTIONS] COMMAND
  3. 常用格式:
  4. docker run -it -d -p -v --name 镜像名称
  5. -i,-交互式保持STDIN打开,即使没有连接
  6. -t,分配一个伪tty
  7. -d,后台运行
  8. -p,端口映射
  9. -v,数据映射
  10. --name 指定名称
  11. 1,查看docker引擎中正在运行的容器:
  12. docker ps
  13. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  14. 容器ID 镜像名称 容器内执行的命令 创建及运行时间 状态 映射端口 容器名称(可自定义名称)
  15. 2,运行容器命令:
  16. docker run --help
  17. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  18. 3,运行容器时,设置容器与宿主机的端口映射,设置端口映射,在启动容器时,iptables或及那个映射的端口添加至防火墙开放列表中
  19. -p 宿主机端口:容器端口
  20. 可映射多个端口:用-p选项指定:-p 8080:8080 -p 8001:80 -p 5672:5672
  21. 例:docker run -it -p 8080:8080 tomcat:8.0
  22. 4,后台运行容器:
  23. -d 后台运行该容器
  24. 例:docker run -it -d -p 8080:8080 tomcat:8.0
  25. 5,指定容器名称 --name
  26. 例:docker run -it -d -p 8081:8080 --name tomcat1 tomcat:8.0
  27. 6,删除容器:
  28. docker rm 容器ID -----》删除已经停止的容器
  29. docker rm -f 容器ID -----》强制删除(运行中的容器也可以删除)
  30. docker rm -f $(docker ps -qa)----》删除所有容器
  31. 7,查看容器日志:
  32. docker logs 容器名|容器ID
  33. docker logs -t 加时间戳查看日志
  34. docker logs -f 容器名|容器ID ----》实时查看容器日志
  35. 8,进入容器内部
  36. docker exec -it 容器ID /bin/bash
  37. docker exec -it 容器ID bash
  38. docker exec -it 容器ID sh
  39. docker容器的停止,启动,重启,暂停,恢复
  40. docker stop 容器ID|容器名称
  41. docker start 容器ID|容器名称
  42. docker restart 容器ID|容器名称
  43. docker pause 容器ID|容器名称 暂停
  44. docker unpause 容器ID|容器名称 恢复
  45. Options:
  46. --add-host list 添加一个自定义的主机到ip的映射(主机:ip)
  47. -a, --attach list -a,--附加列表附加到STDIN、STDOUT或STDERR
  48. --blkio-weight uint16 blkio重量uint16块IO(相对重量),在10和1000之间,或0以禁用(默认为0)
  49. --blkio-weight-device list 块IO重量(相对设备重量)(默认[])
  50. --cap-add list 添加Linux功能
  51. --cap-drop list 删除Linux功能
  52. --cgroup-parent string 可选容器的可选父cgroup
  53. --cgroupns string 要使用的群组字符串群组名称空间(主机|私有)
  54. “主机”:在Docker主机的cgroup命名空间中运行该容器
  55. “私有”:在容器自己的私有cgroup命名空间中运行该容器
  56. “”:使用所配置的cgroup名称空间,守护进程上的默认分组模式选项(默认)
  57. --cidfile string 将容器ID写入该文件
  58. --cpu-period int -CPU周期内部限制CPUCFS(完全公平的调度程序)周期
  59. --cpu-quota int --限制CPUCFS(完全公平的调度程序)配额
  60. --cpu-rt-period int 限制CPU的实时周期,单位为微秒
  61. --cpu-rt-runtime int 限制CPU实时运行时,单位为微秒
  62. -c, --cpu-shares int -c,—CPU共享内部CPU共享(相对权重)
  63. --cpus decimal CPUs十进制的cpu数
  64. --cpuset-cpus string CPUs十进制的cpu数
  65. --cpuset-mems string 允许执行的内存模块字符串(0-3、0、1)
  66. -d, --detach 在后台分离运行容器,并打印容器ID
  67. --detach-keys string 覆盖用于分离容器的键序列
  68. --device list 设备列表添加主机设备到容器
  69. --device-cgroup-rule list 将规则添加到允许的设备列表中
  70. --device-read-bps list 从设备读取速率(每秒字节)(默认[])
  71. --device-read-iops list 设备读取列表限制设备读取速率(每秒IO)(默认[])
  72. --device-write-bps list 设备写基点列表限制设备的写速率(每秒字节)(默认[])
  73. --device-write-iops list 设备写操作操作列表限制设备的写速率(每秒IO)(默认[])
  74. --disable-content-trust 禁用内容信任,跳过映像验证(默认为true)
  75. --dns list dns列表设置自定义DNS服务器
  76. --dns-option list 设置DNS选项
  77. --dns-search list 设置自定义DNS搜索域
  78. --domainname string 域名字符串容器NIS域名
  79. --entrypoint string 域名字符串容器NIS域名
  80. -e, --env list env列表设置环境变量
  81. --env-file list 在环境变量文件中读取
  82. --expose list 暴露列表暴露一个端口或一系列端口
  83. --gpus gpu-request gpugpu请求GPU设备添加到容器(“所有”通过所有gpu)
  84. --group-add list 组添加列表添加要加入的其他组
  85. --health-cmd string 运行状况的cmd字符串命令,要运行以检查运行状况
  86. --health-interval duration 运行状况间隔持续时间运行检查之间的时间(ms||m|h)(默认0s)
  87. --health-retries int 健康重试和报告不健康状况所需要的连续失败
  88. --health-start-period duration -运行状况开始期间持续时间开始运行状况重试倒计时前初始化的容器的开始期间(ms||m|h)(默认0)
  89. --health-timeout duration 运行状况超时持续时间允许一次检查运行的最大时间(ms||m|h)(默认值为0s)
  90. --help 帮助打印工具的使用
  91. -h, --hostname string 主机名字符串容器主机名
  92. --init init在容器内运行一个转发信号和捕获进程的init
  93. -i, --interactive -i,-交互式保持STDIN打开,即使没有连接
  94. --ip string ip字符串IPv4地址(如172.30.100.104)
  95. --ip6 string ip6字符串IPv6地址(例如,2001:db8::33)
  96. --ipc string 要使用的IPC字符串IPC模式
  97. --isolation string 隔离字符串、容器隔离技术
  98. --kernel-memory bytes 内核内存字节的内核内存限制
  99. -l, --label list -l,——标签列表设置容器上的元数据
  100. --label-file list 标签文件列表在以行分隔的标签文件中读取
  101. --link list 链接列表添加链接到另一个容器
  102. --link-local-ip list 链路本地i列表容器IPv4/IPv6链路本地地址
  103. --log-driver string 日志驱动程序字符串日志驱动程序
  104. --log-opt list 日志驱动程序选项
  105. --mac-address string 容器MAC地址(例如,92:d0:c6:0a:29:33)
  106. -t, --tty 分配一个伪tty
  107. --ulimit ulimit 超限选项(默认[])

5,离线安装

  1. 获取软件
  2. mkdir /data/softs
  3. wget -c https://download.docker.com/linux/static/stable/x86_64/docker-
  4. 20.10.14.tgz
  5. 解压软件
  6. tar xf docker-20.10.14.tgz -C /usr/local/bin --strip-components=1
  7. 注意:
  8. --strip-components=1 表示仅仅将该压缩文件中的内容,解压到指定的目录中
  9. 创建依赖目录
  10. mkdir /var/lib/docker /etc/docker
  11. 创建service服务文件
  12. # vim /usr/lib/systemd/system/docker.service
  13. [Unit]
  14. Description=Docker Application Container Engine
  15. Documentation=https://docs.docker.com
  16. After=network-online.target firewalld.service
  17. Wants=network-online.target
  18. [Service]
  19. Type=notify
  20. ExecStart=/usr/local/bin/dockerd -H unix:///var/run/docker.sock --data-
  21. root=/var/lib/docker
  22. ExecReload=/bin/kill -s HUP $MAINPID
  23. LimitNOFILE=infinity
  24. LimitNPROC=infinity
  25. LimitCORE=infinity
  26. TimeoutStartSec=0
  27. Delegate=yes
  28. KillMode=process
  29. Restart=on-failure
  30. StartLimitBurst=3
  31. StartLimitInterval=60s
  32. [Install]
  33. WantedBy=multi-user.target
  34. 添加国内加速仓库:
  35. # vim /etc/docker/daemon.json
  36. {
  37. "registry-mirrors": [], "insecure-registries": []
  38. }
  39. 创建用户组
  40. groupadd docker
  41. 将当前用户加入到指定用户组
  42. usermod -aG docker $USER
  43. 更新用户组
  44. newgrp docker
  45. 启动服务:
  46. 重载配置文件
  47. systemctl daemon-reload
  48. systemctl start docker
  49. systemctl enable docker
  50. 查看信息:docker info

6,dockerfile格式

  1. FROM:
  2. 语法:
  3. FROM <image>
  4. FROM <image>:<tag>。
  5. 解释:
  6. FROM 是 Dockerfile 里的第一条而且只能是除了首行注释之外的第一条指令
  7. MAINTAINER:
  8. 语法:
  9. MAINTAINER <name>
  10. 解释:
  11. 指定该dockerfile文件的维护者信息。类似我们在docker commit 时候使用-a参数指定的信息
  12. RUN:
  13. 语法:
  14. RUN <command>                     (shell模式)
  15. RUN ["executable", "param1", "param2"]。      (exec 模式)
  16. 解释:
  17. 表示当前镜像构建时候运行的命令
  18. shell模式 类似于 /bin/bash -c command RUN echo hello
  19. exec 模式 类似于 RUN ["/bin/bash", "-c", "command"] RUN ["echo", "hello"]
  20. EXPOSE:
  21. 语法:
  22. EXPOSE <port> [<port>...]
  23. 解释:
  24. 设置Docker容器对外暴露的端口号,Docker为了安全,不会自动对外打开端口,如果需要外部提供访
  25. 问,还需要启动容器时增加-p或者-P参数对容器的端口进行分配。
  26. ENTRYPOINT:
  27. 语法:
  28.  ENTRYPOINT ["executable", "param1","param2"]     (exec 模式)
  29.  ENTRYPOINT command param1 param2            (shell模式)
  30. 解释:
  31. 每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。
  32. ADD:
  33. 语法:
  34.  ADD <src>... <dest>
  35.  ADD ["<src>",... "<dest>"]
  36.  
  37. 解释:
  38. 将指定的 文件复制到容器文件系统中的
  39.  src 指的是宿主机,dest 指的是容器
  40.  如果源文件是个压缩文件,则docker会自动帮解压到指定的容器中(无论目标是文件还是目录,都会当成
  41. 目录处理)。
  42. COPY:
  43. 语法:
  44.  COPY <src>... <dest>
  45.  COPY ["<src>",... "<dest>"]
  46.  
  47. 解释:
  48. 单纯复制文件场景,Docker推荐使用COPY
  49. VOLUME:
  50. 语法:
  51.   VOLUME ["/data"]
  52.  
  53. 解释:
  54. VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点
  55. 通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。
  56. ENV:
  57. 语法:
  58.  ENV <key> <value>
  59.  ENV <key>=<value> ...
  60.  
  61. 解释:
  62. 设置环境变量,可以在RUN之前使用,然后RUN命令时调用,容器启动时这些环境变量都会被指定。
  63. WORKDIR:
  64. 语法:
  65. WORKDIR /path/to/workdir          (shell 模式)
  66. 解释:
  67. 切换目录,为后续的RUN、CMD、ENTRYPOINT 指令配置工作目录。 相当于cd
  68. 例:ssh镜像
  69. 创建Dockerfile专用目录
  70. mkdir /docker/images/ssh -p
  71. cd /docker/images/ssh
  72. 创建秘钥认证
  73. ssh-keygen -t rsa
  74. cat ~/.ssh/id_rsa.pub > authorized_keys
  75. 定制Dockerfile
  76. # 构建一个基于ubuntu的ssh定制镜像
  77. # 基础镜像
  78. FROM ubuntu
  79. # 镜像作者
  80. MAINTAINER President.Wang 000000@qq.com
  81. # 安装 ssh 服务
  82. RUN apt-get update && apt-get install -y openssh-server curl vim net-tools &&
  83. mkdir -p /var/run/sshd && mkdir -p /root/.ssh && sed -i "s/.*pam_loginuid.so/#&/"
  84. /etc/pam.d/sshd && apt-get autoclean && apt-get clean && apt-get autoremove
  85. # 复制配置文件到相应位置,并赋予脚本可执行权限
  86. ADD authorized_keys /root/.ssh/authorized_keys
  87. # 对外端口
  88. EXPOSE 22
  89. # 启动ssh
  90. CMD ["/usr/sbin/sshd","-D"]
  91. 构建镜像
  92. docker build -t ubuntu-ssh .
  93. 使用新镜像启动一个容器,查看效果
  94. docker run -d -p 10086:22 ubuntu-ssh
  95. 容器检查
  96. docker ps
  97. docker port c03d146b64d4
  98. ssh查看效果
  99. ssh 192.168.8.12 -p 1008

7,基于alpine制作镜像

  1. docker pull alpine
  2. docker run -it alpine sh
  3. apk -help(安装帮助)
  4. apk add vim (安装vim)
  5. mkdir -p /opt/dockerfile/web/{nginx-ubuntu,nginx-alpine}
  6. cd /pt/dockerfile/web/nginx-alpine
  7. rz nginx-1.22.0.tar.gz
  8. vim repositories(此mirrors.aliyun.com可能会报错,需在Dockerfile中注释掉)
  9. #http://dl-cdn.alpinelinux.org/alpine/v3.11/main
  10. #http://dl-cdn.alpinelinux.org/alpine/v3.11/community
  11. http://mirrors.aliyun.com/alpine/v3.11/main
  12. http://mirrors.aliyun.com/alpine/v3.11/community
  13. cat Dockerfile
  14. FROM alpine
  15. LABLE ()作者信息
  16. ADD repositories /etc/apk/repositories
  17. RUN apk update && apk add iotop gcc libgcc libc-dev libcurl pcre-dev zlib-dev libnfs make pcre2 zip unzip net-tools pstree wget libevent libevent-dev iproute2
  18. RUN addgroup -g 2022 -S nginx && adduser -s /sbin/nologin -S -D -u 2022 -G nginx
  19. RUN addgroup -g 2022 -S www && adduser -s /sbin/nologin -S -D -u 2022 -G www
  20. (以上可做基础镜像)
  21. ADD nginx-1.22.0.tar.gz /usr/local/src
  22. RUN /usr/local/src/nginx-1.22.0 && ./configure --prefix=/apps/nginx && make && make install
  23. RUN ln -sv /apps/nginx/sbin/nginx /usr/sbin
  24. (以上可作nginx基础镜像)
  25. ADD nginx.conf /apps/nginx/conf
  26. ADD html.tar.gz /apps/nginx/html
  27. RUN cd /apps/nginx/html && rm -rf html.tar.gz
  28. CMD ["nginx"] (启动命令)
  29. (业务镜像)
  30. cat build-command.sh
  31. docker build -t nginx-1.22.0:alpine-basev1 .
  32. 启动容器测试:
  33. docker run -it --rm -p 80:80 nginx-1.22.0:alpine-basev1
  34. 在浏览器访问

8,基于ubuntu制作镜像

  1. docker pull ubuntu:18.04(可指定版本号)
  2. mkdir -p /opt/dockerfile/web/{nginx-ubuntu,nginx-alpine}
  3. cd /pt/dockerfile/web/nginx-ubuntu
  4. rz nginx-1.22.0.tar.gz
  5. cat sources.list
  6. deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
  7. deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
  8. ..........(填写阿里云中ubuntu的镜像地址)
  9. cat Dockerfile
  10. FROM ubuntu:18.04
  11. LABLE ()作者信息
  12. ADD sources.list /etc/apt/sources.list (如果出现报错,可注释,使用官方源)
  13. RUN apt update && apt -y install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip make && apt clean
  14. RUN groupadd -g 2022 nginx && useradd -s /sbin/nologin -g nginx -u 2022 nginx
  15. RUN groupadd -g 2022 www && useradd -s /sbin/nologin -g www -u 2022 www
  16. (以上可做基础镜像)
  17. ADD nginx-1.22.0.tar.gz /usr/local/src
  18. RUN /usr/local/src/nginx-1.22.0 && ./configure --prefix=/apps/nginx && make && make install
  19. RUN ln -sv /apps/nginx/sbin/nginx /usr/sbin
  20. (以上可作nginx基础镜像)
  21. ADD nginx.conf /apps/nginx/conf
  22. ADD html.tar.gz /apps/nginx/html
  23. RUN cd /apps/nginx/html && rm -rf html.tar.gz
  24. CMD ["nginx"] (启动命令)
  25. (业务镜像)
  26. cat build-command.sh
  27. docker build -t nginx-1.22.0:ubuntu-basev1 .
  28. 启动容器测试:
  29. docker run -it --rm -p 80:80 nginx-1.22.0:ubuntu-basev1
  30. 在浏览器访问

9,镜像分层构建及实现tomcat

1,基于官方镜像,centos,ubuntu,debain,alpine等基础镜像构建JDK(java环境),然后在基于自定义的JDK镜像构建出业务需要的tomcat镜像

2,构建JDK镜像:

        先基于官方提供的基础镜像,制作出安装了常用命令的自定义基础镜像,然后在基础镜像的基础上,在制作JDk镜像,tomcat镜像等

1.1centos基础镜像

  1. #docker pull centos
  2. #mkdir
  3. /opt/dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,alpine,debain}} -pv
  4. #cd /opt/dockerfile/system/centos
  5. #cat Dockerfile
  6. #Centos Base image(注释)
  7. FROM centos:latest (可指定版本)
  8. MAINTAINER 作者信息
  9. RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-7.noarch.rpm
  10. RUN yum install -y epel-release
  11. RUN yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget bzip2 lsof tmux man-pages zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel
  12. RUN groupadd www -g 2023 && useradd www -u 2023 -g www && groupadd nginx -g 2023 && useradd nginx -u 2023 -g nginx #添加系统账户(通用用户可在此创建)
  13. #cat build-command.sh 通过脚本构建镜像
  14. #!/bin/bahs
  15. docker build -t centos-base:v1 .
  16. #bash biuld-command.sh执行构建镜像

        2.1JDK基础镜像

  1. cd /opt/dockerfile/web/jdk
  2. mkdir jdk-8u212 && cd jdk-8u212
  3. cat Dockerfile
  4. FROM centos-base:v1
  5. MAINTAINER (作者信息)
  6. #jdk.tar.gz安装包也要在此目录中,先在宿主机中做好/etc/profile的环境变量,将profile文件拷贝至此目录
  7. ADD jdk-8u212-linux-x64.tar.gz /usr/local/src
  8. RUN ln -sv /usr/local/src/jdk1.8.0_212 /usr/local/jdk
  9. ADD profile /etc/profile
  10. ENV JAVA_HOME /usr/local/jdk
  11. ENV JRE_HOME $JAVA_HOME/jre
  12. ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib
  13. ENV PATH $PATH:$JAVA_HOME/bin
  14. RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  15. cat build-command.sh
  16. #!/bin/bash
  17. docker build -t centos-jdk:8u212 .
  18. 构建完成后,进入容器执行java -version
  19. 此镜像继承www和nginx用户组

        3,tomcat基础镜像

  1. cd /opt/dockerfile/web/tomcat
  2. mkdir tomcat8.5.51-base && cd tomcat8.5.51-base
  3. rz apache-tomcat-8.5.51.tar.gz
  4. cat Dockerfile
  5. FROM centos-jdk:8u212
  6. LABEL (作者信息)
  7. ADD apache-tomcat-8.5.51.tar.gz /apps
  8. RUN ln -sv /apps/apache-tomcat-8.5.51 /apps/tomcat
  9. cat build-command.sh
  10. !#/bin/bash
  11. docker build -t centos-tomcat:8.5.51 .
  12. 制作完成之后进入容器测试:
  13. docker run -it --rm -p 8080:8080 centos-tomcat:8.5.51 bash
  14. #/apps/tomcat/bin/catalina.sh start
  15. #ss -tnl
  16. 之后在浏览器进行验证

        4,tomcat业务镜像

  1. cd /opt/dockerfile/web/tomcat
  2. mkdir tomcat-app1 && cd tomcat-app1
  3. rz server.xml(优化和更改完成之后的配置文件)
  4. rz index.html.tar.gz
  5. cat Dockerfile
  6. FROM centos-tomcat:8.5.51
  7. ADD server.xml /apps/tomcat/conf/server.xml
  8. ADD index.html.tar.gz /data/tomcat/webapps(此目录在server.xml中查看)
  9. ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh
  10. RUN chown -R www.www /apps
  11. EXPOSE 8080 8005 8009
  12. CMD ["/apps/tomcat/bin/run_tomcat.sh"]
  13. cat run_tomcat.sh
  14. #!/bin/bash
  15. su - www -c "/apps/tomcat/bin/catalina.sh start'
  16. tail -f /etc/hosts (添加守护进程,变化量较小的文件)
  17. chmod a+x run_tomcat.sh (不加权限启动镜像时会报错)
  18. cat build-command.sh
  19. !#/bin/bash
  20. docker build -t tomcat-app1:v1 .
  21. docker run -it --rm -p 8080:8080 tomcat-app1:v1
  22. 在容器例查看ss -tnl
  23. 在浏览器进行访问 /index.html

10,镜像分层构建及实现nginx

     1,构建基础镜像

  1. #docker pull centos
  2. #mkdir
  3. /opt/dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,alpine,debain}} -pv
  4. #cd /opt/dockerfile/system/centos
  5. #cat Dockerfile
  6. #Centos Base image(注释)
  7. FROM centos:latest (可指定版本)
  8. MAINTAINER 作者信息
  9. RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-7.noarch.rpm
  10. RUN yum install -y epel-release
  11. RUN yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget bzip2 lsof tmux man-pages zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel
  12. RUN groupadd www -g 2023 && useradd www -u 2023 -g www && groupadd nginx -g 2023 && useradd nginx -u 2023 -g nginx #添加系统账户(通用用户可在此创建)
  13. #cat build-command.sh 通过脚本构建镜像
  14. #!/bin/bahs
  15. docker build -t centos-base:v1 .
  16. #bash biuld-command.sh执行构建镜像

        2,nginx基础镜像

  1. cd /opt/dockerfile/web/nginx
  2. mkdir nginx-v1.22.0-base && cd nginx-v1.22.0-base
  3. rz nginx-1.22.0.tar.gz
  4. cat Dockerfile
  5. FROM centos-base:v1
  6. LABEL (作者信息)
  7. ADD nginx-1.22.0.tar.gz /usr/local/src
  8. RUN cd /usr/local/src/nginx-1.22.0/ && ./configure --prefix=/apps/nginx && make && make install && ln -sv /apps/nginx/sbin/nginx /usr/sbin && rm -rf /usr/local/src/nginx-1.22.0 && mkdir /data/nginx/html -p
  9. RUN groupadd nginx -g 2023 && useradd nginx -u 2023 -g nginx -s /sbin/nologin
  10. RUN chown nginx.nginx /data/nginx /apps/nginx
  11. EXPOSE 80 443
  12. CMD ["/apps/nginx/sbin/nginx","-g","daemon off;"]
  13. cat build-command.sh
  14. !#/bin/bash
  15. docker build -t nginx-v1.22.0-base .
  16. 制作完成之后进入容器测试:
  17. docker run -it --rm -p 80:80 nginx-v1.22.0-base bash
  18. #ss -tnl
  19. 之后在浏览器进行验证

3,nginx业务镜像

  1. cd /opt/dockerfile/web/nginx
  2. mkdir nginx-web1 nginx-web2&& cd nginx-web1
  3. rz nginx.conf(优化和更改完成之后的配置文件)
  4. rz index.html.tar.gz
  5. cat Dockerfile
  6. FROM nginx-v1.22.0-base
  7. ADD nginx.conf /apps/nginx/conf
  8. ADD index.html.tar.gz /data/nginx/html
  9. RUN chown -R nginx.nginx /apps/nginx
  10. EXPOSE 80 443
  11. CMD ["/apps/nginx/sbin/nginx","-g","daemon off;"]
  12. cat build-command.sh
  13. !#/bin/bash
  14. docker build -t nginx-web1:v1 .
  15. docker run -it --rm -p 80:80 nginx-web1:v1
  16. 在容器例查看ss -tnl
  17. 在浏览器进行访问

11,HAProxy镜像

  1. docker pull centos
  2. mkdir /opt/dockerfile/web/haproxy-centos -pv
  3. cd /opt/dockerfile//haproxy-centos
  4. rz haproxy-2.0.15.tar.gz
  5. cat Dockerfile
  6. FROM centos-base:v1 (此处使用centos基础镜像)
  7. LABEL 作者信息
  8. RUN yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget bzip2 lsof tmux man-pages zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel
  9. ADD haproxy-2.0.15.tar.gz /usr/local/src/
  10. RUN cd /usr/local/src/haproxy-2.0.15 && make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && cp haproxy /usr/sbin/ && mkdir /usr/local/haproxy/run
  11. ADD haproxy.cfg /etc/haproxy
  12. ADD run_haproxy.sh /usr/bin/run_haproxy.sh
  13. EXPOSE 80 9999
  14. CMD ["/usr/bin/run_haproxy.sh"]
  15. cat run_haproxy.sh
  16. !#/bin/bash
  17. /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
  18. tail -f /etc/hosts
  19. chmod +x run_haproxy.sh
  20. cat haproxy.cfg(配置文件)
  21. global
  22. nbproc 1
  23. pidfile /usr/local/haproxy/run/haproxy.pid
  24. log 127.0.0.1 local3 info
  25. defaults
  26. option http-keep-alive
  27. option forwardfor
  28. mode http
  29. timeout connect 300000ms
  30. timeout client 300000ms
  31. timeout server 300000ms
  32. listen stats
  33. mode http
  34. bind 0.0.0.0:9999
  35. stats enable
  36. log global
  37. stats uri /haproxy-status
  38. stats auth haadmin:admin
  39. listen web-port
  40. bind 0.0.0.0:80
  41. mode http
  42. log global
  43. balance roundrobin
  44. server web1 192.168.200.101:8080 check inter 3000 fall 3 rise 5
  45. server web1 192.168.200.102:8080 check inter 3000 fall 3 rise 5
  46. cat build-command.sh 通过脚本构建镜像
  47. #!/bin/bahs
  48. docker build -t haproxy:2.0.15-centos .
  49. bash biuld-command.sh执行构建镜像
  50. 测试:docker run -it -p 80:80 -p 9999:9999 haproxy:2.0.15-centos
  51. ss -tnl
  52. 在浏览器访问ip:9999

12,docker-compose

简介:Docker compose是一种docker容器的任务编排工具
官方文档: https://docs.docker.com/compose/

  1. 1,命令简介:
  2. docker compose的配置文件
  3.  docker-compose.yml 只能是这个名称
  4.  文件后缀是yml
  5.  文件内容遵循 ymal格式
  6. 安装:apt install docker-compose -y
  7. 查看编排工具版本:docker-compose version
  8. 查看命令帮助:docker-compose --help
  9. 注意:
  10. 所有命令尽量都在docker compose项目目录下面进行操作
  11. 项目目录:docker-compose.yml所在目录
  12. ]# docker-compose --help
  13. Define and run multi-container applications with Docker.
  14. Usage:
  15. docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  16. docker-compose -h|--help
  17. Options: 选项参数
  18. -f, --file FILE        指定配置文件,默认docker-compose.yml
  19. -p, --project-name NAME  指定compose项目的文件目录
  20. --verbose           显示更多信息
  21. --log-level LEVEL      设置日志的级别 (DEBUG, INFO, WARNING, ERROR,
  22. CRITICAL)
  23. --no-ansi           不要打印ANSI控制字符
  24. -v, --version         打印版本信息
  25. -H, --host HOST        连接其他主机的docker-compose主机
  26. --tls             使用TLS;需要 --tlsverify 参数
  27. --tlscacert CA_PATH      使用CA签名的信任证书
  28. --tlscert CLIENT_CERT_PATH 指定CA证书的路径
  29. --tlskey TLS_KEY_PATH    指定 私钥文件的路径
  30. --tlsverify          使用TLS并验证远程
  31. --skip-hostname-check    客户端连接的时候不要检查docker-compose的主机名
  32. --project-directory PATH  指定项目的工作路径,默认是docker-compose.yaml文件所在路
  33. --compatibility        如果设置,则Compose将尝试将v3文件中的密钥转换为其等效的非
  34. Swarm密钥
  35. --env-file PATH 设定专用环境变量路径
  36. 2,Commands: 操作子命令
  37. build       Build or rebuild services
  38. bundle       Generate a Docker bundle from the Compose file
  39. config       Validate and view the Compose file
  40. create       Create services
  41. down        Stop and remove containers, networks, images, and volumes
  42. events       Receive real time events from containers
  43. exec        Execute a command in a running container
  44. help        Get help on a command
  45. images       List images
  46. kill        Kill containers
  47. logs        View output from containers
  48. pause       Pause services
  49. port        Print the public port for a port binding
  50. ps         List containers
  51. pull        Pull service images
  52. push        Push service images
  53. restart      Restart services
  54. rm         Remove stopped containers
  55. run        Run a one-off command
  56. scale       Set number of containers for a service
  57. start       Start services
  58. stop        Stop services
  59. top        Display the running processes
  60. unpause      Unpause services
  61. up         Create and start containers
  62. version      Show the Docker-Compose version information
  63. 3,创建+启动服务:
  64. docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
  65. options:
  66.  -d 在后台运行服务容器
  67.  --quiet-pull 拉取时不打印进度信息
  68.  --no-build 即使缺失服务镜像,也不自动构建缺失的服务镜像
  69.  --build 启动容器前,先构建自有镜像
  70.  --force-recreate    强制重建所有服务容器,即使配置不变动的时候.
  71.  --always-recreate-deps 重新创建从属容器。 与--no-recreate不兼容。
  72.  --no-recreate      如果容器已经存在,请不要重新创建它们。 与--force-
  73. recreate和-V不兼容。
  74.  –-scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在compose中通过scale指定的
  75. 参数
  76. 示例:
  77. ]# docker-compose -f /data/compose/docker-compose.yml up -d
  78. Creating network "compose_default" with the default driver
  79. Creating nginx-web1 ... done
  80. Creating nginx-web2 ... done
  81. 4,关闭+移除服务:
  82. 关闭服务
  83. docker-compose down [options]
  84. Options:
  85.  --rmi type 移除镜像,all代表所有,local仅删除没有在"image"字段中出现的
  86. 镜像。
  87.  -v, --volumes 删除在Compose文件的“ volumes”部分中声明的命名卷和附加到容器
  88. 的匿名卷。
  89.  --remove-orphans 删除未在"docker-compose.yaml"文件中定义的service的容
  90.  -t, --timeout TIMEOUT 设置删除服务的超时时间,默认10s
  91. 注意:
  92. 如果不加任何参数,默认删除所有内容
  93. 5,创建一个服务
  94. docker-compose create [options] [SERVICE...]
  95. options
  96.  --force-recreate
  97.  --no-recreate
  98.  --no-build
  99.  --build
  100. 注意:
  101. 一般不推荐使用该命令,推荐使用 docker-compose up --no-start 来替代
  102. create 默认不会创建网络配置,所以,我们一般不会在第一次创建服务时候使用,一般结合rm场景来
  103. 使用。
  104. 6,查看服务:
  105. 查看正在运行的服务
  106. docker-compose ps [options] [SERVICE...]
  107. options
  108.  -q, --quiet     仅仅显示 IDs
  109.  --services      显示指定的 services
  110.  --filter KEY=VAL  显示匹配条件的services
  111.  -a, --all      显示所有容器(即使已删除的容器)
  112. 7,启动服务
  113. docker-compose start [SERVICE...]
  114. 注意:
  115. 如果不加任何参数,默认开启所有内容
  116. 8,查看服务运行的日志
  117. docker-compose logs [options] [SERVICE...]
  118. Options:
  119.  --no-color     关闭颜色输出
  120.  -f, --follow    实时显示所有日志
  121.  -t, --timestamps  显示时间戳
  122.  --tail="all"    显示日志的最优几条日志
  123. 命令示例
  124. ]# docker-compose logs web1
  125. Attaching to nginx-web1
  126. 9,查看服务依赖的镜像
  127. docke-compose images [options] [SERVICE...]
  128. Options:
  129.  -q, --quiet 仅仅显示 IDs
  130. 命令示例:
  131. ]# docker-compose images
  132. Container  Repository  Tag    Image Id   Size
  133. --------------------------------------------------------
  134. nginx-web1  nginx    latest  ab56bba91343  120 MB
  135. nginx-web2  nginx    latest  ab56bba91343  120 MB
  136. 10,查看服务映射的端口
  137. docker-compose port [options] SERVICE PRIVATE_PORT
  138. Options:
  139.  --protocol=proto 设定服务的协议,默认是tcp
  140.  --index=index   如果服务service存在多个容器,可以通过索引来指定显示谁的
  141. 命名示例
  142. ]# docker-compose port web1 80
  143. 0.0.0.0:9999
  144. 11,查看配置信息
  145. docker-compose config [options]
  146. Options:
  147.  --resolve-image-digests 打印配置信息的时候,显示镜像的hash信息
  148.  -q, --quiet       显示信息的时候,不输出
  149.  --services        显示配置文件中的service记录
  150.  --volumes        显示配置文件中的数据卷信息。
  151.  --hash="*"        显示配置文件中的service及其加密信息
  152. 命令示例
  153. ]# docker-compose config --hash="web1"
  154. web1 208dc2ec31d118e4acc045cb1d916e9ed7dfd0628f2f450a279458f344342cac
  155. ]# docker-compose config --service
  156. web2
  157. web1
  158. 12,关闭服务:
  159. docker-compose stop [options] [SERVICE...]
  160. Options:
  161. -t, --timeout TIMEOUT   Specify a shutdown timeout in seconds. (default:
  162. 10)
  163. 注意:
  164. 如果不加任何参数,默认关闭所有内容
  165. 13,删除任务:
  166. docker-compose rm [options] [SERVICE...]
  167. Options:
  168.  -f, --force  强制删除所有
  169.  -s, --stop  正常方式删除服务,先关闭容器再移除
  170.  -v     删除附加到容器的所有匿名卷
  171.  -a, --all   不推荐使用
  172. 注意:
  173. 这个docker-compose rm默认不会删除应用的网络和数据卷。
  174. 配置示例文件
  175. mkdir /data/compose
  176. cd /data/compose
  177. vim docker-compose.yml
  178. docker-compose.yml 文件内容
  179. version: '2'
  180. services:
  181. web1:
  182.  image: nginx
  183.  ports:
  184.   - "9999:80"
  185.  container_name: nginx-web1
  186. web2:
  187.  image: nginx
  188.  ports:
  189.   - "8888:80"
  190.  container_name: nginx-web2
  191. 启动配置:
  192. 后台启动
  193. docker-compose up -d
  194. 注意:
  195. 如果不加-d,那么界面就会卡在前台
  196. 查看运行效果
  197. docker-compose ps

13,haubor仓库 

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

Harbor (goharbor.io)https://goharbor.io/GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.An open source trusted cloud native registry project that stores, signs, and scans content. - GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.https://github.com/goharbor/harbor/

  1. 环境部署:
  2. 下载软件
  3. cd /data/softs
  4. wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-
  5. installer-v2.5.0.tgz
  6. 解压软件
  7. tar -zxvf harbor-offline-installer-v2.5.0.tgz -C /usr/local/
  8. cd /usr/local/harbor/
  9. 加载镜像
  10. docker load < harbor.v2.5.0.tar.gz
  11. docker images
  12. 备份配置
  13. cp harbor.yml.tmpl harbor.yml
  14. 修改配置
  15.  hostname: 10.0.0.12
  16.  http:
  17.   port: 80
  18.  #https: 注释ssl相关的部分
  19.   # port: 443
  20.   # certificate: /your/certificate/path
  21.   # private_key: /your/private/key/path
  22.  harbor_admin_password: 123456
  23.  data_volume: /data/harbor
  24. 配置harbor
  25. ./prepare
  26. 注意:
  27. 这一步会生成专用的 docker-compose.yml 文件
  28. 启动harbor
  29. ./install.sh
  30. 检查效果
  31. docker-compose ps
  32. 浏览器访问地址 浏览器访问 10.0.0.12:80 地址,用户名: admin, 密码:123456
  33. systemd启动
  34. # vim /lib/systemd/system/harbor.service
  35. [Unit]
  36. Description=Harbor
  37. After=docker.service systemd-networkd.service systemd-resolved.service
  38. Requires=docker.service
  39. Documentation=http://github.com/vmware/harbor
  40. [Service]
  41. Type=simple
  42. Restart=on-failure
  43. RestartSec=5
  44. #需要注意harbor的安装位置
  45. ExecStart=/usr/bin/docker-compose --file /usr/local/harbor/docker-compose.yml
  46. up
  47. ExecStop=/usr/bin/docker-compose --file /usr/local/harbor/docker-compose.yml
  48. down
  49. [Install]
  50. WantedBy=multi-user.target
  51. 加载服务配置文件
  52. systemctl daemon-reload
  53. systemctl start harbor
  54. systemctl status harbor
  55. systemctl enable harbor
  56. 仓库测试
  57. 修改docker的不安全仓库
  58. # cat /etc/docker/daemon.json
  59. {"registry-mirrors": ["http://74f21445.m.daocloud.io"], "insecure-registries":
  60. ["10.0.0.12:80"]}
  61. 重启docker
  62. systemctl restart docker
  63. 检查效果
  64. # docker info | grep -A1 Insecure
  65. nsecure Registries:
  66. 10.0.0.19
  67. 登录仓库
  68. root@python-auto:~# docker login 10.0.0.12:80
  69. Username: sswang
  70. Password:
  71. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  72. Configure a credential helper to remove this warning. See
  73. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  74. Login Succeeded
  75. 提交实践
  76. docker tag goharbor/nginx-photon:v2.3.2 10.0.0.12:80/sswang/nginx-photon:v2.3.2
  77. docker push 10.0.0.12:80/sswang/nginx-photon:v2.3.2
  78. 注意:
  79. 提交的代码仓库必须在对应的账号里面存在,否则无法提交
  80. 因为默认情况下docker仓库是基于https方式来进行登录的,而我们的没有定制https所以,这里的仓
  81. 库地址必须是 ip:port 方式
  82. 下载实践
  83. docker pull 10.0.0.12:80/sswang/nginx-photon:v2.3.2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/74268
推荐阅读
相关标签
  

闽ICP备14008679号