一、Docker 简介:

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

什么是Docker?

Docker特点:

  • (1)上手快
  • (2)职责的逻辑分类
  • (3)快速高效的开发生命周期
  • (4)鼓励使用面向服务的架构

Docker组件:

Docker客户端和服务器

Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker提供了一个命令行工具Docker以及一整套RESTful API。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

二、Docker安装与启动

在VMware Workstation中安装CentOS7

使用ip addr命令查看本地IP:

 ip addr

使用yum命令在线安装Docker:

yum install docker

安装后查看Docker版本:

docker -v

启动与停止Docker

前提:docker是一个C/S架构,操作docker必须先启动docker 服务端
systemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。

  • 启动docker:
systemctl start docker
  • 停止docker:
systemctl stop docker
  • 重启docker:
systemctl restart docker
  • 查看docker状态:
systemctl status docker
  • 开机启动:
systemctl enable docker

三、 Docker镜像操作

列出docker下的所有镜像:

docker images

  • REPOSITORY:镜像所在的仓库名称
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建日期(不是获取该镜像的日期)
  • SIZE:镜像大小
  • 这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

    搜索镜像:
docker search 镜像名称

  • NAME:仓库名称
  • DESCRIPTION:镜像描述
  • STARS:用户评价,反应一个镜像的受欢迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

使用命令拉取镜像:

docker pull centos:7

查看所有镜像:

docker images

添加ustc的镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

https://lug.ustc.edu.cn/wiki/mirrors/help/docker

步骤:

  • (1)编辑该文件:vi /etc/docker/daemon.json //
    如果该文件不存在就手动创建;说明:在centos7.x下,通过vi。
  • (2)在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

(3)注意:一定要重启docker服务,如果重启docker后无法加速,可以重新启动OS
然后通过docker pull命令下载镜像:速度杠杠的。

  • 删除指定镜像
docker rmi $IMAGE_ID

查看zookeeper镜像是否已经删除:

删除所有镜像

docker rmi `docker images -q`

操作原理:先查询出所有镜像ID ,在进行删除

列出所有镜像ID

docker images -q

四、 Docker容器操作

查看容器

查看正在运行容器:

docker ps

查看所有的容器(启动过的历史容器):

docker ps -a

查看最后一次运行的容器:

docker ps –l

查看停止的容器:

docker ps -f status=exited

创建与启动容器

创建容器常用的参数说明:

创建容器命令:

docker run
  • -i:表示运行容器

  • -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

  • –name :为创建的容器命名。

  • -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

  • -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

  • -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

交互式容器

原理:创建容器并进入容器,退出容器,服务停止。
创建一个交互式容器并取名为mycentos

docker run -it --name=mycentos centos:7 /bin/bash

注:–name=mycentos指的是容器名称 centos:7 镜像名称 执行命令完成后,就已经进入centos7容器了,和宿主机centos7一样,只不过一个是宿主机,另一个是容器而已。
复制会话,这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态
执行命令:docker ps

使用exit命令 退出当前容器

然后用ps -a 命令查看发现该容器也随之停止:

守护式容器

前提:创建容器,不进行容器,后台启动,只要不关闭容器,容器就一直处于启动状态。
创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):

docker run -di --name=mycentos1 centos:7


查看容器是否启动:

登录守护式容器方式:

docker exec -it container_name (或者 container_id)  /bin/bash

(exit退出时,容器不会停止)

退出容器:

查看状态:

从图中可以看出,exit退出容器,mycentos1容器,还是可以正常处于启动状态。

停止与启动容器

停止正在运行的容器:

docker stop $CONTAINER_NAME/ID


执行命令容器停止后,查看容器启动状态:

启动已运行过的容器:

docker start $CONTAINER_NAME/ID

前提:先查看那些容器启动过

查看启动过的容器:

docker ps -a


在执行启动以前启动过的容器命令:

docker start mycentos1

文件拷贝

前提:容器服务必须启动才可以进行文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或目录 容器名称:容器目录

案例演示:
在宿主机上创建/testfile文件:
执行命令:

echo 123 > testfile


把宿主机testfile文件复制到mycentos1 /usr/loca目录下:
执行命令:

docker cp testfile mycentos1:/usr/local


登录容器查看文件在/usr/lcoal目录下面是否存在:
登录mycentos1容器:


也可以将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
案例演示:
先把宿主机上的testfile文件删除,在从mycentos1容器中将mycentos1 /usr/lcoal 目录下面的testfile文件复制到宿主机上。
第一步:删除宿主机上的testfile文件:

第二步:将mycentos1容器中将mycentos1 /usr/lcoal 目录下面的testfile文件复制到宿主机上。
执行命令:

docker cp mycentos1:/usr/local/testfile newTestfile
docker cp mycentos1:/usr/local/test2 /usr

格式:docker cp 容器名:目录下的文件/目录 文件名/目录名

注:后台的文件名如果不一致,代表重命名

目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。
创建容器 添加-v参数 后边为 宿主机目录:容器目录

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7

格式1:docker run -di -v 宿主机目录:容器目录 –name=新的容器名 镜像名称:tag
格式2:docker run -di –name=新的容器名 -v 宿主机目录:容器目录 镜像名称:tag
案例演示01:
1、在宿主机/usr/local/myhtml创建目录:

2、创建一个新的容器与宿主机进行目录挂在,也就是目录共享,改变宿主机挂在目录下的文件,容器中的文件随之改变。
执行命令:

docker run -di --name=mycentos2 -v /usr/local/myhtml/:/usr/local/nh centos:7

格式:docker run -di --name=新的容器名 -v 宿主机目录:容器目录 镜像名称:tag

查看刚启动的容器:

登录容器,查看在/usr/lcoal容器目录下面是否存在nh目录:

在宿主机的/usr/local/myhtml目录下,添加index.html文件:

登录容器,查看在,mycentos2容器的/usr/local/nh/目录下面是否存在index.html

案例演示02(重点):
上传cas文件夹到宿主机挂载目录/usr/local/myhtml下面,登录容器,查看文件?

先查看运行的容器,登录容器,查看:

注:如果你共享的是多级的目录,可能会出现权限不足的提示。
解决方案:这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题

docker run -di --name=mycentos3 -v /usr/local/myhtml/:/usr/local/mh --privileged=true centos:7


查看容器是否启动:

登录容器,查看文件是否有权限:

可以正常查看文件!!!

4.6查看容器IP地址
我们可以通过以下命令查看容器运行的各种数据

docker inspect mycentos2


注:此命令需要在宿主机上执行,容器内部无效。

也可以直接执行下面的命令直接输出IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2


4.7删除容器
删除指定的容器:

docker rm $CONTAINER_ID/NAME


注意,只能删除停止的容器
效果图:

删除所有容器:

docker rm `docker ps -a -q`

五、部署应用

5.1 MySQL部署
5.1.1拉取MySQL镜像

docker pull mysql


查看镜像

5.1.2创建MySQL容器

docker run -di –name=pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql


-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码
5.1.3进入MySQL容器,登陆MySQL
进入mysql容器

docker exec -it pinyougou_mysql /bin/bash


在容器中,登陆mysql

mysql -u root -p


在容器中,退出mysql,然后从容器中退出到宿主机:

查看,正在运行的容器:

5.1.4远程登陆MySQL
(1)我们在我们本机的电脑上去连接虚拟机Centos中的Docker容器,这里192.168.45.13是虚拟机操作系统的IP

(2)在本地客户端执行建库脚本
执行“资源/建库语句/pinyougoudb.sql”

(1)我们在我们本机的电脑上去连接虚拟机Centos中的Docker容器,这里192.168.45.142是虚拟机操作系统的IP

(2)在本地客户端,创建数据库病,执行建库脚本
执行“资源/建库语句/pinyougoudb.sql”





5.1.5查看容器IP地址
我们可以通过以下命令查看容器运行的各种数据
docker inspect pinyougou_mysql

运行效果如下:

我们可以看到我们的数据库服务器的IP是172.17.0.3
5.2 tomcat部署
5.2.1拉取tomcat镜像
docker pull tomcat:7-jre7
5.2.2创建tomcat容器
创建容器用于部署单点登录系统(CAS) -p表示地址映射:
docker run -di --name=pinyougou_tomcat -v /usr/local/myhtml/:/usr/local/tomcat/webapps --privileged=true -p 9000:8080 tomcat:7-jre7

docker run -di --name=pinyougou_tomcat -v /usr/local/myhtml/:/usr/local/tomcat/webapps --privileged=true -p 9000:8080 tomcat:7-jre7

格式:
–privileged=true :权限赋予
9000:8080:端口映射
7-jre7 指:tag

查看tomcat容器启动状态:docker ps

浏览器验证:
http://192.168.45.142:9000/cas/login

5.2.3部署web应用
(1)修改cas系统的配置文件,修改数据库连接的url

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"p:driverClass="com.mysql.jdbc.Driver"p:jdbcUrl="jdbc:mysql://172.17.0.3:3306/pinyougoudb?characterEncoding=utf8"p:user="root"p:password="root" />

测试:地址栏输入:http://192.168.45.142:9000/cas/login
tomcat和mysql联通:


5.3 Nginx部署
5.3.1拉取Nginx镜像
docker pull nginx
5.3.2创建Nginx容器
docker run -di --name=pinyougou_nginx -p 80:80 nginx/bin/bash


5.3.3测试Nginx
浏览器地址栏输入: http://192.168.45.142

5.3.4配置反向代
官方的nginx镜像,nginx配置文件nginx.conf 在/etc/nginx/目录下。
在容器内编辑配置文件不方便,我们可以先将配置文件从容器内拷贝到宿主机,编辑修改后再拷贝回去。
(1)从容器拷贝配置文件到宿主机

docker cp pinyougou_nginx:/etc/nginx/nginx.conf nginx.conf

查看容器中是否有这个文件:


(2)编辑nginx.conf,添加反向代理配置
前提:查看tomcat端口:

upstream tomcat-cas {server 172.17.0.4:8080;}server {listen 80;server_name passport.pinyougou.com;location / {proxy_pass http://tomcat-cas;index index.html index.htm;}}

(3)将修改后的配置文件拷贝到容器

docker cp nginx.conf  pinyougou_nginx:/etc/nginx/nginx.conf


(4)重新启动容器

docker restart pinyougou_nginx


(5)设置域名指向
192.168.45.142 passport.pinyougou.com
浏览器测试:http:// passport.pinyougou.com/cas/login

5.4 Redis部署
5.4.1拉取Redis镜像

docker pull redis

5.4.2创建Redis容器

docker run -di --name=pinyougou_redis -p 6379:6379 redis

5.4.3客户端测试
在你的本地电脑命令提示符下,用window版本redis测试

redis-cli -h 192.168.247.135

六、备份与迁移

6.1容器保存为镜像
我们可以通过以下命令将容器保存为镜像

docker commit pinyougou_nginx mynginx
  • pinyougou_nginx是容器名称
  • mynginx是新的镜像名称

此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器
6.2镜像备份

docker  save -o mynginx.tar mynginx

-o 输出到的文件
执行后,运行ls命令即可看到打成的tar包
6.3镜像恢复与迁移
首先我们先删除掉mynginx镜像
然后执行此命令进行恢复

docker load -i mynginx.tar

-i 输入的文件
执行后再次查看镜像,可以看到镜像已经恢复

Docker实战(精简版本)相关推荐

  1. Docker 实战教程之从入门到提高(二)

    本系列第一篇文章,Docker 实战教程之从入门到提高 (一),我们已经介绍了如何在 Ubuntu 操作系统中安装 Docker,以及 Proxy 和 Insecure Registry 的配置. 本 ...

  2. Docker实战 (docker swarm的应用,docker集群的构建,在docker集群中部署服务)

    Docker实战 ----docker swarm的应用,docker集群的构建,在docker集群中部署服务 转载来源:https://blog.csdn.net/No_red/article/de ...

  3. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...

  4. 「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四) 上次说了fiddl ...

  5. 【云原生之Docker实战】使用Docker部署Lsky Pro个人图床平台

    [云原生之Docker实战]使用Docker部署Lsky Pro个人图床平台 一.Lsky Pro介绍 1.Lsky Pro简介 2.Lsky Pro特点 二.检查宿主机系统版本 三.检查本地dock ...

  6. 【云原生之Docker实战】使用docker部署DokuWiki知识库系统

    [云原生之Docker实战]使用docker部署DokuWiki知识库系统 一.DokuWiki介绍 二.检查本地Docker环境 1.检查系统版本 2.检查docker版本 3.检查docker状态 ...

  7. 【云原生之Docker实战】使用Docker部署Snipe-It固定资产管理平台

    [云原生之Docker实战]使用Docker部署Snipe-It固定资产管理平台 一.Snipe-It介绍 二.检查本地docker环境 1.检查docker版本 2.检查docker状态 3.检查系 ...

  8. 【云原生之Docker实战】使用Docker部署ShowDoc文档工具

    [云原生之Docker实战]使用Docker部署ShowDoc文档工具 一.ShowDoc介绍 1.ShowDoc简介 2.ShowDoc功能 二.检查docker版本 三.检查docker状态 四. ...

  9. 【云原生之Docker实战】使用Docker部署Mindoc文档管理平台

    [云原生之Docker实战]使用Docker部署Mindoc文档管理平台 一.Mindoc介绍 1.Mindoc简介 2.Mindoc功能 二.检查宿主机系统版本 1.检查操作系统版本 2.检查系统内 ...

最新文章

  1. 汉川一中2021高考成绩查询,2021年汉川市高考状元名单资料,今年汉川市高考状元多少分...
  2. 10.4 实现关系下的匿名内部类
  3. Java多线程(3)—生产者/消费者
  4. C# 操作其他进程ListView
  5. 超级智能玩具《小小机器人》首发|全新50种玩法,创造力之源
  6. VMware 报错“Intel VT-x处于禁止状态”
  7. C语言 变量声明和定义的区别
  8. javaWeb回忆思维导图
  9. python产品缺陷检测_3 Kaggle钢材表面缺陷检测竞赛的探索与实践-阿里云开发者社区...
  10. 灵格斯与word2007或2010冲突,复制时word关闭问题的解决
  11. 苹果推史上最便宜iPhone,在于恐惧中国手机持续抢夺市场
  12. 并查集——NUIST OJ P1648 炼丹术为例
  13. ARM Cortex A7 架构简介
  14. Linux——shell练习题01
  15. CPU性能优化:Cache
  16. 无推广无刷榜挺进苹果商店AppStore收费榜总榜排行前10!
  17. 零基础学唱歌到底需要学习哪些内容?
  18. Android media sistem,‎App Store 上的“Николай Стариков. Библиотека”
  19. 基于WebApp的服装个性化定制订单管理系统
  20. Error:default argument given for parameter 2 of……

热门文章

  1. redis常规命令记录
  2. 【搜索引擎】lucene事务
  3. MonoBehaviour常用方法
  4. 宜搭小技巧|维护Excel太麻烦?Excel一键转应用,为你的工作减负
  5. 封神-运维大脑 | 日志检测工具
  6. 别琢磨了,企业高效灵活运作的秘密拿走:企业邮箱5折起!分享会场抽取苹果手机和猫超卡!
  7. 安心加科技打造多维度全场景式安心加物联平台
  8. 基于Alluxio系统的Spark DataFrame高效存储管理技术
  9. 超干货|使用Keras和CNN构建分类器(内含代码和讲解)
  10. 用科技共创美好:英特尔助力北京冬奥会新体验