docker架构之初探
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镜像
dockerpull 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 安装docker
[*]sudo 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-ioCentOS7
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
错误
$ docker images
Get 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?
$
页:
[1]