Docker实战

Posted lvxinyue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker实战相关的知识,希望对你有一定的参考价值。

docker

什么是Docker ?

  基于linux内核,基于操作系统层面的,虚拟化技术

为什么使用Docker?

  用来快速得部署项目

  占用磁盘小,启动速度快(秒级) 环境一致性好,节约开发,测试,运维的部署时间

   隔离性好,迁移更方便

  能够实现快速部署

Docker怎么用(三要素)? 

镜像:特殊的文件,包含程序,资源,配置

容器:运行在隔离环境中的进程,独立于宿主机的一个操作系统(mini操作系统,不完整)

仓库:集中存储,管理镜像的服务站

1.镜像

安装docker

1. linux内核,需要在3.10以上: uname r

2.系统升级: yum -y update

3.安装docker: yum install y docker

4.重启linux虚拟机: reboot

5.开启docker服务: systemctl start docker

6.验证docker,查看版本号: docker version

网上搜索

docker search xxxxx_name

下载

docker pull  xxxx_name

查看本地镜像

docker images

删除本地镜像

docker rmi xxxx_name(名字或者id取前四位就好)

镜像加速(换源,下载速度变快,国外网站时常下载镜像失败)

1. root账号修改服务配置

  •  vi /etc/docker/daemon.json
  • {"registry-mirrors": ["https://wixr7yss.mirror.aliyuncs.com"]}
  • systemctl daemon-reload
  • systemctl restart docker

2.在文件中添加配置:

3. 重载配置:

4.重启Docker

•      docker服务操作:启动(start),重启(restart),停止(stop)

上面的阿里云服务地址,自己可以注册:

  • https://cr.console.aliyun.com/cn-hangzhou/instances/mirro
  • 进入之后ls一下,发现里面的目录和linux差不多
  • docker start xxxx_name
  • docker stop xxxx_name
  • docker restart xxxx_name
  • -- rivileged=true容器特殊权限

!!!注意:每次进入虚拟机都需要

打开网卡

ipconfig  组合 ifup ens32   

启动docker

systemctl start docker

xxxx  stop

xxxx restart

查看启动了没:docker version

关闭防火墙

systemctl stop ?rewalld

2.容器

查看镜像

docker images

运行容器 dock_name是镜像名称

docker run -d dock_name

查看所有容器(运行中的和运行结束的)

  docker ps -a

进入容器(小的虚拟机、up状态)

  docker exec-it 容器id  bash

退出容器

  Ctrl+p+q  /  输入exit

删除容器(先stop在rm)

  docker rm xxxx_name

容器运行后的操作

启动

停止

重启

3.docker容器目录挂载(宿主机的文件目录映射到容器,方便容器访问宿主机的文件)相当于共享文件

1.docker  run -v  宿主机目录:容器目录   镜像ID/镜像名称

docker run -d -v /tmp:/home  -- rivileged=true httpd

2.查看运行的容器

  docker ps -a

3.进入容器(小的虚拟机、up状态)

  docker exec-it 容器id  bash

4.进入之后ls一下目录查看一下

4.端口映射

  docker run -p宿主机端口:容器端口 镜像ID/镜像名称

  docker run -p 8001:80 xxxx_name

5.Docker镜像nginx发布一个web页面(简单网页)

注意1:使用谷歌浏览器
注意2:网站要写全(ip,端口, 网页),写到具体网页,只写到端口是不行的(错误写法: ht
tp://192.168.80.128:8001) ,网站会提示“403 Forbidden"
注意3:必须写端口,端口前是英文的冒号,不能用中文的冒号

1. 使用xftp工具上传网页到linux目录 /tmp

2. 准备镜像 :webdevops/php-nginx(服务器)

1.docker images查看一下镜像

记住找到名字是:webdevops/php-nginx,后面启动要用

3. 启动容器

 docker run -d -p 8001:80 -v /tmp:/app  --privileged=true  webdevops/php-nginx

  • /app是nginx默认的网页发布路径 (配置文件/opt/docker/etc/nginx/vhost.conf )可以进入容器cat一下
  •  80端口是nginx默认的网页发布端口
  • 注意1:使用谷歌浏览器 ,宿主机地址要ifconfig看一下,关闭防火墙
  • 注意2:网站要写全(ip,端口,网页),写到具体网页,只写到端口是不行的(错误写法:ht tp://192.168.70.136:8001),网站会提示“403 Forbidden”
  • 注意3:必须写端口,端口前是英文的冒号,不能用中文的冒号
  • 查看有没有生成对应目录:ll /var/lib/docker/volumes/
  • docker image
  • 例子:# docker run -d -v xxx_name:/home --privileged=true httpd
  • 停止容器

4. 关闭防火墙

  systemctl stop firewalld

5. 打开浏览器访问地址

   http://宿主机的IP地址:8001/form.html

6.数据卷(比挂载目录要好,统一管理,更规范)要在容器使用时挂起

查看已有的数据卷

  docker volume ls

查看数据卷的详情信息(关键看数据卷目录mountpoint,使用数据卷的时候要用到)

  docker volume inspect 数据卷卷名

创建数据卷

  docker volume create 数据卷卷名

使用数据卷

找一个镜像

  docker  run  -v  数据卷名称:容器目录   --privileged=true  镜像ID/镜像名称

进入容器中查看(ls /home)是否使用成功(可以提前在数据卷里放一些文件,方便看)

  docker exec -it 5070(容器名称) bash

删除数据卷(数据卷的目录也被删除)

  docker volume rm xxx_name

注意:如果数据卷再被容器使用,需要先停止或者删除容器(一般会提示正在使用容器的名称)

•      docker stop xxx_name

  • 删除容器

•      docker rm xxx_name

7.Docker网络(容器间网络交互)

查看已有的docker网络

  docker network ls

新建网络

  docker network create xxxx_name

查看单个网络详情信息

  docker network inspect xxxx_name

删除网络

  docker network rm net_name

使用网络

  docker  run  --network  网络名称  镜像ID/镜像名称

8.用数据卷实现论坛网站部署

1.关闭防火墙

2.重启dvcker

3.查看已有的数据卷(volume ls)和容器(ps -a)

4.创建数据卷(twovol)

   docker volume create twovol

5.查看数据卷(twovol)将要存放文件的位置

  docker volume inspect twovol

6.xftp将文件传输到docker中,位置就是上面数据卷的位置(Discuz_X3.3_SC_UTF8.zip)

   twovol数据卷额存放文件的地址:/var/lib/docker/volumes/twovol/_data

7.切换到目录,解压

  unzip  Discuz_X3.3_SC_UTF8.zip

8.给用到的文件upload权限(ll一下)

  chmod -R 777 upload

9.数据库创建一个数据卷

  docker volume create thvol

10.准备2个镜像(docker images)

1.网站服务器:webdevops/php-apache-dev

2.数据库服务器:mysql:5.5.62

11.创建docker 网络

docker network create twonet

12.启动容器

 启动apache容器:docker run  -d -p 8086:80  -v twovol:/app  --network twonet  --privileged=true  webdevops/php-apache-dev

启动mysql容器 : docker run -d -p  3306:3306 -v thvol:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456  --network twonet --privileged=true  mysql:5.5.62

13.使用谷歌浏览器访问

http://192.xxx.xx.xx:8086/upload

以上是关于Docker实战的主要内容,如果未能解决你的问题,请参考以下文章

Maven实战技巧「Docker实战系列」使用Maven插件构建Docker镜像的方法

实战Docker到Kubernetes技术系列视频教程

Docker最全教程——从理论到实战

《Docker技术入门与实战》pdf

实战Docker 入门实战一

IDEA的Docker插件实战(Docker Image)