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

[经验分享] Docker18.09版本练习

[复制链接]

尚未签到

发表于 2019-2-20 10:11:59 | 显示全部楼层 |阅读模式

一.docker安装
yum install -y yum-utils  device-mapper-persistent-data  lvm2   依赖

  yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo     安装源
  yum install docker-ce -y
  [root@server1 ~]# systemctl start docker
[root@server1 ~]# systemctl enable docker

  配置daocloud镜像加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
[root@server1 ~]# vim /etc/docker/daemon.json

  二.docker简单命令总结

导出镜像

倒入镜像

容器相关选项

容器管理命令

  容器资源限制选项

  例:

注:一个宿主机跑多个容器,这个资源限制需要做,运行中也可以使用update进行更新重新设置。
  三.dockerfile介绍


  例1:用dockerfile创建一个yum    nginx容器
创建前,用一个下载好的centos镜像,安装net-tools iproute等工具
docker commit centos centos:v1

  创建dockerfile
FROM centos:v1  原封装号的镜像
MAINTAINER an  作者
RUN yum install -y epel-release.noarch &>/dev/null 安装epel源
RUN yum install -y nginx &>/dev/null  安装nginx
COPY index.html /usr/share/nginx/html  复制默认网页
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"] nginx以前台方式一直运行
EXPOSE 80 暴露端口80

查看创建好的镜像

  运行创建好的镜像

  例2:用dockerfile创建一个源码安装的  nginx容器

  创建dockerfile
[root@server1 nginx]# cat Dockerfile
FROM centos
MAINTAINER an
RUN yum install -y gcc gcc-c++ make \
openssl-devel pcre-devel gd-devel \
iproute net-tools telnet wget curl && \
yum clean all && \
rm -rf /var/cache/yum/
RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \
tar zxf nginx-1.15.5.tar.gz && \
cd nginx-1.15.5 &&\
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module && \
make -j 2 && make install && \
rm -rf /usr/local/nginx/html/
&& \
echo "ok" >> /usr/local/nginx/html/index.html && \
cd / && rm -rf nginx-1.12.2* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  ENV PATH $PATH:/usr/local/nginx/sbin
#COPY nginx.conf /usr/local/nginx/conf/nginx.conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
  最后创建镜像nginx:v1
docker build -t nginx:v1 .
  使用nginx:v1创建一个项目镜像

创建项目镜像nginx:v2
docker build -t nginx:v2 .
使用新镜像
docker run -d --name nginx02 -p 80:80 nginx:v2
  例3:用dockerfile创建一个源码安装的  php容器

  创建dockerfile
[root@server1 php]# cat Dockerfile
FROM centos
MAINTAINER an
RUN yum install epel-release -y && \
yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
libcurl-devel libjpeg-devel libpng-devel openssl-devel \
libmcrypt-devel libxslt-devel libtidy-devel autoconf \
iproute net-tools telnet wget curl && \
yum clean all && \
rm -rf /var/cache/yum/*
  RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && \
tar zxf php-5.6.36.tar.gz && \
cd php-5.6.36 && \
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm --enable-opcache \
--with-mysql --with-mysqli --with-pdo-mysql \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-freetype-dir \
--enable-mbstring --with-mcrypt --enable-hash && \
make -j 4 && make install && \
cp php.ini-production /usr/local/php/etc/php.ini && \
cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \
sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \
mkdir /usr/local/php/log && \
cd / && rm -rf php* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  ENV PATH $PATH:/usr/local/php/sbin:/usr/local/php/bin
COPY php.ini /usr/local/php/etc/
COPY php-fpm.conf /usr/local/php/etc/
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["php-fpm"]
  注:
这里也是将daemon模式关闭了,/usr/local/php/sbin/php-fpm在前台运行
构建镜像
docker build -t php:v1 .
启动镜像
docker run -d --name php01 php:v1
  例4:用dockerfile创建一个tomcat容器
[root@server1 tomcat]# ls
Dockerfile
[root@server1 tomcat]# cat Dockerfile
FROM centos
MAINTAINER an
  ENV VERSION=8.0.46
  RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \
yum clean all && \
rm -rf /var/cache/yum/*
  RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \
tar zxf apache-tomcat-${VERSION}.tar.gz && \
rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \
mkdir /usr/local/tomcat/webapps/test && \
echo "ok" > /usr/local/tomcat/webapps/test/status.html && \
sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  ENV PATH $PATH:/usr/local/tomcat/bin
  WORKDIR /usr/local/tomcat
  EXPOSE 8080
CMD ["catalina.sh", "run"]
  创建镜像
docker build -t tomcat:v1 .
启动镜像
docker run -d --name tomcat01 -p 8089:8080 tomcat:v1
  使用tomcat:v1创建一个jenkins项目镜像

  创建jenkins镜像
docker built -t jemkins:v1 .
启动镜像
docker run -d --name jenkins01 -p 8088:8080 jemkins:v1
  四.docker 存储Volume
提供独立于容器之外的持久化存储
1.不指定挂载映射目录,默认的路径为 /var/lib/docker/volumes下
docker run -d --name nginx -v /usr/share/nginx/html docker.io/nginx
例:挂载/usr/share/nginx/html

查看挂载信息

可以直接看挂载目录下的文件

  在宿主机对index.html文件进行修改

  进入容器查看默认网页已经变为我们修改的docker123

  2.为指定挂载目录 docker run -v $PWD/code: /usr/share/nginx/html nginx
  将/root/d2 挂载到容器里的 /usr/share/nginx/html目录下

  在指定目录下创建默认网页

测试并查看镜像里的文件,已经正确挂载

  3.docker run --volumes-from容器挂载共享数据目录
  注:docker create命令能够基于镜像创建容器。
该命令执行的效果类似于docker run -d,即创建一个将在系统后台运行的容器。
但是与docker run -d不同的是,docker create创建的容器并未实际启动,还需要执行docker start命令或docker run命令以启动容器。

  例:创建一个docker共享数据目录,映射到/var/mydata,可以理解为创建了一个docker的共享盘,共享盘映射宿主机的data目录

创建一个新容器与共享数据容器相连
交互式连接后查看挂载点

  进入到/var/mydata目录下创建文件

创建完退出,查看宿主机data目录,已经有数据

  4.宿主机数据挂载到容器中Volume
在宿主机上创建数据卷,挂载到容器上
  首先创建数据卷

  这个容器数据卷可以被一个或者多个数据卷挂载,查看数据卷属性

  用上述的创建的盘,挂载到nginx容器上,新版本用的是mount,老版本使用的是-v挂载

  [root@server1 ~]# docker inspect nginx01  查看挂载情况

  宿主机的数据卷已经有里头的数据了

  注:这样容器坏了,由于数据在宿主机的数据卷上,所以没有事,这个数据卷也可以挂载到多个容器上共享数据内容
  删除数据卷:
docker volume rm nginx_vol
  五.registry仓库

与仓库交互
docker search  nginx  搜索nginx镜像
docker pull nginx 拉取nginx镜像
docker push an/nginx 上传nginx自制镜像
  六.多容器app    docker compose介绍
yum install -y docker-compose  安装
  docker-compose --version   查看版本

  常用字段

  常用命令

  例1:compose创建lnmp

  [root@server1 compose_lnmp]# cat docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:

  • 81:80
    networks:
  • lnmp
    volumes:
  •   ./wwwroot:/usr/local/nginx/html
      php:
    hostname: php
    build:
    context: ./php
    dockerfile: Dockerfile
    networks:
  • lnmp
    volumes:
  •   ./wwwroot:/usr/local/nginx/html
      mysql:
    hostname: mysql
    image: mysql:5.6
    ports:
  • 3306:3306
    networks:
  • lnmp
    volumes:
  • ./mysql/conf:/etc/mysql/conf.d
  • ./mysql/data:/var/lib/mysql
    command: --character-set-server=utf8
    environment:
    MYSQL_ROOT_PASSWORD: 123456
    MYSQL_DATABASE: wordpress
    MYSQL_USER: user
    MYSQL_PASSWORD: user123
  networks:
lnmp:
  查看nginx目录

  查看php目录

  查看mysql,mysql   yum安装

  执行docker-compose文件
[root@server1 compose_lnmp]# docker-compose -f docker-compose.yml up
构建完使用docker-compose ps查看
[root@server1 compose_lnmp]# docker-compose ps
  例2:compose创建nginx+tomcat

  [root@server1 compose_nginx_tomcat]# cat docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:

  • 82:80
    networks:
  • lnmt
    volumes:
  •   ./webapps:/opt/webapps
      tomcat01:
    hostname: tomcat01
    build: ./tomcat
    networks:
  • lnmt
    volumes:
  • /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
  •   ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
      tomcat02:
    hostname: tomcat02
    build: ./tomcat
    networks:
  • lnmt
    volumes:
  • /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
  •   ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
      mysql:
    hostname: mysql
    image: mysql:5.6
    ports:
  • 3307:3306
    networks:
  • lnmt
    volumes:
  • ./mysql/conf:/etc/mysql/conf.d
  • ./mysql/data:/var/lib/mysql
    environment:
    MYSQL_ROOT_PASSWORD: 123456
    MYSQL_DATABASE: db
    MYSQL_USER: user
    MYSQL_PASSWORD: user123
  networks:
lnmt:
  注:

  • /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
    保证容器体积,将宿主机的java环境给容器用
  查看nginx目录

  查看tomcat目录





运维网声明 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-674748-1-1.html 上篇帖子: 使用docker搭建LAMP环境 下篇帖子: 基于flask的简单web服务器 docker化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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