工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆
浏览模式: 标准 | 列表全部文章

Docker 清理命令集锦

 杀死所有正在运行的容器

复制代码代码如下:
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 技巧:删除 Docker 容器和镜像

 

删除所有未运行 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 之Dockerfile 快速学习(二)

 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_practice

centos下安装docker最新版教程

 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

博客恢复正常了

 之前的一段时间,突然这个后台的编辑器用不了了,发的文章也没有格式了,很不好看,慢慢,也就没有更新了

 
那时,也有找过原因,还以为是服务器的原因,但没找到也没解决
 
时间好快,又一年了
 
 
最近,开始学习,发现,没个博客记录些东西,还真麻烦
 
所以,再次偿试解决
 
在本地安装了个新的,也是一样的问题
 
所以,觉得,应该是服务器的问题了,而程序或是兼容性的问题
 
好吧,看代码
 
没多久,还真找到原因了
 
fckeditor_php5.php
这个文件里,有一个判断浏览器信息的,默认找不到匹配信息,返回假,所以没有编辑了
只需改为真,就OK了
 
又开始更新吧
 
一个小插曲
在刚看代码时,想百度搜索下,看有没人遇到这个问题或有没解决办法,毕竟觉得,用这个博客程序的人,还是有一些
但没找到,却无意间发现,这个程序的作者入狱了,还判了5年,挺震惊,也挺悲剧的

Nginx如何保留真实IP和获取前端IP

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
 

列出rpm包内容和解压rpm包内容

列出rpm包的内容:
rpm -qpl *.rpm
 
解压rpm包的内容:(没有安装,就像解压tgz包一样rpm包)
rpm2cpio *.rpm | cpio -div