Linux下部署docker记录(0)-基础环境安装
以下是centos系统安装docker的操作记录
1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker
安装epel源
[root@docker-server ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
[root@docker-server ~]# rpm -ivh epel-release-latest-6.noarch.rpm
[root@docker-server ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[root@docker-server ~]# sed -i 's/^#baseurl/baseurl/g' /etc/yum.repos.d/epel.repo
[root@docker-server ~]# sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/epel.repo
安装docker-io
[root@docker-server ~]# yum install docker-io -y
修改docker镜像和容器存储路径
[root@docker-server ~]# vim /etc/sysconfig/docker
------------
other_args="--graph=/docker" //配置这一行
------------
启动docker
[root@docker-server ~]# service docker start
[root@docker-server ~]# chkconfig docker on
[root@docker-server ~]# ps -ef|grep docker
root 36263 1 7 19:35 pts/0 00:00:00 /usr/bin/docker -d --graph=/docker
root 36413 34216 0 19:35 pts/0 00:00:00 grep --color docker
[root@docker-server ~]# ls /docker/
containers devicemapper graph init linkgraph.db repositories-devicemapper tmp trust volumes
获取官方centos或ubuntu镜像。
这里需要特别说明下:通过实测发现,现在在centos6下的docker获取镜像失败,在centos7下的docker获取镜像可以。
所以一般建议在centos7下部署docker环境,然后docker获取centos6的容器镜像(centos7容器镜像有不少坑)
[root@docker-server ~]# docker pull centos
[root@docker-server ~]# docker pull ubuntu
[root@docker-server ~]# docker images //查看本地镜像
运行一个docker容器,centos为系统,/bin/bash为执行的命令
[root@docker-server ~]# docker run -i -t centos /bin/bash
[root@docker-server ~]# docker run -i -t ubuntu /bin/bash
[root@docker-server ~]# docker -v //版本不是最新版的
Docker version 1.7.1, build 786b29d/1.7.1
上面是centos6系统下做法。如果是centos7的话,直接yum install docker即可安装。
2)第二种方法:安装Docker官方的最新发行版(推荐在centos7下采用这种方法安装最新版本的docker)
[root@docker-server ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@docker-server ~]# curl -sSL https://get.daocloud.io/docker | sh
[root@docker-server ~]# chkconfig docker on
[root@docker-server ~]# systemctl start docker
[root@docker-server ~]# systemctl stop docker //关闭
[root@docker-server ~]# systemctl restart docker //重启
安装过程结束后,可执行下面命令验证安装的状态。
如果看到输出 active (running) 就表示安装成功。
[root@docker-server ~]# systemctl status docker
查看docker版本
[root@docker-server ~]# docker -v //最新版本
Docker version 1.12.5, build 7392c3b
获取官方centos或ubuntu镜像
[root@docker-server ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
45a2e645736c: Pull complete
Digest: sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88f7600bf19c688c38799
Status: Downloaded newer image for centos:latest
[root@docker-server ~]# docker images //查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 67591570dd29 2 weeks ago 191.8 MB
上面在centos7下安装的docker,如果在获取centos容器镜像的时候不指定版本,那么下载下来的容器镜像默认也是centos7版本;
但是可以在获取镜像的时候指定版本,比如:
[root@linux-node2 ~]# docker pull centos:centos6
centos6: Pulling from library/centos
32c4f4fef1c6: Pull complete
Digest: sha256:1092df198d3da4faccc0660941b763ce5adf133b0ec71701b760d6f173c1f47b
Status: Downloaded newer image for centos:centos6
[root@linux-node2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 67591570dd29 2 weeks ago 191.8 MB
centos centos6 8315978ceaaa 8 weeks ago 194.6 MB
daocloud.io/daocloud/daocloud-toolset latest 1ab33797d8a1 8 months ago 150.2 MB
还可以如下获取镜像
docker pull ubuntu
docker pull ubuntu:14.04
docker pull ubuntu:latest
docker pull centos:latest
docker pull centos:7.1
docker pull centos:6.5
docker pull centos:6.8
docker pull centos:6
docker pull centos:7
启动容器,并且进入到centos容器的bash命令。
启动时的现象:其实相当于启动了一个虚拟机;
[root@linux-node2 ~]# docker run -i -t centos /bin/bash
[root@fd81256d3c96 /]# echo "welcome to docker"
welcome to docker
[root@8f65f826ad80 /]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
通过docker ps命令可以列出当前所有正在运行的container
[root@linux-node2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd81256d3c96 centos "/bin/bash" About a minute ago Up About a minute focused_bose
下面命令将会停止上面启动的实例,这样就会自动强制退出容器
[root@linux-node2 ~]# docker stop fd81256d3c96
fd81256d3c96
[root@linux-node2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
其他:
docker ps -l //列出最近一次启动的,且正在运行的container
docker ps -a //列出所有的container
docker run -p 80:8080 <image> <cmd> //映射容器的8080端口到宿主机的80端口
docker rm `docker ps -a -q` //删除所有容器
docker rm $CONTAINER_ID //删除容器id为CONTAINER_ID的容器
docker images //查看本地镜像
docker attach $CONTAINER_ID //启动一个已存在的docker实例
docker stop $CONTAINER_ID //停止docker实例(或者直接退出容器登陆;不然这个命令执行后也会强制退出容器的登陆)
docker logs $CONTAINER_ID //查看docker实例运行日志,确保正常运行
docker inspect $CONTAINER_ID //查看container的实例属性,比如ip等等
------------------------------------------------------------------------------------------------------------------------
如下:举例说明在docker下部署nginx
宿主机上执行下面命苦:启动容器,进入centos容器的/bin/bash命令,并且会映射container的8080端口到宿主机的8888端口
/home/wangshibo/docker为要挂载的宿主机本地目录(如果提前不创建,也会自动生成的);
/home/mycontainer为docker映射路径,即在容器里的路径。这个和上面挂载宿主机的文件夹里内容一样!
[root@linux-node2 ~]# docker run -t -i -v /home/wangshibo/docker:/home/mycontainer:rw -p 8888:8080 centos /bin/bash
[root@8f65f826ad80 /]# yum install -y wget lsof vim
添加CentOS 7 Nginx yum资源库,然后安装nginx
[root@8f65f826ad80 /]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@8f65f826ad80 /]# yum install -y nginx
[root@8f65f826ad80 conf.d]# pwd
/etc/nginx/conf.d
[root@8f65f826ad80 conf.d]# cat test.conf
server {
listen 8080;
server_name localhost;
location / {
root /var/www/html;
index index.html;
}
}
[root@8f65f826ad80 conf.d]# mkdir -p /var/www/html
[root@8f65f826ad80 conf.d]# cat /var/www/html/test.html
this is nginx page of docker!!
启动/关闭/重启nginx:systemctl start/stop/restart nginx.service
开机启动nginx:systemctl enable nginx.service
网站文件存放默认目录:/usr/share/nginx/html
网站默认站点配置:/etc/nginx/conf.d/default.conf
自定义Nginx站点配置文件存放目录:/etc/nginx/conf.d/
Nginx全局配置:/etc/nginx/nginx.conf
启动nginx,有如下报错
[root@8f65f826ad80 conf.d]# systemctl start nginx.service
Failed to get D-Bus connection: Operation not permitted
--------------------------------------------------------------------------------------------------------------------
这是centos7容器里面出现的一个BUG!
即centos7镜像创建的容器里面安装服务后,不能用systemctl/service启动服务,centos6的容器里没有这个坑!
可以通过使用其他的方式启动或者换用centos6的镜像来避免这个错误。
解决方案如下:
原因是dbus-daemon没能启动。其实systemctl并不是不可以使用,可以将你的CMD或者entrypoint设置为/usr/sbin/init即可。
这样就会自动将dbus等服务启动起来。即采用 /usr/sbin/init自动启动dbus daemon
下面这个命令会一直在执行中,不能停止这个命令
[root@linux-node2 ~]# docker run --privileged -t -i -v /home/wangshibo/docker:/home/mycontainer:rw -p 8888:8080 centos /sbin/init
保证上面的命令执行后,可以查到它的容器ID(这个ID就是nginx所在容器的ID)
[root@linux-node2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaf66f1e43ab centos "/sbin/init" 16 seconds ago Up 15 seconds 0.0.0.0:8888->8080/tcp hungry_khorana
接着在另一个终端窗口下执行下面命苦:即通过上面容器ID进入到它的/bin/bash命令下
[root@linux-node2 ~]# docker exec -it eaf66f1e43ab /bin/bash
[root@eaf66f1e43ab /]#
然后就接着安装nginx的操作了(从上面的yum install -y wget lsof vim开始重新操作)
--------------------------------------------------------------------------------------------------------------------
如上解决后,再次启动nginx
[root@eaf66f1e43ab /]# systemctl start nginx.service
[root@eaf66f1e43ab /]# ps -ef|grep nginx
root 229 1 0 09:43 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx 230 229 0 09:43 ? 00:00:00 nginx: worker process
root 233 87 0 09:43 ? 00:00:00 grep --color=auto nginx
[root@eaf66f1e43ab /]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 229 root 7u IPv4 60407703 0t0 TCP *:webcache (LISTEN)
nginx 230 nginx 7u IPv4 60407703 0t0 TCP *:webcache (LISTEN)
记得在宿主机的防火墙上开启8888端口:
[root@linux-node2 home]# vim /etc/sysconfig/iptables
.......
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT
[root@linux-node2 home]# systemctl restart iptables.service
验证访问(宿主机ip假设为110.117.88.99)

检查下容器创建时映射目录和挂载目录情况:
[root@eaf66f1e43ab ~]# ll /home/mycontainer/
total 0
[root@eaf66f1e43ab ~]# echo "123456" > /home/mycontainer/test
[root@eaf66f1e43ab ~]# cat /home/mycontainer/test //容器里面的情况
123456
[root@linux-node2 ~]# cat /home/wangshibo/docker/test //容器外挂载到宿主机目录下的情况
123456
可以将这个docker主机添加到DaoCloud云平台里面管理

------------------------------------------------------------------------------------------------------------------------
以下是Ubuntu 12.04以上系统安装docker环境的操作记录
安装方法一
ubuntu14.04以上的版本都是自带docker安装包的,所以可以直接安装,但一般也不是最先版本。
[ubuntu@localhost:~]$ sudo apt-get update
[ubuntu@localhost:~]$ sudo apt-get install docker.io
安装方法二
安装 Docker 官方的最新发行版
[ubuntu@localhost:~]$ curl -sSL https://get.daocloud.io/docker | sh
安装过程结束后,可执行下面命令验证安装结果。如果看到输出 docker start/running 就表示安装成功。
[ubuntu@localhost:~]$ sudo service docker status
--------------或者使用下面的安装,也是最新版的docker--------------------
[ubuntu@localhost:~]$ sudo apt-get update
[ubuntu@localhost:~]$ curl -s https://get.docker.io/ubuntu/ | sudo sh
这个方法启动docker若出现下面错误;
FATA[0000] Error loading docker apparmor profile: fork/exec /sbin/apparmor_parser: no such file or directory ()
别担心,请安装apparmor软件即可
[ubuntu@localhost:~]$ sudo apt-get install apparmor
Linux下部署docker记录(0)-基础环境安装的更多相关文章
- Linux下部署docker记录(1)-Volume使用
之前部署了Linux下部署docker记录(0)-基础环境安装,接下来看看Docker Volume的使用. Docker volume使用1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文 ...
- Linux下一键安装包的基础上安装SVN及实现nginx web同步更新
Linux下一键安装包的基础上安装SVN及实现nginx web同步更新 一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install sub ...
- Linux下搭建gtk+2.0开发环境
安装gtk2.0 sudo apt-get install libgtk2.0-dev 查看 2.x 版本 pkg-config --modversion gtk+-2.0 #有可能需要sudo ap ...
- Linux下搭建gtk+2.0开发环境
1.执行如下命令,检查系统是否已安装gtk+ pkg-config --list-all |grep gtk 若命令提示如下,则系统已安装gtk+,否则未安装. 2.若未安装,则执行如下命令进行安装 ...
- Linux下部署Kafka分布式集群,安装与测试
注意:部署Kafka之前先部署环境JAVA.Zookeeper 准备三台CentOS_6.5_x64服务器,分别是:IP: 192.168.0.249 dbTest249 Kafka IP: 192. ...
- linux 下 SpiderMonkey 1.7.0 编译和安装
wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz tar xf js-1.7.0.tar.gz cd js/src make ...
- Linux下部署多个Tomcat(完整)
Linux下部署多个Tomcat 1.环境:1.1.Centos 5.01.2.apache-tomcat-6.0.18 2.需要解决一下几个问题2.1.不同的tomcat启动和关闭监听不同的端口2. ...
- Linux下部署SSM,通过启动tomcat即可运行
Linux下部署SSM项目 1. Java环境配置(JRE&JDK) 安装JDK8:sudo yum install java-1.8.0-openjdk 将操作系统配置为默认使用JDK8:s ...
- Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录
一.基础知识梳理MUA (Mail User Agent) MUA 既是"邮件使用者代理人",因为除非你可以直接利用类似 telnet 之类的软件登入邮件主机来主动发出信件,否则您 ...
随机推荐
- java Byte[] to String(hex)
1. 字节数组转换成16进制字符展示 2.代码 package com.goodfan; public class ByteArrayToString { private static char[] ...
- 在多行列表中id同名的<a>标签点击事件处理方法
Struts2标签 问题描述:最近项目中在使用struts迭代标签动态生成列表的过程中,由于每一行li元素中包含<a>超链接,如下图 一开始超链接是这样的<a href=“#” id ...
- Lind.DDD敏捷领域驱动框架~Lind.DDD各层介绍
回到目录 Lind.DDD项目主要面向敏捷,快速开发,领域驱动等,对于它的分层也是能合并的合并,比之前大叔的框架分层更粗糙一些,或者说更大胆一些,在开发人员使用上,可能会感觉更方便了,更益使用了,这就 ...
- Lind.DDD.Utils.HttpHelper里静态对象引出的Http超时问题
回到目录 Lind.DDD.Utils.HttpHelper组件主要实现了对HTTP的各种操作,如Get,Post,Put和Delete,它属于最纯粹的操作,大叔把它封装的目的主要为了实现与API安全 ...
- java语言中Object转为String的几种形式
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object.toString(),(String)要转换的对象,St ...
- javascript如何设置DIV背景色为随机色
随机色有两种格式: 效果预览:http://wjf444128852.github.io/DEMOLIST/JS/test/index.html 1.rgb(xxx,xxx,xxx) 2.#xxxxx ...
- 1-1 node 基础
1.什么是nodejs? 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js ...
- 国内好用的maven仓库,添加到本地nexus中
速度快的maven仓库真的难找,国外网站很多被封了.前天在网上找,有人说阿里有个公开的,速度很快.确实很快! 我添加到本地nexus中,结果不能更新索引,我是这么添加的,如下: 这个地址在浏览器中能够 ...
- Event 8306 5021 5059 5057发布安全令牌时异常
现象:站点访问一个,应用程序池就自动停掉一个 日志报错 解决: 1.受域策略影响,作为批处理作业登录选项被锁定,需修改域策略: 更新后: 2.确保程序池账户倒在IIS_IUSER组 ...
- Android开发的小技巧,在Android Studio中使用Designtime Layout Attributes
在编写xml文件时,为了预览效果,经常会使用默认填上一些内容,比如TextView时,随便写上一个text <TextView ... android:text="Name:" ...