docker1.12安装配置及使用笔记
官方安装手册地址:https://docs.docker.com/engine/installation/linux/ubuntulinux/
使用的操作系统是是ubuntu14.04,按照官方的推荐的配置(其他操作系统,多少有点区别请参考官方文档)。安装步骤如下:
1、检查内核版本
uname -r #把linux内核升级到3.10以上
2、apt的证书验证和key
apt-get update
apt-get install apt-transport-https ca-certificates
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
3、添加源
vim /etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo ubuntu-trusty main
apt-get update
apt-get purge lxc-docker #如果已经安装了,或者安装的是更老的docker.io卸载掉
apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual #安装aufs存储必须包
4、安装docker
apt-get install docker-engine
service docker start
5、配置国内镜像
关于docker一定要按照官方安装文档来,特别是ubuntu14.04默认apt安装的是1.9比较老的版本,如果使用国内镜像就会报什么乱七八糟的的错误,升级到最新版,问题解决
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8db7f41f.m.daocloud.io
#检查下是否成功添加了一行:DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=http://8db7f41f.m.daocloud.io"
vim /etc/default/docker
6、Docker常用命令讲解
a.镜像:
镜像位置:/var/lib/docker/aufs
docker commit #容器名 centos:v1 ,创建镜像,-a作者信息 -m镜像信息
docker version #查看版本
docker search centos #搜索可用docker镜像
docker images #查看当前docker所有镜像
docker pull centos #下载镜像(会把所有相关tag都下载下来,建议还是加上:tag少下载点)
docker push 名称+tag #上传镜像
cat centos.tar | docker import - centos6 #Docker导入镜像
docker export id > cenos6.tar #Docker导出镜像
docker rmi images #删除镜像,最好是仓库名+TAG(如果要多个就空格开就行),这样其他标签相同id的文件就不会删除(只是删除标签),如果要删除所有标签同一个id,那就
直接输入id,就会都删除
b.容器部分:
docker run centos echo "hello word" #在docker容器中运行hello world!
docker run centos yum install ntpdate #在容器中安装ntpdate的程序
docker ps -l #命令获得最后一个容器的id
docker ps -a #查看所有的容器。
docker commit 容器名称 #提交刚修改的容器,例如:
docker run -i -t centos /bin/bash #在容器里启动一个/bin/bash shell环境,可以登录进入操作,其中-t 表示打开一个终端的意思,-i表示可以交互输入。
docker run -d -i -t centos /bin/bash #在后台启动,退出要ctrl+P、Q才能继续后台,不能exit,exit就相当于关闭容器
docker attach CONTAINER ID #进入在后台启动后的这个容器
docker run -d centos:v1 /bin/bash #-d表示在后台启动,以daemon方式启动。
docker run -d -p 80:80 -p 8022:22 centos:latest /usr/bin/sshd -D #端口映射
docker port 容器名 #查看端口映射情况
docker stop 容器名 #正常关闭容器
docker kill 容器名 #直接kill掉进程
docker start id # 启动某个容器,也可以改为docker start -i 容器名称
docker rm id #删除容器
d.排bug常用:
docker inspect id #查看容器、镜像状态
docker logs -tf --tail 10 容器名 #最近10行容器内部运行情况
docker top 容器名 #查看运行中容器的进程
7、Docker独立IP及容器互联
Ubuntu部分
apt-get install bridge-utils #安装brctl安装包
service docker stop #停止docker
ifconfig docker0 down #停止网卡
brctl show #查看物理机上有哪些网桥
brctl delbr docker0 #删除docker的默认网桥
brctl addbr br0 #自定义网桥
ifconfig br0 192.168.180.22 netmask 255.255.255.0 #给网桥指定IP和子网
vim /etc/default/docker #修改docker启动桥接
DOCKER_OPTS="$DOCKER_OPTS -b=br0"
service docker start #启动docker
brctl show #查看是否生效
Centos部分
service docker stop
ifconfig docker0 down
brctl delbr docker0
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br0"
BOOTPROTO=static
vi ifcfg-br0
DEVICE="br0"
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
TYPE=bridge
IPADDR=192.168.1.165
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS=192.168.1.50
vi /etc/sysconfig/docker
other_args="-b=br0"
service docker start
[root@localhost ~]# ps -ef|grep docker
root 5502 1 0 01:23 pts/3 00:00:00 /usr/bin/docker -d -b=br0
root 5800 5311 0 01:47 pts/3 00:00:00 grep docker
service network restart
可能会报以下错误:
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface br0: Determining if ip address 192.168.1.161 is already in use for device br0...
[ OK ]
Bringing up interface eth0: Error: Connection activation failed: Master connection not found or invalid
[FAILED]
解决方法:
此时,当前网卡也是可以通信的,但是通过网络管理工具修改IP之后,当前修改操作是不会生效的。那如何消除这个提示呢?
其实,问题的原因是RedHat自己开发的NetworkManager管理工具和/etc/sysconfig/network-scripts/ifcfg-ethx配置不同步造成的。如果要消除这个提示,请关闭NetworkManager
服务即可:
chkconfig NetworkManager off
service NetworkManager stop
Stopping NetworkManager daemon: [ OK ]
此时,再重新加载network服务即可:
service network restart
Shutting down interface br0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface br0: Determining if ip address 192.168.1.161 is already in use for device br0...
[ OK ]
Bringing up interface eth0: device eth0 is already a member of a bridge; can‘t enslave it to bridge br0.
[ OK ]
8、为容器手动配置静态ip
安装新的 iproute 包:
wget https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm
yum localinstall iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm
安装pipework:
git clone https://github.com/jpetazzo/pipework
cp ~/pipework/pipework /usr/local/bin/
启动Docker容器:
docker run -itd --net=none jdeathe/centos-ssh:latest /bin/bash
docker exec -it <CONTAINER ID> /bin/bash /这样你就进到这个container 里面了,这个bash退出也不会影响之前 docker run 启动的 bash/
pipework br0 <CONTAINER ID> 192.168.1.170/24@192.168.1.1
9、制作可以ssh登录的本地Docker镜像
安装制作CentOS镜像的工具:
yum -y install febootstrap
制作CentOS镜像文件centos6-image目录:
febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim-minimal -i openssh-server -i openssh-clients centos6 centos6-image
http://mirrors.aliyun.com/centos/6/os/x86_64/
制作Docker镜像,镜像名字是centos6-base:
cd centos6-image && tar -c .|docker import - centos6-base
制作可以ssh登陆的Docker镜像,名字是centos6-ssh:
docker build -t centos6-ssh https://git.oschina.net/feedao/Docker_shell/raw/start/Dockerfile
经过前面的六个步骤,一个可以登陆的本地docker镜像就制作好了。
用户名是:root,密码是:123456
转: http://www.mamicode.com/info-detail-1521690.html
安装docker-engine出现的问题
下列软件包有未满足的依赖关系:
docker-engine : 依赖: libsystemd-journal0 (>= 201) 但无法安装它
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
解决办法:
在source.list 中docker源之前加上
sudo vim /etc/apt/sources.list
deb http://cz.archive.ubuntu.com/ubuntu trusty main su apt-get update
然后 更新和安装
docker1.12安装配置及使用笔记的更多相关文章
- docker1.12 安装pxc(Percona XtraDB Cluster )测试
docker1.12 安装pxc(Percona XtraDB Cluster )测试
- docker1.12 安装redis第三方集群方案 codis
docker1.12 安装redis第三方集群方案 codis
- gitlab centos 安装配置运维笔记
写在前面 如果你需要一个git服务器,为企业或自己的团队托管代码而又不希望将代码仓库存储到第三方.你可以在自己的服务器上搭建一个gitlab. 本文为我在最初安装配置gitlab服务器的时候留存的笔记 ...
- nginx安装配置_runoob_阅读笔记_20190917
Nginx 安装配置_runoob菜鸟教程 Nginx 安装配置 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向 ...
- mysql-8.0.12 安装+配置, Navicat Premium 12 安装+激活
1.解压到安装目录,如:D:\mysql-8.0.12-winx64 2.将以下配置文件粘贴到安装目录,并保存为my.ini,注意:使用ansi 而非utf-8编码格式保存 [mysql] # 设置m ...
- mysql 8.0.12 安装配置方法图文教程
一.安装 1.从网上下载MySQL8.0.12版本,下载地址 2. 下载完成后解压 我解压的路径是:D:\Java\mysql-8.0.12-winx64 3. 配置文件 首先在解压的路径下查看是否含 ...
- win7下MySQL的安装配置及卸载 笔记分享
一.官网下载地址:https://dev.mysql.com/downloads/mysql/ 1.选择对应版本,下载免安装版: 2.不要注册账号,点击"No thanks,just sta ...
- [2013-07-22]varnish-cache 安装配置及体验笔记
varnish安装 ubuntu12安装参考 其他系统参考 如果选择了直接从源安装的方式的话,就不要自己去编译了,以免出现意外(悲剧的我,varnishlog 有点问题,之前先编译安装了,再从源安装, ...
- 潭州课堂25班:Ph201805201 django 项目 第三十八课 后台 文章发布,FastDFS安装 配置(课堂笔记)
, .安装FastDFS # 从docker hub中拉取fastdfs镜像docker pull youkou1/fastdfs # 查看镜像是否拉取成功docker images # 安装trac ...
随机推荐
- [译林军] 译~CrossBridge 简介
本文由 9ria 社区译林军翻译,转载请注明出处.加入译林军 :http://bbs.9ria.com/thread-286920-1-1.html CrossBridge 是 Adobe Fla ...
- 解决kylin报错:java.lang.ArrayIndexOutOfBoundsException: -1
报错信息: -- ::, INFO [pool--thread-] cli.DictionaryGeneratorCLI: : Building snapshot of ENERGON_DM.DM_D ...
- 4)linux程序设计入门--时间概念
)程序设计入门--时间概念 前言:Linux下的时间概念 这一章我们学习Linux的时间表示和计算函数 时间的表示 时间的测量 计时器的使用 .时间表示 在程序当中,我们经常要输出系统当前的时间,比如 ...
- 使用Spark读写CSV格式文件(转)
原文链接:使用Spark读写CSV格式文件 CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号.在本文中的CSV格 ...
- 在Spark程序中使用压缩
当大片连续区域进行数据存储并且存储区域中数据重复性高的状况下,数据适合进行压缩.数组或者对象序列化后的数据块可以考虑压缩.所以序列化后的数据可以压缩,使数据紧缩,减少空间开销. 1. Spark对压缩 ...
- iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)
1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点 ...
- MYSQL错误1130:ERROR 1130: Host 10.10.36.115 is not allowed to connect to this MySQL server
解决远程连接mysql错误1130代码的方法 在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到,错误代码是1130,ERROR 1130: Host 10.10.36.115 is no ...
- QT在windows下的安装与配置
先了解Qt: Qt一直以来,分为商业.开源两个版本,商业版本为用户提供了二级制的动态库,直接安装既可以使用,但是需要花钱购买license,而开源版本则遵守GPL协议,提供了源码,用户需要自行编译,才 ...
- 无法对数据库'XXX' 执行删除,因为它正用于复制"的解决方
困扰二天的问题终于得以解决,貌似一个棘手的问题只要知道方法也似乎变得异常简单,记录此次的解决方法,避免遗忘. 无法对 数据库'UDS' 执行 删除,因为它正用于复制. (.Net SqlClient ...
- Easyui 判断某个Div 里的表单项是否验证通过.
var isValid = $("#divId").Form("validate"); if( isValid ){ alert("验证通过" ...