Submitted by admin on 2016, December 8, 10:43 PM
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
删除所有镜像
docker rmi $(docker images -q)
为这些命令创建别名
# ~/.bash_aliases
# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'
另附上docker常用命令
docker version #查看版本
docker search tutorial#搜索可用docker镜像
docker pull learn/tutorial #下载镜像
docker run learn/tutorial echo "hello word"#在docker容器中运行hello world!
docker run learn/tutorial apt-get install -y ping#在容器中安装新的程序
保存镜像
首先使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。
提示:
1.运行docker commit,可以查看该命令的参数列表。
2.你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
3.无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号)
正确的命令:
docker commit 698 learn/ping
运行新的镜像
docker run lean/ping ping www.google.com
检查运行中的镜像
现在你已经运行了一个docker容器,让我们来看下正在运行的容器。
使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。
目标:
查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。
提示:
可以使用镜像id的前面部分,不需要完整的id。
正确的命令:
docker inspect efe
docker | 评论:0
| Trackbacks:0
| 阅读:546
Submitted by admin on 2016, December 8, 10:37 PM
删除所有未运行 Docker 容器
docker rm $(docker ps -a -q)
删除所有 Docker 镜像
删除所有未打 tag 的镜像
docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')
删除所有镜像
docker rmi $(docker images -q)
根据格式删除所有镜像
docker rm $(docker ps -qf status=exited)
docker rmi $(docker images --filter dangling=true -q
执行这条命令删除pull过程或者create过程产生的临时镜像,剩下的都是有用的镜像。镜像是一层层叠加起来的,你使用的是带名字和tag的发布镜像,那些中间镜像没有名字,只有哈希,所以叫none。。
这个是列出所有的镜像的。因为某些镜像间存在依赖关系。你要知道docker跟git一样,有“层”的概念。你用docker pull ubuntu的时候就会发现,会pull下来一堆镜像,然后最后一个镜像tag为ubuntu:latest。
docker | 评论:0
| Trackbacks:0
| 阅读:563
Submitted by admin on 2016, December 8, 3:04 PM
Dockerfile文件的说明:
格式:
INSTRUCTION arguments
虽然指令忽略大小写,但建议用大写
# 是注释
MAINTAINER命令:
MAINTAINER命令用来指定维护者的姓名和联系方式
FROM命令:
FROM <image>/<image>:<tag>
这个是设置基本的镜像,为后续的命令使用,所以应该作为Dockerfile的第一条指令
比如:
FROM centos6-base
RUN 命令:
会上面FROM 指定的镜像里执行任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到
格式:
RUN <command> (这个命令运行一个shell中 - '/bin/sh -c')
或:
RUN ["executable", "param1", "param2"]
RUN 命令等价于:
docker run image_name command
CMD and ENTRYPOINT
命令设置在容器启动时执行命令
ENTRYPOINT,表示镜像在初始化时需要执行的命令,不可被重写覆盖,需谨记
CMD,表示镜像运行默认参数,可被重写覆盖
ENTRYPOINT/CMD都只能在文件中存在一次,并且最后一个生效 多个存在,只有最后一个生效,其它无效!
需要初始化运行多个命令,彼此之间可以使用 && 隔开,但最后一个须要为无限运行的命令,需切记!
ENTRYPOINT/CMD,一般两者可以配合使用,比如:
ENTRYPOINT ["/usr/sbin/sshd"]
CMD ["-D"]
** 在Docker daemon模式下,无论你是使用ENTRYPOINT,还是CMD,最后的命令,一定要是当前进程需要一直运行的,才能够防容器退出。***
以下无效方式:
ENTRYPOINT service tomcat7 start #运行几秒钟之后,容器就会退出
CMD service tomcat7 start #运行几秒钟之后,容器就会退出
这样有效:
ENTRYPOINT service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out
# 或者
CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out
这样也有效:
ENTRYPOINT ["/usr/sbin/sshd"]
CMD ["-D"]
USER 命令
比如指定 memcached 的运行用户,可以使用上面的 ENTRYPOINT or CMD来实现:
ENTRYPOINT ["memcached", "-u", "daemon"]
更好的方式:
ENTRYPOINT ["memcached"]
USER daemon
EXPOSE 命令
EXPOSE 命令可以设置一个端口在运行的镜像中暴露在外
在docker使用--link来链接两容器时会用到相关端口
EXPOSEd <port>
ENV命令:
用于设置环境变更
使用此dockerfile生成的image新建container,可以通过 docker inspect CONTAINER ID 看到这个环境变量
也可以通过在docker run时设置或修改环境变量
ADD 命令:
从src复制文件到container的dest路径:
ADD <src> <dest>
<src> 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url
<dest> 是container中的绝对路径
VOLUME 命令
VOLUME ["<mountpoint>"]
如:
VOLUME ["/data"]
创建一个挂载点用于共享目录
WORKDIR 命令
WORKDIR /path/to/workdir
配置RUN, CMD, ENTRYPOINT 命令设置当前工作路径
可以设置多次,如果是相对路径,则相对前一个 WORKDIR 命令
比如:
WORKDIR /a WORKDIR b WORKDIR c RUN pwd
其实是在 /a/b/c 下执行 pwd
Dockerfile文件到此介绍完毕。
下面是一个完整的Dockerfile文件
#Dockerfile
FROM centos6-base
MAINTAINER zhou_mfk <zhou_mfk@163.com>
RUN ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
EXPOSE 22
RUN echo 'root:redhat' | chpasswd
RUN yum install -y yum-priorities && rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
RUN yum install tar gzip gcc vim wget -y
ENV LANG en_US.UTF-8
ENV LC_ALL en_US.UTF-8
CMD /usr/sbin/sshd -D
#End
docker | 评论:0
| Trackbacks:0
| 阅读:563
Submitted by admin on 2016, December 7, 11:33 PM
github | 评论:0
| Trackbacks:0
| 阅读:527
Submitted by admin on 2016, December 7, 11:31 PM
1、通过yum安装
需要root或者能sudo的权限
yum包更新到最新
$ sudo yum update
添加Docker yum源
$ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
安装Docker包
$ sudo yum install docker-engine
启动Docker守护进程
$ sudo service docker start
通过测试镜像运行一个容器来验证Docker是否安装正确
$ sudo docker run hello-world
2、通过脚本安装
需要root或者能sudo的权限
yum包更新到最新
$ sudo yum update
运行Docker安装脚本
$ curl -sSL https://get.docker.com/ | sh
这个脚本会添加docker.repo仓库并且安装Docker
启动Docker守护进程
$ sudo service docker start
通过测试镜像运行一个容器来验证Docker是否安装正确
$ sudo docker run hello-world
创建一个Docker用户组
docker守护进程绑定在Unix socket 而不是 TCP 端口。默认情况下Unix socket属于root用户和具有sudo权限用户的使用范畴。出于这个原因,docker守护进程需要一直在root用户下面运行。
To avoid having to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.
为了避免运行docker命令的时候需要使用sudo命令,创建一个叫docker的Unix用户组并将需要运行docker的用户添加进去。当开始运行docker守护进程,会令docker用户组的成员拥有Unix socket的读写权限。
创建docker用户组并添加用户:
1.需要root或者能sudo的权限
2.创建docker用户组并添加用户
sudo usermod -aG docker your_username
3.退出并且登录到your_username,如果在your_username下也建议退出再重新登录一次,这确保您的用户正在运行正确的权限。
4.验证运行docker已不再需要sudo命令
$ docker run hello-world
开机运行docker
$ sudo chkconfig docker on
docker | 评论:0
| Trackbacks:0
| 阅读:459
Submitted by admin on 2016, December 7, 11:27 PM
之前的一段时间,突然这个后台的编辑器用不了了,发的文章也没有格式了,很不好看,慢慢,也就没有更新了
那时,也有找过原因,还以为是服务器的原因,但没找到也没解决
时间好快,又一年了
最近,开始学习,发现,没个博客记录些东西,还真麻烦
所以,再次偿试解决
在本地安装了个新的,也是一样的问题
所以,觉得,应该是服务器的问题了,而程序或是兼容性的问题
好吧,看代码
没多久,还真找到原因了
fckeditor_php5.php
这个文件里,有一个判断浏览器信息的,默认找不到匹配信息,返回假,所以没有编辑了
只需改为真,就OK了
又开始更新吧
一个小插曲
在刚看代码时,想百度搜索下,看有没人遇到这个问题或有没解决办法,毕竟觉得,用这个博客程序的人,还是有一些
但没找到,却无意间发现,这个程序的作者入狱了,还判了5年,挺震惊,也挺悲剧的
生活闲谈 | 评论:0
| Trackbacks:0
| 阅读:518
Submitted by admin on 2015, December 11, 10:22 AM
2,apache配置:
用mod_rpaf来获取IP的
所以需要安装这个模块
下载:http://stderr.net/apache/rpaf/download/
tar zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
/usr/local/www/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
配置apache:
在 httpd.conf中添加
LoadModule rpaf_module libexec/apache2/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 192.168.1.1 #这个是前段的IP,可不是后端的IP哦
RPAFheader X-Forwarded-For
nginx | 评论:0
| Trackbacks:0
| 阅读:648
Submitted by admin on 2015, September 30, 12:00 PM
列出rpm包的内容:
rpm -qpl *.rpm
解压rpm包的内容:(没有安装,就像解压tgz包一样rpm包)
rpm2cpio *.rpm | cpio -div
linux | 评论:0
| Trackbacks:0
| 阅读:746