搭乘 Vmware 并移动到 Docker,如何正确设置 Docker 文件或 cointainer?
Get ride of Vmware and move to Docker, how to properly setup the Dockerfile or the cointainer?
我是一名 PHP 开发人员,因此大部分时间用于测试我正在处理的任何应用程序是:
- 创建Vmware VM并安装完整OS:大部分时间我喜欢用CentOS
- 在 VM 上设置所有内容意味着:Apache 和模块,PHP 和模块以及 MySQL 或 MariaDB
每当我从头开始一个新的 VM 时,我都会执行几个步骤 运行:
# Install EPEL and Remi Repos
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
# Install Apache, PHP and its dependencies
yum -y install php php-common php-cli php-fpm php-gd php-intl php-mbstring php-mcrypt php-opcache php-pdo php-pear php-pecl-apcu php-imagick php-pecl-xdebug php-pgsql php-xml php-mysqlnd php-pecl-zip php-process php-soap
# Start Apache on 235 run level
chkconfig --levels 235 httpd on
# Setup MariaDB repos
nano /etc/yum.repos.d/MariaDB.repo
# Write this inside the MariaDB.repo file
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
# Install MariaDB
yum -y install MariaDB MariaDB-server
# Start service
service mysql start
# Start MariaDB on run level 235
chkconfig --levels 235 mysql on
# Setup MariaDB (this is interactive)
/usr/bin/mysql_secure_installation
# A few more steps
这是一项烦人的任务,我需要一直做(当我搞砸了 VM 尝试新事物并在这里和那里进行更改时。所以这里是 Docker,我认为可以保存的地方。读了一些之后,我了解了 Docker 的基础知识,并且我已经通过 运行ning docker run -it centos
提取了一个 CentOS 图像,但这只是一个 bash shell 和基本的 CentOS 图像,所以我的任务是安装和设置所有内容。
以下是我对 Docker 以及如何处理这种重复性和常见任务的疑惑:
我是否应该创建一个包含以下内容的 Docker 文件(这是我的第一个 Docker 文件,所以顺序可能不正确或者我完全弄错了)和将所有重复性任务放入 run-setup.sh
文件?
FROM centos:latest
MAINTAINER MyName <MyEmail>
RUN yum -y update && yum clean all
ADD run-setup.sh /run-setup.sh
RUN chmod -v +x /run-setup.sh
CMD ["/run-setup.sh"]
EXPOSE 80
我是否应该像以前在 VM 上那样手动 运行 重复性任务?
- 命令
/usr/bin/mysql_secure_installation
是完全交互的,因为我需要回答几个问题并设置密码,如何处理这个或任何其他交互?
- 有更好的主意吗?
我将开始回答您的问题:
是的,您可以从 Dockerfile
开始。但是,我建议您直接在文件中使用命令,以便将来更容易维护。例如可以是 Dockerfile of apache from github.
重复任务,没有。您可以通过 pushing your images to a public registry like docker hub or you could host a private one 保存容器的图像,它可以是 docker 容器本身。
Inter activeness 应该通过命令行选项,bash read 或尽可能传递文件等以某种方式解决。我认为没有直接的答案。
更好的想法,通常的模式是将 Dockerfile 托管在 github 或 bitbucket public 存储库中,然后配置 automated builds against docker hub。他们都是免费的:)
您还可以从 docker hub 中获得许多实际工作示例。开始搜索图片,选择最 popular/offical 的一张,那么你一定有指向 Dockerfile
.
的链接
告诉我进展如何。
我是一名 PHP 开发人员,因此大部分时间用于测试我正在处理的任何应用程序是:
- 创建Vmware VM并安装完整OS:大部分时间我喜欢用CentOS
- 在 VM 上设置所有内容意味着:Apache 和模块,PHP 和模块以及 MySQL 或 MariaDB
每当我从头开始一个新的 VM 时,我都会执行几个步骤 运行:
# Install EPEL and Remi Repos
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
# Install Apache, PHP and its dependencies
yum -y install php php-common php-cli php-fpm php-gd php-intl php-mbstring php-mcrypt php-opcache php-pdo php-pear php-pecl-apcu php-imagick php-pecl-xdebug php-pgsql php-xml php-mysqlnd php-pecl-zip php-process php-soap
# Start Apache on 235 run level
chkconfig --levels 235 httpd on
# Setup MariaDB repos
nano /etc/yum.repos.d/MariaDB.repo
# Write this inside the MariaDB.repo file
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
# Install MariaDB
yum -y install MariaDB MariaDB-server
# Start service
service mysql start
# Start MariaDB on run level 235
chkconfig --levels 235 mysql on
# Setup MariaDB (this is interactive)
/usr/bin/mysql_secure_installation
# A few more steps
这是一项烦人的任务,我需要一直做(当我搞砸了 VM 尝试新事物并在这里和那里进行更改时。所以这里是 Docker,我认为可以保存的地方。读了一些之后,我了解了 Docker 的基础知识,并且我已经通过 运行ning docker run -it centos
提取了一个 CentOS 图像,但这只是一个 bash shell 和基本的 CentOS 图像,所以我的任务是安装和设置所有内容。
以下是我对 Docker 以及如何处理这种重复性和常见任务的疑惑:
我是否应该创建一个包含以下内容的 Docker 文件(这是我的第一个 Docker 文件,所以顺序可能不正确或者我完全弄错了)和将所有重复性任务放入
run-setup.sh
文件?FROM centos:latest MAINTAINER MyName <MyEmail> RUN yum -y update && yum clean all ADD run-setup.sh /run-setup.sh RUN chmod -v +x /run-setup.sh CMD ["/run-setup.sh"] EXPOSE 80
我是否应该像以前在 VM 上那样手动 运行 重复性任务?
- 命令
/usr/bin/mysql_secure_installation
是完全交互的,因为我需要回答几个问题并设置密码,如何处理这个或任何其他交互? - 有更好的主意吗?
我将开始回答您的问题:
是的,您可以从
Dockerfile
开始。但是,我建议您直接在文件中使用命令,以便将来更容易维护。例如可以是 Dockerfile of apache from github.重复任务,没有。您可以通过 pushing your images to a public registry like docker hub or you could host a private one 保存容器的图像,它可以是 docker 容器本身。
Inter activeness 应该通过命令行选项,bash read 或尽可能传递文件等以某种方式解决。我认为没有直接的答案。
更好的想法,通常的模式是将 Dockerfile 托管在 github 或 bitbucket public 存储库中,然后配置 automated builds against docker hub。他们都是免费的:)
您还可以从 docker hub 中获得许多实际工作示例。开始搜索图片,选择最 popular/offical 的一张,那么你一定有指向 Dockerfile
.
告诉我进展如何。