设为首页 收藏本站
查看: 1478|回复: 0

[经验分享] docker 02

[复制链接]

尚未签到

发表于 2019-2-22 08:49:02 | 显示全部楼层 |阅读模式
  一、基于centos:latest创建新的镜像,新镜像已经配置好了yum并且安装了net-tools
1、基于centos起动容器
[root@vh01 docker_images]# docker run -it centos bash
2、在容器中配置yum,并安装net-tools
[root@798d29ec0d54 /]# rm -f /etc/yum.repos.d/*
[root@798d29ec0d54 /]# vi /etc/yum.repos.d/server.repo
[server]
name=server
baseurl=ftp://192.168.4.254/rhel7.2
enabled=1
gpgcheck=0
[root@798d29ec0d54 /]# yum install -y net-tools
3、将容器commit成为镜像
[root@vh01 docker_images]# docker commit 798d29ec0d54 mycentos
[root@vh01 docker_images]# docker images
4、使用新镜像起动容器,测试yum和net-tools是否可用
[root@vh01 docker_images]# docker run -it mycentos bash
[root@c492adb5fe6b /]# yum repolist
[root@c492adb5fe6b /]# ifconfig
二、通过dockerfile生成镜像
1、创建工作目录
[root@vh01 docker_images]# mkdir -p ~/mydocker/build1
[root@vh01 docker_images]# cd ~/mydocker/build1
2、编写Dockerfile
[root@vh01 build1]# vim Dockerfile
FROM centos:latest
CMD ["/bin/echo", "Hello tedu"]
3、生成镜像
[root@vh01 build1]# docker build -t mytest:latest .
4、测试
[root@vh01 build1]# docker run -it mytest
[root@vh01 build1]# docker ps
注意:容器输入hello tedu后就退出了,因为它的使命已经结束
  三、生成镜像
1、创建工作目录
[root@vh01 build1]# mkdir ~/mydocker/build2
[root@vh01 build1]# cd ~/mydocker/build2
2、编写Dockerfile
[root@vh01 build2]# vim Dockerfile
FROM mycentos:latest
MAINTAINER zzg zzg@tedu.cn
WORKDIR /var/www/html
ADD mytest.sh /root/mytest.sh
RUN yum install -y httpd
RUN yum install -y php
RUN yum install -y php-mysql
EXPOSE 80
CMD ["httpd", "-DFOREGROUND"]
3、生成镜像
[root@vh01 build2]# echo 'pwd' > mytest.sh
[root@vh01 build2]# docker build -t centos:http .
4、验证
[root@vh01 build2]# docker run -P -itd centos:http
  四、生成镜像的建议
1、每个容器只运行一个进程
2、不要假定你的容器可以一直处于运行状态,它们只是临时的,很有可能被停止
3、使用.dockerignore文件排除不想加入到镜像中的文件
4、使用官方提供的镜像,而不是自己头0制作
5、尽量减少镜像的层次
  基于镜像起动多个容器
[root@vh01 build3]# for i in {1..5}; do docker run -P -h web$i --name web$i -itd centos:apache; done
  练习:
基于centos,生成mysql镜像
[root@vh01 mydocker]# cp -r build3 build4
[root@vh01 mydocker]# cd build4
[root@vh01 build4]# vim Dockerfile
FROM mycentos:latest
MAINTAINER zzg zzg@tedu.cn
RUN yum install -y mariadb-server; mysql_install_db; chown -R mysql:mysql /var/lib/mysql
EXPOSE 3306
CMD ["mysqld_safe"]
[root@vh01 build4]# docker build -t centos:mysql .
[root@vh01 build4]#  docker run -P -itd centos:mysql
[root@vh01 build4]# docker exec -it f1ee bash
[root@f1ee66ccc591 /]# mysql -uroot
  将vh01设置成为docker仓库服务器
1、下载仓库镜像
[root@vh01 docker_images]# docker load < registry.tar
2、修改docker服务,可以使用本地仓库
[root@vh01 docker_images]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.4.1:5000
[root@vh01 docker_images]# systemctl daemon-reload
[root@vh01 docker_images]# systemctl restart docker
3、导入的registry镜像没有名称,为其添加名字
[root@vh01 docker_images]# docker tag c9bd19d022f6 registry
4、后台起动registry
[root@vh01 docker_images]# docker run -id -p 5000:5000 registry
5、镜像名称格式是:仓库名/镜像名   才能上传
[root@vh01 docker_images]# docker tag centos:apache 192.168.4.1:5000/centos:apache
[root@vh01 docker_images]# docker images
6、上传镜像到仓库
[root@vh01 docker_images]# docker push 192.168.4.1:5000/centos:apache
  准备虚拟机vh02,使期可以使用docker仓库
1、初始化vh02
vh02.tedu.cn  192.168.4.2/24  selinux  firewalld  yum
2、在vh02上安装docker,并设置其可以使用vh01提供的仓库
[root@vh01 docker]# scp rpm 192.168.4.2:/root
[root@vh02 ~]# yum install -y
rpm
[root@vh02 ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.4.1:5000
[root@vh02 ~]# systemctl daemon-reload
[root@vh02 ~]# systemctl start docker
[root@vh02 ~]# systemctl enable docker
3、下载192.168.4.1的镜像
[root@vh02 ~]# docker pull 192.168.4.1:5000/centos:apache
4、验证
[root@vh02 ~]# docker run -id 192.168.4.1:5000/centos:apache
[root@vh02 ~]# docker ps
  持久化存储
1、不要在容器里存放重要数据,应该将数据存储在宿主机上
[root@vh02 ~]# docker run -idt -P --name web1 -v /webroot/web1:/var/www/html 192.168.4.1:5000/centos:apache
[root@vh02 ~]# echo 'my test' > /webroot/web1/index.html
2、查看容器的端口号
[root@vh02 ~]# docker ps
3、访问容器的http服务
  配置存储服务器,vh01和vh02上的容器存储的数据将存放在vh03上
1、准备vh03
vh03.tedu.cn  192.168.4.3  selinux  firewalld  yum
2、创建nfs共享目录
[root@vh03 ~]# mkdir -m 777 /nfsroot
3、安装nfs服务
[root@vh03 ~]# yum install -y nfs-utils
4、配置共享声明
[root@vh03 ~]# vim /etc/exports
/nfsroot        192.168.4.*(rw,sync)
5、起动服务
[root@vh03 ~]# systemctl restart nfs-server.service
6、查看输出列表
[root@vh03 ~]# showmount -e 192.168.4.3
7、在vh01和vh02上将共享目录永久挂载到/dockdir
[root@vh01 docker]# mkdir /dockdir
[root@vh01 docker]# tail -1 /etc/fstab
192.168.4.3:/nfsroot    /dockdir    nfs defaults    0 0
[root@vh01 docker]# mount -a
8、起动容器,将容器的卷对应到nfs共享中
[root@vh01 docker]# docker run -idt -P -v /dockdir/vh01/web1:/var/www/html 192.168.4.1:5000/centos:apache
[root@vh02 ~]# docker run -idt -P -v /dockdir/vh02/web1:/var/www/html 192.168.4.1:5000/centos:apache
  创建自定义网络
1、创建名为test02的网络,ip地址使用172.30.0.0/24
docker network create --subnet=172.30.0.0/16 test02
  2、起动容器,指定连接的网桥是test02
docker run --network=test02 -idt 192.168.4.1:5000/centos:apache
docker inspect




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675559-1-1.html 上篇帖子: Rolling Update 下篇帖子: Docker Compose 配置文件详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表