Docket

Posted mukk

tags:

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

学习总体目标:

知道什么是docker
使用命令启动或停止docker(*)
使用docker镜像相关命令
使用docker容器相关命令
部署MySQL、Tomcat、Nginx、Redis
docker 的迁移与备份
知道Dockerfifile的常用命令

一:什么是docker

Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
 

小结

  • Docker是一个应用容器引起;

  • 应用场景:web的自动化打包发布,自动化测试、可持续集成,安装各种组件;

  • 与传统虚拟机比较:docker启动速度比较快,占用体积(内存)较小;

  • 组成:docker守护进程,仓库,镜像,容器,docker客户端

  • 为了避免测试人员和开发人员的环境不一致,使用docker来避免这种问题。

 

docket架构

  Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

技术图片

 

 

docket镜像与容器:(相当于类和对象)

技术图片

 

 


 

二、Docker安装与启动

技术图片

docker 安装命令:
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.ustc.edu.cn/docker- ce/linux/centos/docker-ce.repo
docker -v   //查看docker版本

 

然后要设置ustc镜像

 技术图片

Docker启动与停止命令:

systemctl start docker     // 启动docker
systemctl restart docker  //重启docker
systemctl stop docker    //停止docker
systemctl status docker  //查看运行状态

卸载docker命令
yum list installed |grep docker
镜像列表
yum remove 镜像列表名称
find / -name docker*
rm -rf 查找的文件名称


 

三、docker镜像相关命令

查看镜像:  docker images
搜索镜像: docker search  镜像名称 
拉取镜像:docker pull 镜像名称
删除镜像 :docker rmi 镜像id

技术图片


 

四、docker容器相关命令

4.1容器相关命令:

查看正在运行的容器: docker ps

查看所有容器:docker ps -a

创建并启动交互式容器:docker run -it --name=mycentos7 centos:7 /bin/bash

启动交互式容器之后是直接进入容器终端;可以查看容器的文件结构;使用exit 命令则会退出终端并且停止容器。

 

长期运行的容器,我们需要创建一个守护式容器,容器名不能重复。

# 创建并启动守护式容器

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

 

# 启动容器后再进入容器

docker exec -it mycentos2 /bin/bash

守护式容器在启动之后会一直在后台运行,即使进入容器之后执行exit命令也不会停止容器,适用于需要长期运行容器的情况。

 

停止和启动容器命令

docker stop 容器名/容器id

docker start 容器名/容器id

 

将文件拷贝到容器命令格式:

dir     //查看有什么文件

docker cp 文件名 容器名:/use/local     //将文件复制到容器的/use/local的目录下

docker exec -it 容器名 /bin/bash     //启动容器后再进入容器

cd  /usr/local           //进入这个目录下

dir        //查看这个文件已经复制过来了。

Exit      //退出

 

将容器的文件拷贝出来如图命令:

技术图片

 

查看容器IP:   Docker inspect  容器名

删除容器: docker rm 容器名

删除所有容器:docker rm `docker ps -a -q`  (慎用)


 

五、部署

5.1在虚拟机上部署Mysql 

mysql部署命令:
1.拉取mysql镜像到本地
docker pull centos/mysql-57-centos7
2.以守护式创建容器并设置mql登录密码, -p表示映射 ,宿主机端口:容器端口,通过操作宿主机端口来操作容器中的mql,centos/mysql-57-centos7:容器名
docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWOR D=123456 centos/mysql-57-centos7 

3.docker ps    //查看正在运行的容器,如果发现Mysql容器没有运行,则查docker ps -a    在docker start 容器id,来开启容器。

4. ip addr    //查看虚拟机ip,然后用Mysql图形界面画工具连接这个ip

技术图片

 

 技术图片

 

 部署成功:(这里是通过宿主机ip对容器的访问,因为做了端口映射)

小结

在创建容器的时候指定环境变量MYSQL_ROOT_PASSWORD表示使用root进行远程连接时候的密码。如果需要进行远程连接的话可以使用-p进行端口映射。

 

5.2  部署Tomcat

1.拉取镜像
docker pull tomcat
2.创建容器。name=容器名,-p映射端口,-v目录挂载,/usr/local/tomcat/webapps:下载到webapps下,如果文件目录没有自动下载,tomcat:镜像名,或者用id也可以。
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/tomcat/webapps tomcat
3.查看运行状态 docker ps //如果没运行,则命令开启运行。

技术图片

 

 技术图片

 

 技术图片

 

 

浏览器访问刚刚映射的端口号,看到猫你就部署成功了。

 

5.3 Nginx部署
1.拉取镜像
docker pull nginx
2.创建Nginx容器,name=创建的容器名, -p 映射端口 镜像名
docker run -di --name=mynginx -p 80:80 nginx

3.查看是否启动

docker ps

技术图片

 

 浏览器输入   宿主机ip:80  即可看到这个页面,则部署成功。

 

接下来我们把静态页面部署到Nginx上去。

1.将准备好的静态页面文件名index.html(一定这个名字,否则覆盖不了,一般都是网站的主页)拷贝到一个路径文件夹下
C:developstatic //我放在这个本地目录下
2.命令:上传这个目录到宿主机上
put -r C:developstatic

技术图片

 

 显示上传成功

 

技术图片

 

 可以看到static目录下的dongtu.html       //由于开始我名称不对,导致没有覆盖。后面访问不到,

将上传的这个目录拷贝到容器中

hdocker exec -it mynginx /bin/bash   //进入容器

cd etc //进入etc目录
cd nginx //进入nginx 目录
dir //查看文件
cat nginx.conf //查看配置信息基本
cd conf.d
dir
cat default.conf //查看配置信息

技术图片

 

 可以看到其实配置了一个server,root 路径下/usr/share/nginx/html.就是我们看到的欢迎页。

我们需要将我们刚上传的static目录下的页面拷贝到root这个路径下。

exit  //退出

dir //查看下目录
mv static html //把static 目录改名为html ,要为了覆盖root路径下的html
docker cp html mynginx:/usr/share/nginx/ //把html目录拷贝到root的路径下

技术图片

 

 如图输入命令

由于我的dongtu.html 名称不对,没有覆盖。后面我修改过来了。就可以访问了。

技术图片

 

 

5.4 部署Redis
1.拉取镜像
docker pull redis
2.创建容器,两种任选一
docker run -di -- name=myredis -p 6379:6379 redis //redis不设置密码
docker run -id --name=myredis -p 6379:6379 redis --requirepass "123456"// 设置 密码的
3.查看开启状态
docker ps
4.找到本地redis客户端路径
C:develop edis-2.8.9 //我的本地redis路径
5.管理员身份打开cmd
cd C:develop edis-2.8.9
redis-cli -h 宿主机ip //比如redis-cli -h 192.168.0.1 。这里是远程访问
6.如果设置密码
auto "123456" //如:auto "你的password"

7.测试存储
set name mkk
get name

技术图片

 

 技术图片

 部署成功。

 


 

六.docker 的迁移与备份

 

docker 的迁移与备份-- 命令中以mynginx容器为例,因为它之前已经部署了静态页面。用它来测试恢复。

1.将docker容器保存为镜像
docker commit mynginx mynginx_a           //mynginx:容器名,mynginx_a:镜像名。此新镜像的内容就是当前容器的内容,接下来你可以用此镜像再次运行新的容器
docker run -di --name=mynginx2 -p 81:80 mynginx_a    //基于这个新镜像来创建一个容器。当然,以后我们可以把修改好之后的容器在保存为镜像。基于含有内容的新镜像来操作。浏览器测试:ip:81可以访问


2.镜像备份:把镜像保存为一个文件即可。比如,我们要把当前的镜像放到另一台服务器上去部署,我们可以把当前镜像保存为一个文件,然后把文件恢复为镜像即可。
简单理解就是:镜像保存(备份)为文件,文件恢复为镜像。在做好文件之后,在把这个镜像给删掉即可。

docker save -o mynginx.tar mynginx_a      //-o 表示输出,mynginx.tar是自定义文件名,mynginx_a:是新镜像
dir //查看下,有这个文件mynginx.tar。

3.镜像恢复与迁移:事先把镜像备份为文件,如果该镜像损坏或删除了,则可以用镜像的备份文件来恢复。

如果镜像里面有容器,先要停止容器运行。在删除容器,在删镜像。
docker stop mynginx2
docker rm mynginx2
docker rmi mynginx_a

docker load -i mynginx.tar       // -i :表输出,恢复文件为镜像
docker images //查看镜像

技术图片


 


docker 私有仓库的搭建
1.拉取私有仓库镜像
docker pull registry

2.启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3.浏览器访问 看到下图内容表示搭建成功,且内容为空。

技术图片

4.修改daemon.json
vi /etc/docker/daemon.json
添加以下内容,保存退出。
{"insecure-registries":["宿主机ip:5000"]} //表示信任私有仓库的地址


5.重启docker 服务生效
systemctl restart docker


 

将镜像上传到私有仓库
docker tag jdk1.8 宿主机IP:5000/jdk1.8
docker start registry //开启私有仓库
docker push 宿主机IP:5000/jdk1.8

在浏览器访问如下:

技术图片


 

技术图片

 

技术图片

 

技术图片

技术图片

 

 技术图片

 

 技术图片

 

 

 

 

 

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