手动制作Docker镜像
手动制作 Docker 镜像
前言
a. 本文主要为 Docker的视频教程 笔记。
b. 环境为 CentOS 7.0 云服务器(用来用去感觉 Windows 的 Docker 出各种问题,比如使用 --privileged 和 /usr/sbin/init 会直接出错暂停,因此还是使用 Linxu 操作系统的云服务器了,不过之前的内容在 Linux 下也都适用)
c. 上一篇:Docker命令注意点
d. 过了N久以后突然想到,在 Docker 容器里面直接安装数据库的情况似乎并不多见,而是更倾向于直接使用数据库的容器。因为整个服务平台需要的是一套数据库而不是每个容器搞一套。本文仅作为使用容器技术的演示,作为生产环境的部署方案是极不合适的。本例中安装 mysql 就当是自己的一些尝试吧(还有踩坑,擦)
1. 下载运行操作系统的容器
docker pull centos:7 # 可以查看 Docker Hub 官方以取得名称
docker run -it --name centos7 centos:7
2. 换源并安装对应软件
此处换为阿里云的源(同时更换 yum 和 epel)
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
此处安装 mysql 和 httpd
安装mysql
安装httpd
yum install httpd
安装网络工具(netstat 等)
yum install net-tools
使用命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 修改时区为东八区
3. 将容器保存为镜像
docker commit <CONTAINER_ID> <CUSTOM_CONTAINER_NAME>
最后运行该镜像(启动对应服务的命令,并阻塞),如:
docker run -d -p 81:80 <名称> nginx -g 'daemon off;'
apache 为 httpd -D FOREGROUND
如果一次需要执行多个命令,可以写成一个脚本并执行脚本,如:
#!/bin/bash
mysqld --user root & # 此命令不阻塞
httpd -D FOREGROUND
额外内容 - 原先的启动 CentOS7 的 Docker 镜像方式(坑)
我原先的启动命令为:
docker run -it --privileged --name centos7 centos:7 /usr/sbin/init
因为启动时如果不加 --privileged 和 /usr/sbin/init,则无法使用 systemctl 命令来启动和停止服务。而使用此方式后,会调用 /usr/sbin/init 来加载镜像,当前窗口会直接无法操作,如下:

而保存该容器为镜像后,如果启动时不加这两个参数,则会报错:

然而比较奇怪的是,以此种方式启动的容器,安装 mysql 时不需要执行其它操作,yum install mysql 安装后就可以正常使用;且修改密码时有密码强度的验证。猜测是 mysql 安装时需要调用系统的命令执行一些服务,而不加 --privileged 和 /usr/sbin/init 无法正常使用系统服务。
因此正确的方式应为:安装软件后,使用软件本身的程序启动而不是使用 systemctl 启动(如文章开头所述)
参考:
apache 前台启动命令:
https://blog.csdn.net/weixin_44419597/article/details/104425504
CentOS换源
https://www.cnblogs.com/Chan94/p/10658756.html
后记
原本本篇的内容里还有如何在容器中安装 mysql 的内容,但感觉内容太长,耦合性太高(doge),而且这篇主要的内容是怎么把容器提交为镜像,还是拆到了另一篇博客中。这也算是有点启发吧:调用栈再长,还是要回到主函数上!
手动制作Docker镜像的更多相关文章
- Dockerfile 自动制作 Docker 镜像(一)—— 基本命令
Dockerfile 自动制作 Docker 镜像(一)-- 基本命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:手动制作Do ...
- 详解SpringBoot(2.3)应用制作Docker镜像(官方方案)
关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...
- SpringBoot系列: 制作Docker镜像的全过程
本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外, 在本文中, 演示了Windows+Maven+Docker To ...
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- 制作Docker镜像的两种方式
此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...
- 体验SpringBoot(2.3)应用制作Docker镜像(官方方案)
关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...
- [开源]制作docker镜像不依赖linux和Docker环境
背景 最近群友们经常反馈docker镜像制作起来有点麻烦,我开源的antdeploy工具虽然可以制作镜像但是必须有一个提前:有一台安装好docker的linux服务器.因为大家开发环境基本上都是win ...
- Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化
Dockerfile 自动制作 Docker 镜像(三)-- 镜像的分层与 Dockerfile 的优化 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云 ...
- Dockerfile自动制作Docker镜像(二)—— 其它常用命令
Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...
随机推荐
- 【笔记】F1 score
F1 score 关于精准率和召回率 精准率和召回率可以很好的评价对于数据极度偏斜的二分类问题的算法,有个问题,毕竟是两个指标,有的时候这两个指标也会产生差异,对于不同的算法,精准率可能高一些,召回率 ...
- 腾讯云TDSQL MySQL版 - 开发指南 二级分区
TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL 分区语法类似. 二级分区语法 一级 Hash,二级 List 分区示例如下: MySQL ...
- VLAN-3 Hybrid接口应用
一.实验拓扑图 二.实验编址 三.实验步骤 1.给对应的PC设置对应的IP和掩码还有接口,以及根据需要划分不同的vlan区域,再用文本标记出不同部门. 2.启动设备(全选) 3.首先用ping命令检查 ...
- 计算文件的MD5值和sha256值
1.计算文件的MD5值. 1)linux系统计算 MD5值:md5sum+文件名 sha256值:sha256su+文件名 2)windows系统计算 MD5值:利用Notepad++工具计算 sha ...
- Liunx搭建Rlogin服务
实验环境为 centos7 第一步:安装服务:yum -y install rsh rsh-server xinetd 第二步:启动服务: systemctl restart rsh.sockets ...
- noip30
T1 一眼看,觉得是个状压,然而又觉得不太行,去打暴力了,然而暴力都打挂的我biss. 正解: 还是暴力,考虑 \(meet \; in \; the \; middle\) 显然对于每个数,只有三种 ...
- Android系统编程入门系列之广播接收者BroadcastReceiver实现进程间通信
在前边几篇关于Android系统两个重要组件的介绍中,界面Activity负责应用程序与用户的交互,服务Service负责应用程序内部线程间的交互或两个应用程序进程之间的数据交互.看上去这两大组件就能 ...
- 菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序
step1:下载安装 Dev-C++ 已经安装了 Dev-C++ 或系统中的可以跳过这步.去官网下载 Dev-C++.我昨天下载,发现有点慢,所以我把安装文件放到百度网盘了,供大家下载,下载链接为:h ...
- 用宏实现HEX到ASCII ,ASCII 到HEX
#define HEX2ASCII(value, data) do{ \ value = (value > 0x09)?(value+0x7):value; \ ...
- 编译ffmpeg(第一次),实现JPG转MP4
ffpmeg网址:http://ffmpeg.org/ ffmpegapi文档:http://ffmpeg.org/doxygen/trunk/index.html 因为这是JPG转MP4,所以不涉及 ...