PYG电商项目开发 -- day14 Docker

一、Docker简介

 

二、Docker安装与启动

 

1、安装docker环境说明

 

        Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。

 

        由于我们学习的环境都使用的是CentOS,因此这里我们将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。

 

2、使用centos7进行docker环境安装

 

 

3、启动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 info

查看docker帮助文档:docker --help

 

三、Docker镜像操作

 

1、什么是docker镜像

 

        Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。

 

2、列出docker下所有镜像

 

 

REPOSITORY:镜像所在的仓库名称

 

TAG:镜像标签

 

IMAGE ID:镜像ID

 

CREATED:镜像的创建日期(不是获取该镜像的日期)

 

SIZE:镜像大小

 

这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

 

3、拉取镜像

 

        国情的原因,国内下载 Docker HUB 官方的相关镜像比较慢,可以使用国内(docker.io)的一些镜像加速器,镜像保持和官方一致,关键是速度块,推荐使用。Mirror与Private Registry的区别:

 

        Private Registry(私有仓库)是开发者或者企业自建的镜像存储库,通常用来保存企业内部的 Docker 镜像,用于内部开发流程和产品的发布、版本控制。

 

        Mirror是一种代理中转服务,我们(比如daocloud)提供的Mirror服务,直接对接Docker Hub的官方Registry。Docker Hub 上有数以十万计的各类 Docker 镜像。

 

        在使用Private Registry时,需要在Docker Pull 或Dockerfile中直接键入Private Registry 的地址,通常这样会导致与 Private Registry 的绑定,缺乏灵活性。

 

        使用 Mirror 服务,只需要在 Docker 守护进程(Daemon)的配置文件中加入 Mirror 参数,即可在全局范围内透明的访问官方的 Docker Hub,避免了对 Dockerfile 镜像引用来源的修改。

 

        简单来说,Mirror类似CDN,本质是官方的cache;Private Registry类似私服,跟官方没什么关系。对用户来说,由于用户是要拖docker hub上的image,对应的是Mirror。yum/apt-get的Mirror又有点不一样,它其实是把官方的库文件整个拖到自己的服务器上做镜像,并定时与官方做同步;而Docker Mirror只会缓存曾经使用过的image。

 

使用命令拉取:

 

docker pull centos:7

 

        目前国内访问docker hub速度上有点尴尬,使用docker Mirror势在必行。现有国内提供docker镜像加速服务的商家有不少,下面重点ustc镜像。

 

 

4、配置使用ustc的镜像加速器

 

(1)、编辑文件/etc/docker/daemon.json(如不存在,手动创建)

 

 

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

 

(2)、重启docker服务

 

 

5、搜索镜像

 

如果你需要从网络中查找需要的镜像,可以通过以下命令搜索

 

docker search 镜像名称

 

 

NAME:仓库名称


DESCRIPTION:镜像描述


STARS:用户评价,反应一个镜像的受欢迎程度


OFFICIAL:是否官方

 

AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

 

6、删除镜像

 

docker rmi $IMAGE_ID:删除指定镜像

docker rmi `docker images -q`:删除所有镜像

 

四、Docker容器操作 -- mysql

 

1、创建容器

 

创建容器命令:docker run

 

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

 

        -i:表示运行容器

 

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

 

        --name :为创建的容器命名。

 

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

 

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

 

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

 

2、创建并启动守护式容器

 

如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(以mysql举例,容器名称不能重复):

 

[root@localhost docker]# docker run -di --name=pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

 

 

3、重启已经创建的容器

 

        以刚创建的mysql容器为例,当虚拟机重新启动后,mysql容器并不会伴随着启动docker而被启动,因此,需要手动启动mysql容器

 

启动命令:docker start 容器ID(或者容器名称)

 

 

4、windows中使用工具连接mysql容器

 

对于部分工具可能无法远程连接,需要先在Linux中的mysql容器中执行如下操作:

 

进入docker容器:

 

docker exec -it pinyougou_mysql /bin/bash

 

登录mysql,设置远程访问权限:

 

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.51 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

 

 

5、关闭容器和删除容器

 

说明:删除容器之前需要关闭容器删除容器

 

[root@localhost ~]# docker stop pinyougou_mysql
pinyougou_mysql
[root@localhost ~]# docker rm pinyougou_mysql

 

 

六、Docker容器操作 -- tomcat

 

1、拉取tomcat镜像

 

 

2、守护式创建tomcat映射容器

 

 

问题:创建tomcat容器的时候,可能会抛出 WARNING: IPv4 forwarding is disabled. Networking will not work 这样的问题,此时需要按照上图步骤进行:

 

(1)、编辑配置文件

 

vi /usr/lib/sysctl.d/00-system.conf

 

(2)、加入配置

 

net.ipv4.ip_forward=1

 

(3)、重启网络

 

systemctl restart network

 

(4)、停止、删除tomcat容器,并重新创建守护式容器

 

docker stop pinyougou_tomcat

docker rm pinyougou_tomcat

docker run -di --name=pinyougou_tomcat -p9000:8080 tomcat

 

3、向tomcat容器中部署项目

 

 

七、Docker容器操作 -- nginx

 

 

1、拉取镜像

 

docker pull redis

 

2、创建守护式nginx容器

 

docker run -di --name=pinyougou_nginx -p 80:80 nginx

 

3、修改nginx配置文件nginx.conf

 

(1)、将docker容器中的nginx配置文件拷贝到linux中进行修改

 

说明:nginx默认安装到/etc/nginx目录下

 

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

 

 

(2)、修改配置文件

 

配置nginx的发现代理,参考nginx学习笔记

 

说明:nginx反向代理tomcat时,配置的地址为tomcat容器的ip地址和端口号,不是虚拟机的ip地址和对外映射的端口号,查看tomcat容器的ip地址命令如下:

 

docker inspect pinyougou_tomcat

 

 

(3)、将nginx.conf配置文件重新拷贝到nginx目录下

 

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

 

(4)、重启nginx容器

 

docker restart pinyougou_nginx

 

八、Docker容器操作 -- redis

 

 

1、拉取镜像

 

docker pull redis

 

2、创建守护式容器

 

[root@localhost local]# docker run -di --name=pinyougou_redis -p 6379:6379 redis     
f3de9c3f5af3246cb8f93ac94b8332532a2445e6cfe65f16956a77501e06416e

 

九、docker容器的备份与迁移

 

1、迁移容器之前需要将容器还原保存成镜像

 

还原语法:docker commit 容器名称  保存的镜像名称

 

 

2、将容器镜像进行备份

 

备份语法:docker save  -o  备份后的名字  要备份的镜像

 

 

3、迁移容器

 

将备份的镜像文件拷贝到/root下,进行镜像加载

 

加载语法:docker  load  -i  镜像名称

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值