CentOS 7 x64 docker 使用点滴
CentOS 7 安装 docker
yum search docker 查看是否 有docker包
yum info docker 版本为1.3.2
yum -y install docker 安装docker
docker --version
Docker version 1.3.2, build 39fa2fa/1.3.2
关闭 firewalld 与 Selinux
service docker start 启动
systemctl enable docker 设置开机启动
打开 Linux 内核 转发 添加:
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
保存 运行 sysctl -p 生效
修改docker 环境变量 docker 容器存储路径 ( 默认路径为 /var/lib/docker
docker info 查看环境变量
vi /etc/sysconfig/docker
将
OPTIONS=--selinux-enabled -H fd://
修改为如下
OPTIONS=--selinux-enabled --graph=/opt/docker/images -H fd://
重启docker
systemctl restart docker.service
docker info 查看是否已经变更
获取CentOS 镜像
docker pull centos:latest 下载最新版本的镜像
或者
docker pull centos:centos6 下载centos6镜像等
查看安装镜像的情况
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos 7 8efe422e6104 2 weeks ago 224 MB
centos centos7 8efe422e6104 2 weeks ago 224 MB
centos latest 8efe422e6104 2 weeks ago 224 MB
在docker下运行 shell bash
docker run -i -t <IMAGE ID> /bin/bash //<IMAGE ID> 通过docker images命令获取,这里为510cf09a7986
docker run -i -t 8efe422e6104 /bin/bash
docker run -i -t <IMAGE ID> /bin/bash //此方式运行的容器,退出后容器就会自动关闭, 此方式是创建一个新的容器.
docker run -i -t -v /opt/software:/opt/software <IMAGE ID> /bin/bash //-v 为挂载本地目录, 第一个/opt/software 为本地目录 : 后面为容器目录,目录不存在会自动创建
执行以后切换到
[root@8efe422e6104 /]#
在容器下安装 ssh passwd
yum -y install tar unzip openssh-server passwd lrzsz bzip2
安装完毕以后 修改root 密码
passwd
修改 时区 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改字符编码 echo 'LANG="en_US.UTF-8"' >> /etc/locale.conf
-------------------------------------------------------------------------------
centos 7 启动sshd 提示如下:
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
创建key
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key
-------------------------------------------------------------------------------
然后再 安 装jdk 和 tomcat !!
安装过程与物理机安装过程相同 安装完毕以后
返回 物理机
docker ps -a 可查看运行的docker shell
CONTAINER ID IMAGE COMMAND CREATED STATUS
c6291c68a800 centos:7 "/bin/bash" 3 hours ago Exited (0) 3 minutes ago
docker commit <CONTAINER ID> <name> //修改镜像IMAGE名称
docker commit c6291c68a800 tomcat //将此镜像的名称保存为 tomcat
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tomcat-1 latest 983e0f7ea1fd 37 minutes ago 779.8 MB
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
ed1efc2c7d01 tomcat:latest "/bin/bash" 9 minutes ago Exited (0) 3 minutes ago
docker start <CONTAINER ID> //<CONTAINER ID> 通过docker ps -a命令获取 启动此容器
docker attach <CONTAINER ID> //返回到此容器中
docker start -i <CONTAINER ID> // 启动此容器后连接到此容器中
启动容器的SSH 并映射端口
docker run -d -p 50001:22 <IMAGE ID> /usr/sbin/sshd -D //<IMAGE ID> 为docker images 获取 需要获取tomcat的IMAGE ID
ssh -p 50001 127.0.0.1 进入容器
启动tomcat 查看容器ip
返回物理机
curl -I 容器ip:8080 查看是否正常
-------------------------------------------------------------------------------------------------------
其他运行命令
查看 docker 运行日志
docker logs -f <CONTAINER ID>
删除某个容器
docker rm <CONTAINER ID> //<CONTAINER ID> 通过docker ps -a命令获取
删除所有容器
docker rm `docker ps -a -q`
停止所有容器
docker stop `docker ps -a -q`
删除某个镜像
docker rmi <IMAGE ID > //<IMAGE ID> 通过docker images命令获取
导出某个镜像
docker save <IMAGE ID> > /tmp/myimage.tar
导入某个镜像
docker load < /tmp/myimage.tar
-------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
docker 设置独立IP 并映射端口 ( 必须开启 Linux 内核转发 net.ipv4.ip_forward )
物理机 单网卡 绑定多IP .. 如 em1 绑定 em1:1
(CentOS 7 绑定网卡 必须有 DEVICE=em1:1 这种名称)
em1 ip 为 172.24.0.11 绑定em1:1 IP 为 172.24.0.100 em1:2 IP 为 172.24.0.101 以SSH 端口 为例操作如下
物理机 不能与容器端口冲突, 容器与容器之间可以。
修改 172.24.0.11 的SSH 端口为 999 映射 IP 172.24.0.100 与 172.24.0.101 端口
docker run -h="web1" --name web1 -d -p 172.24.0.100:22:22 <images ID> /etc/rc.local
docker run -h="web2" --name web2 -d -p 172.24.0.101:22:22 <images ID> /etc/rc.local
-------------------------------------------------------------------------------------------------------------------------------------
docker 自建私有仓库
首先创建存储 镜像的目录
mkdir -p /opt/registry
默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下.
执行
docker pull registry #安装docker私有仓库
启动 registry
docker run -d -e SETTINGS_FLAVOR=dev -e STORAGE_PATH=/tmp/registry -v /opt/registry:/tmp/registry -p 5000:5000 registry
--------------------------------------------------------------------------
可用 http://ip:5000 来访问
---------------------------------------------------
提示如下 表示启动完成
"\"docker-registry server\""
----------------------------------------------------
在客户机上面:
#docker images
dev latest a7efdd5c0690 5 days ago 989.2 MB
#docker tag a7efdd5c0690 172.24.0.14:5000/dev
#docker images
dev latest a7efdd5c0690 5 days ago 989.2 MB
172.24.0.14:5000/dev latest a7efdd5c0690 5 days ago 989.2 MB
#docker push 172.24.0.14:5000/dev
-------------------------------------------------------------------------------------------------------------------------------------------------
提示如下:
2015/03/16 15:34:35 Error: Invalid registry endpoint https://172.24.0.12:5000/v1/: Get https://172.24.0.12:5000/v1/_ping: dial tcp 172.24.0.12:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 172.24.0.12:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/172.24.0.12:5000/ca.crt
-------------------------------------------------------------------------------------------------------------------------------------------------
解决办法 禁用https 验证
vi /etc/sysconfig/docker
在 OPTIONS=--selinux-enabled 后面添加 --insecure-registry 172.24.0.14:5000
然后重启 docker !!
在次运行
#docker push 172.24.0.14:5000/dev
提示如下 为成功
----------------------------------------------------------------------------------------------------------------------
The push refers to a repository [172.24.0.14:5000/dev] (len: 1)
Sending image list
Pushing repository 172.24.0.14:5000/dev (1 tags)
511136ea3c5a: Image successfully pushed
5b12ef8fd570: Image successfully pushed
88f9454e60dd: Image successfully pushed
a7efdd5c0690: Image successfully pushed
Pushing tag for rev [a7efdd5c0690] on {http://172.24.0.14:5000/v1/repositories/dev/tags/latest}
-------------------------------------------------------------------------------------------------------------------------
私有仓库查询方法
curl http://172.24.0.14:5000/v1/search
如下所示 有 dev 表示 上传成功
--------------------------------------------------------------------------------------------------------------------------
{"num_results": 1, "query": "", "results": [{"description": "", "name": "library/dev"}]}
--------------------------------------------------------------------------------------------------------------------------
在其他客户机上访问和下载私有仓库的镜像
docker pull 172.24.0.14:5000/dev
----------------------------------------------------------------------------------------------------------------------------
docker pull 172.24.0.14:5000/dev
Pulling repository 172.24.0.14:5000/dev
88f9454e60dd: Download complete
511136ea3c5a: Download complete
5b12ef8fd570: Download complete
Status: Image is up to date for 172.24.0.14:5000/dev:latest
----------------------------------------------------------------------------------------------------------------------------
docker 使用 crontab 服务
yum 安装 crontab
yum -y install cronie
启动服务
/usr/sbin/crond
crontab -e 添加服务
docker 下使用 logrotate 服务 切割日志
安装 logrotate 服务
yum -y install logrotate
创建 切割规则
cd /etc/logrotate.d
vi nginx
------------------------------------------------------------------
/opt/local/nginx/logs/*.log
{
daily #每天轮询一次
create 644 upload upload
dateext #使用日期作为轮转后的日志文件的后缀
delaycompress #推迟压缩
rotate 7 #一次将存储7个归档日志。对于第8个归档,时间最久的归档将被删除。
sharedscripts #只为整个日志组运行一次的脚本
postrotate #引入在轮换过日志之后要运行的脚本
if [ -f /opt/local/nginx/nginx.pid ]; then
kill -USR1 `cat /opt/local/nginx/nginx.pid`
fi
endscript
}
-------------------------------------------------------------------
ps: docker 下不默认没有crond 必须启动crond 才能自动轮询
yum -y install cronie
启动服务
/usr/sbin/crond
logrotate 的启动脚本为
/etc/cron.daily/logrotate
CentOS 7 x64 docker 使用点滴的更多相关文章
- CentOS 7 安装 Docker
CentOS 7 安装 Docker 这里介绍 ContOS 7 的安装 docker V1.2+,包括阿里云加速 docker 镜像下载的设置,这对提升使用 docker 体验至关重要.其他系统安装 ...
- 在RedHat/CentOS下安装Docker(不升级内核)
由于内核版本问题,最初仅Ubuntu可以较好的支持Docker.不过,由于RedHat系列OS(REHL.CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker ...
- docker入门(1) Centos 7 下docker的安装
centos 7安装docker 什么是 Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go ...
- 在centos下部署docker内网私服
Docker内网私服:docker-registry with nginx & ssl on centos docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已 ...
- CentOS 7 x64 安装 Ceph
CentOS 7 x64 安装 Ceph 二, 实验环境 节点 IP 主机名 系统 MON 1 ...
- 简单介绍一下在CentOS上安装Docker。
简单介绍一下在CentOS上安装Docker. 前置条件: 64-bit 系统 kernel 3.10+ 1.检查内核版本,返回的值大于3.10即可. $ uname -r 2.使用 sudo 或 r ...
- 【亲测有效】Centos安装完成docker后启动docker报错docker: unrecognized service的两种解决方案
今天在学习Docker的时候 使用yum install docker安装完后启动不了,报错如下: [root@Sakura ~]# service docker start docker: unre ...
- CentOS中利用Docker安装RabbitMQ
CentOS中利用Docker安装RabbitMQ 1.拉取镜像(带管理平台) #docker pull rabbitmq:3.7.7-management 2.启动容器: #docker run - ...
- CentOS中利用Docker安装Redis
CentOS中利用Docker安装Redis 1.拉取镜像 #docker pull redis:4.0.10 2.加载镜像 #docker run -p 6379:6379 --name test- ...
随机推荐
- EF中用Newtonsoft.Json引发的循环引用问题
描述: 1.双向关系表a->b b->aList 2.在查询a引用b以后 3.用Newtonsoft.Json 去tojsonstring 4.一个只有6条数据的json串 出现了一屏幕字 ...
- centos6.5安装docker
(一) 查看系统的版本和内核: $cat /etc/issue $uname -r 因为docker要求服务CentOS6以上,kernel 版本必须2.6.32-431或更高 要将Docker安装到 ...
- git 提高下载速度
1. 直接下载分支,就不用下载不需要的源码了. git clone --depth 1 git://github.com/TI-OpenLink/wl18xx.git --branch ol_r8 ...
- c语言的编译过程和GCC 编译参数
原文: http://www.cnblogs.com/zhangShanGui/p/4912135.html C语言的编译过程和GCC编译参数 C语言的编译一般有三个步骤: 预编译: gcc -E - ...
- 【bfs】 poj 3984 maze 队列存储
#include <iostream> #include <stdio.h> #include <cstring> #define Max 0x7f7f7f7f u ...
- Servlet事件监听器
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. 面试题:请描述一下java事件监听机 ...
- Git学习 -- 简介
Git是什么? 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 特点 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本 ...
- PowerDesigner中逆向工程将数据库中comment赋值到name
'------------------------------------------------------------ ' '脚本功能: ' PowerDesigner中逆向工程完成后,将数据库中 ...
- Vi 详细教程
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...
- VLAN及Trunk实验
VLAN及Trunk实验 一 基本VLAN试验 实验拓扑: 实验目的:掌握VLAN基本配置 掌握静态接口VLAN划分 实验需求:在交换机switch上面创建两个VLAN,vlan2和vlan3,vla ...