docker简单接触

Docker 是一个开源的应用容器引擎,主要利用 linux 内核 namespace 实现沙盒隔离,用
cgroup 实现资源限制。
Docker 支持三种不同的镜像层次存储的 drivers:
aufs、devicemapper、btrfs ;
Aufs:
AUFS (AnotherUnionFS) 是一种 Union FS, 简单来说就是支持将不同目录挂载到同一个虚
拟 文 件 系 统 下 (unite several directories into a single virtual filesystem) 的 文 件 系 统 。 Aufs
driver 是 docker 最早支持的 driver,但是 aufs 只是 linux 内核的一个补丁集而且不太可以会
被合并加入到 linux 内核中。但是由于 aufs 是唯一一个 storage driver 可以实现容器间共享可
执行及可共享的运行库, 所以当你跑成千上百个拥有相同程序代码或者运行库时时候,aufs
是个相当不错的选择。
Device Mapper:
Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在
该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略 ( 详
见:http://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html) 。
Device mapper driver 会创建一个 100G 的简单文件包含你的镜像和容器。每一个容器被限
制 在 10G 大 小 的 卷 内 。 ( 如 果 想 要 调 整 , 参
考 :http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/ 。 中 文 译 文 :
http://zhumeng8337797.blog.163.com/blog/static/100768914201452405120107/ )
你可以在启动 docker daemon 时用参数-s 指定 driver:
docker -d -s devicemapper ;
Btrfs:
Btufs driver 在 docker build 可以很高效。但是跟 devicemapper 一样不支持设备间共享存
储(文档里是 does not share executable memory between devices)。
在 没 有 aufs 支 持 的 linux 发 行 版 本 上 (CentOS,opensuse 等 ) 安 装 docker 可 能 就 使 用 了
devicemapper driver。

这里写图片描述

容器管理
# docker run -it --name vm1 ubuntu bash
# docker ps -a
# docker attach vm1
# docker top vm1
查看容器进程
创建容器
查看容器状态
连接容器
# docker logs vm1 查看容器指令输出 -f 参数可以实时查看
# docker inspect vm1 查看容器详情
# docker stats vm1 查看容器资源使用率
# docker diff vm1 查看容器修改# docker run -d --name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done"# docker stop vm1 停止容器
# docker start vm1 启动容器
# docker kill vm1 强制干掉容器
# docker restart vm1 重启容器
# docker pause/unpause vm1
# docker rm vm1
暂停/恢复容器
删除容器
# docker export vm1 > vm1.tar
# docker import vm1.tar image
导出容器
导入容器为镜像 image

这里写图片描述

[root@foundation53 docker]# yum install -y docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm
[root@foundation53 docker]# systemctl start docker.service 

这里写图片描述
这里写图片描述

[root@foundation53 docker]# ls
docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm          game2048.tar
docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm

这里写图片描述

[root@foundation53 docker]# docker load < game2048.tar

&&
docker load -i  game2048.tar


[root@foundation53 docker]# docker run -d --name vm1 game20489d357345ad7d71520e4ebec5047e510e6a79e454d82880308981b79678b79b58

[root@foundation53 docker]# docker inspect vm1

这里写图片描述
浏览器输入172.27.0.2
这里写图片描述

端口映射

[root@foundation53 docker]# docker ps
因为80端口已经被占用,我们用docker nginx时需要将端口映射为8080

这里写图片描述

导入nginx包
[root@foundation53 docker]# docker load -i nginx.tar 

这里写图片描述

端口映射
[root@foundation53 docker]# docker run -d --name vm2 -p 8080:80 nginx

这里写图片描述
查看历史
这里写图片描述
下载镜像
首先阿里云找到自己的镜像下载服务的专属网址

# docker search
# docker pull
# docker push
查询镜像
拉取镜像
推送镜像

这里写图片描述

[root@foundation53 docker]# cd /etc/docker/
[root@foundation53 docker]# ls
key.json
[root@foundation53 docker]# vim deamon.json
[root@foundation53 docker]# cat deamon.json 
{
  "registry-mirrors": ["https://0hll14bg.mirror.aliyuncs.com"]
重启docker


就可以搜索了

这里写图片描述

下载搜索到的模块,例如nginx
[root@foundation53 docker]# docker pull nginx



更改发布页
方法一  主动推送
[root@foundation53 ~]# vim index.html
[root@foundation53 ~]# cat index.html 
<h1>www.westos.org</h1>
[root@foundation53 ~]# docker cp index.html vm2:/usr/share/nginx/html/

这里写图片描述

方法二 链接

[root@foundation53 tmp]# cd docker/
[root@foundation53 docker]# mkdir web
[root@foundation53 docker]# cd
[root@foundation53 ~]# mv index.html /tmp/docker/web/
删除,因为要重新链接
[root@foundation53 ~]# docker rm -f vm2
vm2
[root@foundation53 web]# pwd
/tmp/docker/web
重新链接
[root@foundation53 web]# docker run -d --name vm2 -v /tmp/docker/web/:/usr/share/nginx/html -p 8080:80 nginx
1469c250b4cced442c5f192747101004f0c839f5441dad37c54b86c8f08ccc4e
更改发布页,不需推送,直接发布
[root@foundation53 web]# vim index.html 
[root@foundation53 web]# cat index.html 
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>
<h1>www.westos.org</h1>

这里写图片描述


[root@foundation53 docker]# docker load < rhel7.tar
e1f5733f050b: Loading layer 147.1 MB/147.1 MB
[root@foundation53 docker]# docker run -it --name vm3 -v /tmp/data1:/data1 -v /tmp/data2:/data2:ro -v /etc/yum.repos.d/rhel-dvd.repo:/etc/yum.repos.d/dvd.repo:ro rhel7 bash


Ls -l

这里写图片描述
这里写图片描述
bash-4.2# cd /data1/
bash-4.2# ls
bash-4.2# touch file1
这里写图片描述
这里写图片描述
bash-4.2# ls
file1 file2

bash-4.2# rm -f *
这里写图片描述
这里写图片描述

# docker images 查看本地镜像
# docker inspect 查看镜像详情
# docker save ubuntu > ubuntu.tar  导出镜像
# docker load -i ubuntu.tar  导入镜像

# docker commit   更新镜像


# docker rmi  删除镜像

容器间的互联
容器间互联:
–link 参数可以在不映射端口的前提下为两个容器间建立安全连接, –link 参数可以连接一个
或多个容器到将要创建的容器。
–link 参数的格式为 –link name:alias,其中 name 是要链接的容器的名称,alias 是这个连
接的别名。
这里写图片描述
[root@foundation53 ~]# docker run -d –name vm5 -p 8080:80 nginx
这里写图片描述

[root@foundation53 ~]# docker run -it –name vm6 –link vm5:nginx ubuntu
这里写图片描述
这里写图片描述
这里写图片描述
封装镜像
我们要封装rhel7,所以先保证rhel7的纯净
这里写图片描述

vim Dcokerfile

FROM rhel7:yum
指定基础镜像
MAINTAINER yakexi007@westos.org
作者信息
ENV HOSTNAME server1
设置容器主机名
EXPOSE 80
暴露容器端口
RUN yum install -y httpd && yum clean all
镜像操作命令
CMD [“/usr/sbin/httpd”, “-D”, “FOREGROUND”]
镜像启动命令,默认只能启动一
条。

[root@foundation53 docker]# pwd
/tmp/docker
[root@foundation53 docker]# vim Dockerfile
FROM rhel7
ENV HOSTNAME server1
MAINTAINER yayayabo@qq.com
EXPOSE 80
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum install -y httpd && yum clean all
VOLUME ["/var/www/html"]
CMD ["/usr/sbin/httpd","-D", "FOREGROUND"]


Yum源等要通过另一台测试

这里写图片描述
这里写图片描述


[root@foundation53 docker]# vim dvd.repo 
[rhel-dvd]
name="rhel7"
baseurl=http://172.25.53.250/rhel7.3
gpgcheck=0


[root@foundation53 docker]# ls
Dockerfile  dvd.repo  web


封装
[root@foundation53 docker]# docker build -t rhel7:v1 .

这里写图片描述

封装成功

这里写图片描述

创建
[root@foundation53 docker]# docker run -d --name vm9 -v /tmp/docker/web:/var/www/html rhel7:v1

这里写图片描述

查看端口
[root@foundation53 docker]# docker inspect vm9

这里写图片描述
这里写图片描述

[root@foundation53 docker]# mkdir ssh
[root@foundation53 docker]# ls
Dockerfile  dvd.repo  ssh  web
[root@foundation53 docker]# cp Dockerfile ssh/
[root@foundation53 docker]# cd ssh/
[root@foundation53 ssh]# ls
Dockerfile
[root@foundation53 ssh]# vim Dockerfile 
[root@foundation53 ssh]# cat Dockerfile 
FROM rhel7
ENV HOSTNAME server2
MAINTAINER yayayabo@qq.com
EXPOSE 22
COPY dvd.repo /etc/yum.repos.d/dvd.repo
RUN rpmdb --rebuilddb && yum install -y openssh-server openssh-clients && yum clean all && ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && ssh-keygen -q -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" && echo root:westos | chpasswd
CMD ["/usr/sbin/sshd","-D"]
[root@foundation53 ssh]# cd ..
[root@foundation53 docker]# cp dvd.repo ssh/
[root@foundation53 docker]# cd ssh/
[root@foundation53 ssh]# ls
Dockerfile  dvd.repo


[root@foundation53 ssh]# docker build -t rhel7:v2 .

[root@foundation53 ssh]# docker run -d --name vm4 rhel7:v2
21474adc70c6295d6df1c7ab7bc19e34452e4327fd51e03c0a48d38e0417591f


[root@foundation53 ssh]# docker inspect vm4

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值