docker本地镜像配置文件|docker php 镜像怎么配置

⑴ 如何使用docker来制作我现在正在使用的系统的镜像

在使用Docker的过程中,我们除了从Docker Hub上下载已经做好的镜像,很多时候需要我们自己制作镜像。下面想在这个文章中说明一下镜像的制作方法。制作镜像的方式主要有两种:通过docker commit 制作镜像通过docker build 制作镜像这两种方式都是通过改进已有的镜像来达到自己的目的。制作基础镜像,会在另外一篇文章“从零开始制作基础镜像”中介绍。docker commitdocker commit 是往版本控制系统里提交一次变更。使用这种方式制作镜像,本质上是运行一个基础镜像,然后在基础镜像上进行软件安装和修改。最后再将改动提交到版本系统中。选择基础镜像基础镜像的选择要结合自己的需求。可以选择已有的应用镜像来改造,也可以选择Ubuntu,Debian,OpenSuse这类基础系统镜像我们以ubuntu为例子来说明步骤1:运行ubuntu 镜像docker run -i -t ubuntu /bin/bash步骤2:安装软件并修改软件配置, 比如:安装apache2apt-get -yqq updateapt-get -y install apache2安装完成后,对apache2进行配置和修改步骤3:退出docker并保存镜像使用“exit”命令退出容器运行docker comit 命令, 进行保存docker commit 61412230ae46 own-apache2docker commit 命令参数说明命令格式docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]OPTIONS:-a, –author= 提交的镜像作者-c, –change=[] Apply Dockerfile instruction to the created image, 没用过-m, –message= 提交时的说明文字-p, –pause=true 在commit时,将container 暂停CONTAINER:可以使用container 的名字或者IDREPOSITORY指定镜像仓库,上述例子中,指定的是本地存储可以指定远程镜像仓库,如docker hub。也可自建仓库来存放imageTAG:镜像TAGdocker build使用docker build创建镜像需要编写Dockerfile.步骤:编写自己的Dcokerfile运行docker build 命令打包镜像仍然以apache打包为例子。以下是Dockerfile的例子FROM ubuntu:latestMAINTAINER sky#Add 163 mirror for aptADD sources.list /etc/apt/sources.listADD .bashrc /root/.bashrcENV DEBIAN_FRONTEND noninteractive# PackagesRUN rm -rf /var/lib/apt/listsRUN apt-get update -q –fix-missingRUN apt-get -y upgrade#ubuntu wwwRUN apt-get install -y apache2 curl libapache2-mod-php5 php5-curl php5-gd php5-mysql rsync mysql-client -qqRUN apt-get autocleanRUN rm -rf /var/lib/apt/lists/*# Setup environmnt for apache's init scriptENV APACHE_CONFDIR /etc/apache2ENV APACHE_ENVVARS $APACHE_CONFDIR/envvarsENV APACHE_RUN_USER www-dataENV APACHE_RUN_GROUP www-dataENV APACHE_RUN_DIR /var/run/apache2ENV APACHE_PID_FILE $APACHE_RUN_DIR/apache2.pidENV APACHE_LOCK_DIR /var/lock/apache2ENV APACHE_LOG_DIR /var/log/apache2ENV LANG CRUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIRRUN find "$APACHE_CONFDIR" -type f -exec sed -ri ' \ s!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g; \ s!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g; \' '{}' ';'EXPOSE 80CMD ["apache2", "-DFOREGROUND"]编辑完成后,在与Dockerfile同一目录下运行docker build 命令docker build -t apache-img .如果没有命令出错,docker build会持续运行直到镜像创建完成而创建的过程本质上是运行一个镜像,然后在镜像中按序执行在Dockerfile中的命令,直到执行结束。如果中间有命令执行失败,镜像创建会停止。这时就需要看log,并修改Dockerfile,然后再次执行docker build注:两种镜像创建方式的对比:docker commitdocker build难度相对容易,适合新手和对linux不熟悉的用户相对难,要求有一定的linux和脚本基础知识文档化文档化在通过其他文件来实现Dockerfile本身就是比较好的文档,可读和可理解性比较强。也可配合其他文档带来详细说明升级,维护后续升级和维护麻烦,需要再次运行镜像并对内部软件进行升级或者安装新软件增加特性后续升级和维护会相对简单,可以直接在dockerfile中更改并增加新特性具体选择哪种方式来制作镜像需要结合实际情况来选择Dockerfile 关键字详解FROMFROM用来指定基础包。在上面的例子中,基础包用的是ubuntu。MAINTAINER镜像作者信息,或者维护人员信息ADD将文件拷贝到Container内文件系统对应的路径格式 ADD <src file> <dst file>所有拷贝到Container中的文件和文件夹权限为0755,uid和gid为0如果需要修改owner用户或者权限,需要使用RUN进行修改ADD文件,文件路径要在docker build<PATH>中指定的<PATH>下RUN创建镜像时执行ENV用来设置环境变量EXPOSEContainer内部服务开启的端口主机上如果要使用,还需要在启动Container时,做host-container的商品映射使用EXPOSE后,一些自动化布署工具可以直接读取这个信息,自动进行端口映射EXPOSE可以有多条,指定多个端口WORKDIR切换工作目录,可进行多次切换(相当于cd命令)切换目录对RUN,CMD,ENTRYPOINT有效USER执行container的用户,如未指定,则默认使用root用户ENTRYPOINTContainer启动时执行的命令,一个Dockerfile中只能有一条ENTRYPOINTENTRYPOINT没有CMD的可替换特性CMDContainer 启动时执行的命令,一个Dockerfile 中只能有一条CMD命令,如果有多条则只执行最后一条CMD如果有多条命令希望在启动后执行,可以考虑使用shell 脚本与ENTRYPOINT的区别CMD的主要用途是为可执行的container提供默认命令CMD在运行时是可替换的,比如在ubuntu中,CMD指定的是/bin/bash。默认情况下运行ubuntu,container中的/bin/bash会被执行如果使用docker run指定运行命令,那CMD会被替换掉如:docker run ubuntu /bin/echo "this is a echo". 这时,container 启动后会执行echo 而不是/bin/bash了ENTRYPOINT是不会替换的,如果在ubuntu镜像中加入ENTRYPOINT,那ENTRYPOINT在启动后会先被执行CMD可以为ENTRYPOINT来提供参数例子:FROM ubuntu:14.10 ENTRYPOINT ["top", "-b"] CMD ["-c"]VOLUME语法:VOLUME [PATH]VOLUME指令用来设置一个挂载点,可以用来让其他容器挂载以实现数据共享或对容器数据的备份、恢复或迁移可以将本地文件夹或者其他Container的文件夹挂载到Container中

⑵ 如何在docker中导入ubuntu镜像文件

安装Docker借助apt-get命令,安装Docker是件轻而易举的事。$ sudo apt-get install docker.io 为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。$ sudo usermod -a -G docker $USER 退出,然后重新登录,以激活群组成员的变化。下一步,编辑Docker配置文件,以便更新Docker二进制代码的位置。$ sudo vi /etc/default/docker.io DOCKER="/usr/bin/docker.io" 重启Docker服务。$ sudo service docker.io restart 管理Docker容器如果你想启动Ubuntu操作系统的一个新的Docker容器,首先需要获取Ubuntu Docker映像文件。下面这个命令会通过网络下载Docker映像文件。$ docker pull ubuntu 你可以以一种交互模式来开启Ubuntu Docker,如下所示。最后一个参数“/bin/bash”是一旦启动就将在容器里面执行的命令,这里是一个简单的bash外壳命令。$ docker run -i -t ubuntu /bin/bash 上述命令会立即启动一个Ubuntu容器(这正是容器的魅力所在!),并为你提供容器里面的外壳提示符。这时候,你应该能够访问沙盒环境里面的标准的Ubuntu操作系统了。想退出Docker容器,在容器里面的提示符处键入“exit”。你可以启动不同形式的容器。比如,想启动Fedora容器,请执行下面这个命令:$ docker.io run -i -t fedora /bin/bash 如果本地没有Fedora Docker映像文件,该命令就会首先自动下载映像文件,然后启动Docker。如果你想启动采用某个发行版版本的容器,也可以这么做。比如说,想启动Ubuntu 13.04 Docker,请执行下面这个命令:$ docker.io run -i -t ubuntu:13.04 /bin/bash 容器网络Docker使用Linux网桥将容器彼此互联起来,并将它们连接到外部网络。安装了Docker后,你应该会看到默认情况下自动组建的docker0 Linux网桥。你创建的每个容器都将连接到docker0网桥接口。自定义Linux网桥如果你想,也可以使用自定义Linux网桥将诸容器互联起来。为此,你可以建立一个自定义网桥,并对它进行配置,如下所示。你可以为该网桥分配一个单独的子网,并且从子网为Docker分配IP地址。我会使用10.0.0.0/24作为Docker子网。$ sudo apt-get install bridge-utils $ sudo brctl addbr br0 $ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0

⑶ 如何给Docker配置官方国内加速镜像

配置镜像加速器国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了加速器服务,例如:阿里云加速器DaoCloud 加速器灵雀云加速器注册用户并且申请加速器,会获得如https://jxus37ad.mirror.aliyuncs.com这样的地址。我们需要将其配置到Docker 引擎。下面以CentOS7为例,说明如何配置镜像加速器设置Docker开机启动systemctl enable docker修改docker.service配置文件vim /etc/systemd/system/multi-user.target.wants/docker.service找到 ExecStart= 这一行,在这行最后添加加速器地址 –registry-mirror=<加速器地址> ,如:ExecStart=/usr/bin/dockerd–registry-mirror=https://jxus37ad.mirror.aliyuncs.com重新加载配置sudo systemctl daemon-reload重新启动Dockersudo systemctl restart docker验证是否生效执行如下命令:ps -ef | grep dockerd如果从结果中看到了配置的 –registry-mirror 参数说明配置成功。启动Docker,获取镜像执行如下命令启动Dockersystemctl start dockerDocker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是Docker Hub 公共注册服务器中的仓库)。例如从镜像仓库下载ubuntu16.04镜像docker pull ubuntu:16.04运行容器有了镜像后,我们就可以以这个镜像为基础启动一个容器来运行。以上面的ubuntu:16.04 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。docker run -it ubuntu:16.04 /bin/bash查看系统版本cat /etc/os-release

⑷ docker中,jdk用镜像 怎么配置环境变量

docker中,jdk用镜像配置环境变量的方法如下:一、安装 JDK1、首先,解压 JDK 程序包:tar -zxf /mnt/software/jdk-7u67-linux-x64.tar.gz -C .2、重命名 JDK 目录:mv jdk1.7.0_67/ jdk/二、设置环境变量首先,编辑.bashrc文件vi ~/.bashrc然后,在该文件末尾添加如下配置:export JAVA_HOME=/opt/jdkexport PATH=$PATH:$JAVA_HOME最后,需要使用source命令,让环境变量生效:source ~/.bashrc

⑸ windows7版本下的docker 镜像文件存放位置在本地哪个文件夹

方案1, 使用参数-g 来修改 Docker 的镜像存储文件夹.修改方法如下:在 Ubuntu/Debian 系统下:编辑 /etc/default/docker 文件, 添加-g 参数的设置, 如下:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"在 Fedora/Centos 系统下:编辑 /etc/sysconfig/docker 文件, 添加-g 参数的设置, 如下:other_args="-g /mnt"重启 Docker 服务, 问题就解决了.方案2 使用链接1) 停止 Docker: service docker stop.2) 做个备份 tar -zcC /var/lib/docker > /mnt/var_lib_docker-backup-$(date + %s).tar.gz3) 迁移/var/lib/docker目录到met 目录下: mv /var/lib/docker /mnt/docker4) 建个 symlink: ln -s /mnt/docker /var/lib/docker5) 确认文件夹类型为symlink 类型 ls /var/lib/docker6) 启动 docker service.

⑹ docker php 镜像怎么配置

1.选择来 Ubuntu 官方的 14.04 版本为我们依赖的系自统镜像。dockerfileFROM ubuntu:trusty 2.因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。如果使用 DaoCloud 的镜像源,则指向:FROM cloud.io/ubuntu:trusty3.设置镜像的维护者,相当于镜像的作者或发行方。dockerfileMAINTAINER Captain Dao <[email protected]> 4.用 RUN 命令调用 apt-get 包管理器安装 PHP 环境所依赖的程序包。安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率。

⑺ docker 怎么配置国内镜像

查看下当前系统及docker安装情况[email protected]:~$ sudo docker info使用配置文件 /etc/docker/daemon.json(没有时新建该文件)如果没有 /etc/docker文件夹 请执行[email protected]:~$ sudo mkdir -p /etc/docker写入镜像加速地址(镜像加速地址可在 阿里云容器Hub服务控制台 的加速器中 查看)sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["你自己的镜像加速地址"]}EOF3重启daemon及docker[email protected]:~$ sudo systemctl daemon-reload[email protected]:~$ sudo systemctl restart docker4测试之后就可正常拉去上传镜像了。例如拉去个简单的busybox镜像busybox是一个最小的Linux系统,它提供了该系统的主要功能,不包含一些与GNU相关的功能和选项。[email protected]:/etc/docker$ sudo docker pull busybox

⑻ docker基础镜像是什么意思

镜像是 Docker 运行容器的前提,Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。对于docker镜像,官方的定义如下: An image is a read-only template with instructions for creating a Docker container. Often, an image is based on another image, with some additional customization. For example, you may build an image which is based on the ubuntu image, but installs the Apache web server and your application, as well as the configuration details needed to make your application run.‘ 映像是一个只读模板,带有创建Docker容器的指令。通常,一个映像是基于另一个映像的,还需要进行一些额外的定制。例如,您可以构建一个基于ubuntu映像的映像,但是安装Apache web服务器和您的应用程序,以及使您的应用程序运行所需的配置细节。

⑼ 如何操作docker 容器的配置文件

步骤1:为我们的容器创建第一个镜像# 以 centos 镜像作为基础镜像,我们启动自己的容器并在其中执行/bin/bash命令# 注:-t -i 参数用于创建一个虚拟的命令行。sudo docker run -t -i centos /bin/bash 现在我们已经成功的运行了自己的第一个容器,并且进入到容器的命令行界面中。在容器中,我们执行下面的命令:yum -y update # 更新软件包yum install which # 安装which命令yum install git # 安装Git安装完成后,按 Ctrl + d 来退出容器的命令行。# 执行sudo docker ps -a,可以看到被我们终止的容器CONTAINER ID IMAGE COMMAND CREATED……da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..把我们所做的改变提交到一个新的容器:# 这里我们创建一个自己的基础容器,容器中安装好了文章中所需的常用工具。读者的容器 id 可能与文章中的有所不同,以上一步 docker ps -a 的结果为准。sudo docker commit da90 custom/base容器成功提交后,执行 sudo docker images ,我们会看到刚才提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,再来创建一个新的容器。REPOSITORY TAG IMAGE ID CREATED custom/base latest 05b6cecd370b 2 minutes ago centos 6.4 539c0211cd76 10 months ago centos latest 539c0211cd76 10 months ago…步骤2:创建新的容器,并安装 apache# 以 custom/base 容器为基础,运行一个新的容器。sudo docker run -t -i custom/base /bin/bash# 安装 httpdyum install httpd步骤3:再次提交新的容器按 Ctrl + d 来退出容器的命令行,然后执行命令:# 这个命令会把步骤2中我们安装 httpd 带来的改变提交到新的名为 custom/httpd 的容器镜像中。你的容器 id 可能会和文章中有所不同,以 sudo docker ps -a 命令的结果为准。sudo docker commit aa6e2fc0b94c custom/httpd你应该已经发现了,我们创建了一个带有 http 服务器并可以复用的容器镜像。你可以根据这种思想,为自己所需的每个组件都创建一个容器,然后把这些容器复用于开发环境或者生产环境。步骤7:运行 http 服务器# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.# -v 参数把主机共享给虚拟机的一个卷挂载到容器中# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile # -p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080->虚拟机80->容器80sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash# 启动 Apacheapachectl -k start


赞 (0)