您的位置:首页 > 运维架构 > Docker

docker架构之初探

2016-08-30 20:32 323 查看
Docker架构理解




Docker状态转移图





Docker 逻辑数据流




Docker 修改默认存储位置

停止 Docker 服务
sudo /etc/init.d/docker stop
将原来默认的/var/lib/docker备份一下,然后复制到别的位置并建立一个软链接
cd /var/lib
sudo cp -rf docker docker.bak
sudo cp -rf docker /<my_new_location>/
sudo ln -s /<my_new_location>/docker docker
最后使用 docker info 查看更新结果

删除
docker rmi <image id>
docker rm $(docker ps -a -q)
docker stop $(docker ps -a -q)
docker kill


下载centos6镜像
docker pull centos:centos6

制作一个支持SSH终端登录的镜像

创建Dockerfile
# 选择一个已有的os镜像作为基础
FROM centos:lastest
# 镜像的作者
MAINTAINER Fanbin Kong "kongxx@hotmail.com"
# 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
# 添加测试用户admin,密码admin,并且将此用户添加到sudoers里
RUN useradd admin
RUN echo "admin:admin" | chpasswd
RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers
# 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
创建镜像 sudo docker build -t centos6-ssh .
运行docker 到后台sudo docker run -d -P --name=mytest centos6-ssh

docker run -d -p 0.0.0.0:60000:22 --name=jumpserver centos6-ssh

docker 命令

docker port mytest 22 查看当前容器的22端口对应的宿主机器的端口
docker 数据持久化

载宿主机目录 Docker支持挂载宿主机目录,支持宿主机目录和容器之间文件目录进行映射,彼此共享:
docker run -i -t -v /host/dir:/container/path ubuntu /bin/bash
在Dockerfile中,则可以使用'VOLUME'命令如创建容器时使用参数v指定一个目录,

sudo docker run -i -t --name DataTest -v /home/mungo/workspace/docker/container_data:/data docker/whalesay /bin/bash

说明数据卷容器也是Docker容器数据持久化的一种方式.正是这个特性,可以让用户方便的在容器之间升级和移动数据卷。
学的越多,越觉得之前说懂得的可笑,可是什么都要一步一步来,不积跬步无以至千里,今天就到这里

修改标签

非root用户在CentOS直接运行Docker命令不用加sudo

alias docker="sudo /usr/bin/docker"
unalias 删除别名

alias 永久生效 打开 .bashrc 写入alias 命令

Cent OS 用户sudo免密码方法

$ sudo visudo
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
qdba       ALL=(ALL)       NOPASSWD: ALL


centos 6 安装dockersudo yum install docker-io
sudo service docker start
sudo chkconfig docker on

Docker 支持 CentOS6 及以后的版本。

CentOS6

对于 CentOS6,可以使用 <a rel="nofollow" href="https://fedoraproject.org/wiki/EPEL" "="" style="box-sizing: border-box; color: rgb(45, 133, 202); text-decoration: none; background-color: transparent;">EPEL 库安装 Docker,命令如下
$ sudo yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm $ sudo yum install docker-io

CentOS7

CentOS7 系统
CentOS-Extras
库中已带 Docker,可以直接安装:
$ sudo yum install docker
安装之后启动 Docker 服务,并让它随系统启动自动加载。
$ sudo service docker start
$ sudo chkconfig docker on


报错Docker#docker dead but pid file exists

错误

查看 /var/log/docker 日志time="2015-02-10T15:26:08+08:00" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
time="2015-02-10T15:26:08+08:00" level="info" msg="WARNING: You are running linux kernel version 2.6.32-431.el6.x86_64, which might be unstable running docker. Please u
pgrade your kernel to 3.8.0.
time="2015-02-10T15:26:08+08:00" level="info" msg="Listening for HTTP on unix (/var/run/docker.sock)"
/usr/bin/docker: relocation error: /usr/bin/docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time r
eference

解决办法:执行:yum upgrade device-mapper-libs

错误[opmonitor@iZ28xr6pn3lZ ~]$ docker imagesGet http:///var/run/docker.sock/v1.19/images/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?[opmonitor@iZ28xr6pn3lZ ~]$
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  service running version