Month: May 2017
-
docker–拷贝宿主机文件到容器的两种方法
第一种方法适用于1.8版本以后的docker,参见文章: docker cp容器和宿主机的文件复制拷贝 第二种方法是完全利用 docker exec 命令: [root@iZj6c4kga39y2z70xmt5y9Z ~]# echo ‘i am in the host’ > one.txt [root@iZj6c4kga39y2z70xmt5y9Z ~]# docker exec -i new1 sh -c ‘cat > /cookbook/one.txt’ < one.txt [root@iZj6c4kga39y2z70xmt5y9Z ~]# docker exec -i new1 sh -c ‘cat /cookbook/one.txt’ i am in the host
-
docker cp容器和宿主机的文件复制拷贝
在容器共用volumes文章中我们假设启动了两个容器new1 和 new2 ,而且共用一个volumes,其内容为/cookbook/foobar 这个文件。 以下步骤我们将完成从容器new1 拷贝文件foobar到宿主机,更改文件内容后 拷贝到容器 new2 ,然后删除宿主机的本地文件,因为new1 和 new2 是共享volumes,所以我们再次拷贝new1 的foobar 文件下来,应该看到我们修改过的foobar 已有的两个容器,共享volumes: [root@iZj6c4kga39y2z70xmt5y9Z ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS …
-
docker–容器共用volumes
docker ps -a 看到的容器的volumes,都可以被其他容器挂载。 docker run -it –name new1 –volumes-from ed38309b8e26 ubuntu:14.04 /bin/bash 解释: 新启动的new1 容器,挂载容器id为ed38309b8e26的数据容器,并且可读写。
-
-
docker–启动一个容器利用docker inspect -f {{.Mounts}} 查看容器内目录和对应宿主机目录对应关系
建立容器,配置一个默认的“数据容器”,卷名称为cookbook # docker run -it -v /cookbook ubuntu:14.04 /bin/bash Unable to find image ‘ubuntu:14.04’ locally 14.04: Pulling from library/ubuntu cf0a75889057: Pull complete c8de9902faf0: Pull complete a3c0f7711c5e: Pull complete e6391432e12c: Pull complete 624ce029a17f: Pull complete Digest: sha256:b2a55128abd84a99436157c2fc759cf0a525c273722460e6f8f9630747dfe7e8 Status: Downloaded newer image for ubuntu:14.04 在容器内建立一个文件: root@ed38309b8e26:/# cd cookbook/ root@ed38309b8e26:/cookbook# touch foobar root@ed38309b8e26:/cookbook# exit 查看容器id # docker ps…
-
docker–挂载本地宿主机目录利用docker inspect 命令查看挂载情况|在宿主机和容器之间共享数据
以后台形式启动一个ubuntu容器,挂载本地$PWD目录,默认是读写权限都有,如果需要只读,加只读参数 /asdf:ro $ docker run –name ubuntu02 -d -ti -v “$PWD”:/asdf ubuntu:14.04 /bin/bash 15a4a59a52f98f76d54bb88c37d9a0577b423e97aa146b6a715a1c8d1bb06264 查看容器: $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS …
-
docker–创建一个数据库挂载本地物理机目录数据而且进行mysqldump备份
创建并启动mysql的容器,设置好数据库密码 # docker run –name mysqlwp -e MYSQL_ROOT_PASSWORD=123123 \ > -e MYSQL_DATABASE=wordpress \ > -e MYSQL_USER=wordpress \ > -e MYSQL_PASSWORD=wordpresspwd \ > -v /home/docker/mysql:/var/lib/mysql \ > -d mysql Unable to find image ‘mysql:latest’ locally latest: Pulling from library/mysql 10a267c67f42: Pull complete c2dcc7bb2a88: Pull complete 17e7a0445698: Pull complete 9a61839a176f: Pull complete a1033d2f1825: Pull complete 0d6792140dcc: Pull…
-
wordpress 双横杠被转义为横线问题
文本中 — 符号会被转义为 一个横杠,对于代码粘贴非常不方便。 解决办法: 安装 Quotmarks Replacer 插件。 网址 https://wordpress.org/plugins/quotmarks-replacer/
-
Docker–利用Supervisor在同一个容器中运行wordpress 包含httpd and mysql
配置文件地址: https://github.com/how2dock/docbook/tree/master/ch01/supervisor 建立wordpress目录,按配置文件地址建3个文件: Dockerfile (保护数据库密码) Supervisord.conf wp-config.php cd wordpress 建立镜像: docker build -t wordpress . 运行容器: docker run –d –p 80:80 wordpress 网页可以访问这个ip: http://xxx:80 下载一个工具: wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker; echo “[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker” >> ~/.bashrc; source ~/.bashrc 利用工具docker-enter进入容器: docker-enter b98d252eb7f6 /bin/bash docker ps –a 查出容器id 进入容器mysql…
-
docker–镜像的删除 Untagged 和 Deleted 的区别
# docker rmi ubuntu:14.04 Untagged: ubuntu:14.04 Untagged: ubuntu@sha256:b2a55128abd84a99436157c2fc759cf0a525c273722460e6f8f9630747dfe7e8 Deleted: sha256:2ff3b426bbaafba63cae165e8f6a4955a24a53cdf6d25cce00353e97cda3df71 Deleted: sha256:674ac1ba904977cbee239556b7e9ec92addb590d0ed9689bcf9c4a8afd967927 Deleted: sha256:b4fb204519c474988eb7f16b97f9ce6e2fb0f6deb273d64a01b9eec8f3096921 Deleted: sha256:d264f10c88539212472e700e8abbd78ec2c73b02c59587bc76c22963b4214628 Deleted: sha256:e6b73004f2f4cc27ec61a3593512c3d1e0dad911e509ceef8526764f4f6aac62 Deleted: sha256:a8e78858b03ba02c3df71d555f90057f890495aabc86e7a39396c68c87ed5ff2 Untagged 和 Deleted 如果观察上面这几个命令的运行输出信息的话,你会注意到删除行为分为两类,一类是 Untagged,另一类是 Deleted。我们之前介绍过,镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。 因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker rmi 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。 当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变动非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。这就是为什么,有时候会奇怪,为什么明明没有别的标签指向这个镜像,但是它还是存在的原因,也是为什么有时候会发现所删除的层数和自己 docker pull 看到的层数不一样的源。 除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。 用 docker images 命令来配合 像其它可以承接多个实体的命令一样,可以使用 docker images -q 来配合使用 docker rmi,这样可以成批的删除希望删除的镜像。比如之前我们介绍过的,删除虚悬镜像的指令是: $ docker rmi…
-
docker–建议下载bashrc_docker 脚本,利用docker-pid和docker-enter命令进入容器
建议下载 .bashrc_docker,并将内容放到 .bashrc 中。 这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。 # wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker; –2017-05-19 16:04:09– https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker Resolving github.com (github.com)… 192.30.255.113, 192.30.255.112 Connecting to github.com (github.com)|192.30.255.113|:443… connected. HTTP request sent, awaiting response… 302 Found Location: https://raw.githubusercontent.com/yeasy/docker_practice/master/_local/.bashrc_docker [following] –2017-05-19 16:04:11– https://raw.githubusercontent.com/yeasy/docker_practice/master/_local/.bashrc_docker Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.88.133 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.88.133|:443… connected. HTTP request sent,…
-
-
Docker–使用 Dockerfile 定制nginx镜像
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v2 3e3413f5d526 3 hours ago 109MB ubuntu 14.04 2ff3b426bbaa 3 days ago 188MB nginx latest 3448f27c273f 8 days ago 109MB # cat Dockerfile FROM nginx RUN echo ‘<h1>Hello, Docker!1111111111</h1>’ > /usr/share/nginx/html/index.html # docker build -t nginx:v3 . Sending build context to Docker daemon 2.048kB Step…
-
docker–容器的终止、启动、删除
列出正在运行的容器container # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 50f00085b48f nginx:v2 “nginx -g ‘daemon …” 7 minutes ago Up 6 seconds 0.0.0.0:81->80/tcp webserver2 e033ce3a2d90 nginx “nginx -g ‘daemon …” About an hour ago Up 11 seconds 0.0.0.0:80->80/tcp webserver1 停止容器: # docker stop webserver1 webserver1 # docker stop webserver2 webserver2 启动容器: #…
-
-
Curl 命令用法
获取页面内容 当我们不加任何选项使用 curl 时,默认会发送 GET 请求来获取链接内容到标准输出。 curl http://www.moneyslow.com 显示 HTTP 头 如果我们只想要显示 HTTP 头,而不显示文件内容,可以使用 -I 选项: curl -I http://www.moneyslow.com 输出为: HTTP/1.1 200 OK Server: nginx/1.10.3 Date: Thu, 11 May 2017 08:24:45 GMT Content-Type: text/html; charset=utf-8 Content-Length: 24206 Connection: keep-alive X-Powered-By: Express Cache-Control: public, max-age=0 ETag: W/”5e8e-Yw5ZdnVVly9/aEnMX7fVXQ” Vary: Accept-Encoding 也可以同时显示 HTTP 头和文件内容,使用 -i 选项: curl -i http://www.moneyslow.com 输出为: HTTP/1.1 200…
-
Ansible 工作机制和简单命令
Ansible工作机制Ansible 在管理节点将 Ansible 模块通过 SSH 协议推送到被管理端执行,执行完之后自动删除,可以使用 SVN 等来管理自定义模块及编排. 由上面的图可以看到 Ansible 的组成由 5 个部分组成:Ansible: 核心Modules: 包括 Ansible 自带的核心模块及自定义模块Plugins: 完成模块功能的补充,包括连接插件、邮件插件等Playbooks: 编排,定义 Ansible 多任务配置文件,有 Ansible 自动执行Inventory: 定义 Ansible 管理主机的清单Ansible安装除了源码编译安装还有两种比较简单的安装方式。3.1 yum安装rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum install python-devel ansible -y3.2 pip安装pip install ansibleAnsible的简单使用Ansible 通过读取默认的主机清单配置/etc/ansible/hosts,可以同时连接到多个远程主机上执行任务。默认路径可以通过修改 ansible.cfg 的 hostfile 参数指定路径。cat /etc/ansible/hosts[web]192.168.1.100192.168.1.101注:为了避免Ansible下发指令时输入目标主机密码,需要提前配置免密钥登陆#@@ping测试,所有主机ansible all -m ping#@@运行shell命令,web组服务器ansible web -m shell -a “ps aux | grep java”#@@文件传输(copy) 将ansible本地的/etc/hosts…
-
Docker安装—centos7 下安装docker-ce 最新版
官方文档:https://docs.docker.com/engine/installation/linux/docker-ce/centos/ 1 删除旧版本docker yum remove docker docker-common container-selinux docker-selinux docker-engine 2 安装yum-utils 我们需要 yum-config-manager 工具 yum install -y yum-utils 3 利用yum增加 docker-ce 的repo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo 4 默认edge repository 是disable 的,我们来enable 它 yum-config-manager –enable docker-ce-edge 5 更新软件包信息: yum makecache fast 6 安装最新版本的docker: yum –y install docker-ce # rpm -qa|grep docker docker-ce-selinux-17.05.0.ce-1.el7.centos.noarch docker-ce-17.05.0.ce-1.el7.centos.x86_64 7 有时候需要安装特定版本的docker,首先list出可用版本: #yum…
-
Docker 的平台支持和版本说明
平台支持: 目前docker的CE和EE所支持的平台情况如下所示,大家所钟情的Ubuntu和CentOS作为Linux发行版所支持的CE和EE均支持的。 版本说明: 2017年的3月1号开始,版本的格式变为如下 项目 说明 版本格式 YY.MM stable版本 (gives you reliable updates every quarter) 每个季度发行 edge版本 (gives you new features every month) 每个月发行 当前CE版本 17.05.0-ce
-
-
使用Nginx反向代理网站
server { listen 80; root /home/wwwroot/default; location / { proxy_pass http://downloads.moneyslow.com/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /f/ { proxy_pass http://www.sourceforge.net/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } access_log /home/wwwlogs/access.log; }
-
mysql change master 语句备忘
change master to master_host=’10.10.xx.xx’, master_port=3306, master_user=’repl’, master_password=’asdfasdfa’, master_log_file=’mysql-bin.004281′, master_log_pos=3234234;
-
WordPress 正在执行例行维护,请一分钟后回来 解决办法
WordPress在升级程序、主题、插件时,都会先切换到维护模式,也就是显示 “正在执行例行维护,请一分钟后回来(Briefly unavailable for scheduled maintenance. Check back in a minute)”,如果升级顺利,也就几秒左右就恢复正常;但是如果由于网速不佳等原因导致升级中断,WordPress就会一直停留在维护模式,不论前台还是后台,都一直显示“正在执行例行维护,请一分钟后回来“。 解决办法: 删除WordPress根目录下的 .maintenance ,刷新网页即可。
-
-
如何查看 sqlserver2008和sqlserver2012 端口号
通过存储过程查看 安装了sqlserver2008和sqlserver2012两个版本的数据库。我们首先打开sqlserver management studio(简称SSMS)连接sqlserver2008的数据库实例,然后执行如下存储过程: –查询端口号 exec sys.sp_readerrorlog 0, 1, ‘listening’ 查询出来的结果如下图所示: 从上图我们可以看出sqlserver2008的端口号是5419。 接下来关闭SSMS,再从重新打开,接着连接sqlserver2012。继续执行上述的存储过程,查询结果如下图所示: 上图说明sqlserver2012的端口号是5413。 通过Sql Server配置管理器(SSCM) 首先打开SSCM,如下图所示: 然后再sqlserver网络配置中开启TCP/IP协议,如下图所示: 在这里我们要将SQLEXPRESS和SQL2012两个协议中的TCP/IP协议都开启。 然后查看TCP/IP协议的属性,如下所示: 如上图所示,我们在IPALL中看到了”TCP动态端口”的值为5419,这就是我们sqlserver2008的端口号。我们打开sql2012的协议查看,发现IPALL属性如下: sql2012的端口号是5413,这个跟我们用存储过程查出来的端口号一模一样。 通过sp_readerrorlog来查看sql server监听的协议以及端口(补充:2012-9-10) 在SSMS中输入sp_readerrorlog命令来查看sql server信息,回到到如下类似的监听信息: –tcp协议 Server is listening on [ ‘any’ <ipv6> 1500]. Server is listening on [ ‘any’ <ipv4> 1500]. Server is listening on [ ‘any’ <ipv6> 1433]. Server is listening on…