Docker的镜像制作

Dockerfile常用指令介绍 指令 描述 FROM 构建的新镜像是基于哪个镜像。例如:FROM centos:6 MAINTAINER 镜像维护者姓名或邮箱地址。例如:MAINTAINER Mr.chen RUN 构建镜像时运行的Shell命令。例如:RUN 或者RUN yum install httpd CMD 运行容器时执行的Shell命令(可以被运行时传递的参数覆盖)。例如:CMD 或者CMD 或者CMD /usr/sbin/sshd -D EXPOSE 声明容器运行的服务端口。例如:EXPOSE 80 443 ENV 设置容器内环境变量。例如:ENV MYSQL_ROOT_PASSWORD 123456 ADD 拷贝文件或目录到镜像(可以自动解压缩或者下载)例如:ADD 或者ADD https://xxx.com/html.tar.gz /var/www/html或者:ADD html.tar.gz /var/www/html COPY 拷贝文件或目录到镜像(不能自动解压缩)。例如:COPY ./start.sh /start.sh ENTRYPOINT 运行容器时执行的Shell命令(不能被运行时传递的参数覆盖)。例如:ENTRYPOINT 或者ENTRYPOINT /bin/bash -c "/start.sh" VOLUME 指定容器挂载点到宿主机自动生成的目录或其他容器,例如:VOLUME USER 为RUN,CMD和ENTRYPOINT执行命令指定运行用户,例如:USER Mr_chen WORKDIR 为RUN,CMD,ENTRYPOINT,COPY和ADD设置工作目录(指定进入容器中默认被切换的目录)。例如:WORKDIR /data HEALTHCHECK 健康检查。例如:HEALTHCHECK --interval=5m --timeout=3s --retries=3 CMD curl -f http://localhost/ || exit 1 ARG 在构建镜像时指定一些参数。例如:ARG user 利用Dockerfile编写简单的nginxWeb镜像 #首先开启ipv4转发 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p net.ipv4.ip_forward = 1 #创建nginx的镜像目录 mkdir -p dockerfile/lib/centos/nginx cd dockerfile/lib/centos/nginx #准备Dockerfile文件 vim Dockerfile FROM centos:7 #构建的新镜像是基于哪个镜像(构建的nginx是基于centos7构建的,依赖centos7的系统支持,如果没有镜像自动下载) MAINTAINER wk #镜像制作人 RUN yum install -y gcc...
阅读全文
Linux

Ubuntu 16.04中挂载其它Linux共享的samba

需求来源:我想通过远程挂载文件的方式开发Django1、服务端配置服务器使用的系统是CentOS 6 x64,在/etc/samba/smb.conf中加上以下一段:    comment = Public Stuff    path = /data/dj_project/mysites    public = yes    writable = yes    valid users = root    browseable = yes    create mask = 0664    directory mask = 0775为了简单点,我们直接使用root用户加入samba,并将设置root的密码:smbpasswd -a root然后输入两次密码,假设我们输入的密码为:1234562、客户端配置2.1 安装cifs支持客户端使用的是Ubuntu 16.04,需要安装一些必要的支持软件:sudo apt-get install cifs-utils2.2 挂载samba目录接下来在Ubuntu中进行挂载:sudo mount -t cifs //192.168.1.1/public/ /mountpoint -o user=root,passwd=1234562.3 排错结果发现挂载报错:mount error(112): Host is down Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)此时,莫慌,我们可以通过查看/var/log/syslog来确定是什么原因:Sep  8 18:00:28 chin kernel: < 3091.859721> No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.Sep  8 18:00:28 chin kernel: < 3091.866282> CIFS VFS: cifs_mount failed...
阅读全文
Linux

Linux下不能同步时间问题

问题:当我们使用/usr/sbin/ntpdate  cn.pool.ntp.org进行时间同步时,可能会收到如下错误: Error resolving cn.pool.ntp.org: Servname not supported for ai_socktype (-8) 3 Jan 11:12:17 ntpdate: Can't find host cn.pool.ntp.org: Servname not supported for ai_socktype (-8) 3 Jan 11:12:17 ntpdate: no servers can be used, exiting 解决:在/etc/services中添加如下两行:ntp 123/tcp ntp 123/udp注意:不要启动ntpd服务,因为这是服务端,此时我们机器是作为服务端
阅读全文
Linux

Ubuntu 16.04安装GTX660显卡驱动——解决谷歌浏览器卡死桌面的问题

摘要:最近尝试升级ubuntu系统,在Ubuntu的三个版本之间徘徊了半个来月:16.04 LTS 17.10 以及 18.04 LTS。真的是验证了一句话:no zuo no die。然后今天又换回了16.04 LTS,还是觉得这个版本真心好用,自此也总结出一个经验,要好好珍惜现在已拥有的东西。 话回正题,这三个版本我觉得用得最舒服的还是16.04 LTS,它作为unity最后一个桌面版本还是有它的积累和沉淀的,在主题和UI响应速度方面都做得挺不错。当我尝试使用17.10版本时,也是出于好奇,因为据说新的版本中已经换成了GNOME桌面,我想了下,桌面不过是Linux的一套软件而已,应该也安装unity桌面,经过网友们的验证,果然是可以的,但,没想到,这也是大灾难的开始。 我好奇心的驱使下,我开始升级了17.10系统,最明显的感受是GNOME系统的反应速度比unity还是差了好大一截,我的I5 3450 CPU加12G内存跑得都有明显延迟。然后发现各种桌面应用出现了卡顿,典型的就是谷歌浏览器和wps,偶尔还会有桌面系统直接卡死的现象,只能直接按电源键强制重启。由于我升级是办公用的电脑,只能强忍着泪水继续使用。终于在一次连接点击鼠标这种神级操作下,系统又成功卡死了,此时我又得知18.04LTS出来了,于是乎,抱着一丝希望,想升级后应该会好一些。测试的结果更令人失望,何止是卡,简直是卡!在用了一天18.04 LTS版本后,果断又换回了16.04,这下心情大好,飘逸的速度又回来了,看来Ubuntu团队在驾驭GNOME桌面上还有相当长的一段路要走。 其实,在之前使用16.04 LTS时,我一直有一个问题没解决——打开谷歌浏览器后,在几分钟内就会卡死整个桌面系统。我一直认为应该是谷歌浏览器调用了图形显示驱动,导致了桌面系统的僵死。经过查看发现,ubuntu默认使用的nouveau开源驱动,而我的显卡是Nvidia GTX 660,怀疑与该驱动有关。经过安装验证后发现,确实与此驱动有关,特将安装过程记录如下:(截止到该段文字此,我都是用的谷歌浏览器在编辑文章,已经用时超过了30+分钟) 1、下载显卡驱动 去英伟达官网下载:https://www.geforce.cn/drivers 选择对应的型号,如图: 2、卸载原有Nvidia驱动 如果已经安装有旧的Nvidia驱动的,最好先卸载一下,卸载命令如下: sudo apt-get purge nvidia* 3、禁用原生开源驱动 添加一个文件:/etc/modprobe.d/blacklist-nouveau.conf 加入如下内容: blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off 重新生成内核镜像(敲黑板:非常重要!) 使用命令: sudo update-initramfs -u 接着重启下系统再安装Nvidia驱动,重启完成后可以使用如下命令检测是否已经禁用nouveau驱动,如果没有任何输出,则表示成功禁用: sudo lsmod | grep nouveau 4、开始安装Nvidia驱动 使用Ctrl + Alt + F1 进入tty1,因为我们需要在字符界面中进行安装,依次执行如下命令: sudo /etc/init.d/lightdm stop sudo ./NVIDIA-Linux-x86_64-390.48.run --no-opengl-files sudo /etc/init.d/lightdm start 5、安装完成 < p style="white-space: normal; text-indent: 2em;">再次reboot,没有了,真没有了 注: 如果发现安装完后出现以下情况, 则执行以下指令,选择一种启动模式gdm3或lightgdm sudo apt-get update sudo apt-get install gdm sudo reboot
阅读全文