四时宝库

程序员的知识宝库

# 01_Docker快速入门到项目部署(一)

#Python怎么编写#

# 01_Docker快速入门到项目部署(一)



## 一、Docker课程介绍


### 1、Docker快速入门到项目部署 课程内容


1)快速入门


* docker部署mysql

* docker命令解读


2)Docker基础


* Docker 常见命令

* Docker 数据卷

* Docker 自定义镜像

* Docker 容器网络。


3)项目部署


* 部署前端

* 部署 java

* DockerCompose


### 2、docker 是什么?


Docker 是 快速构建、运行、管理应用的工具。


### 3、传统方式部署MySQL,大概的步骤有:


1)搜索并下载MySQL安装包


```bash

$ rpm -qa | grep mysql

$ rpm -qa | grep mariadb

$ rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

```



2)上传至Linux环境


```bash

$ mkdir /usr/local/mysql

$ tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql

```


3)编译和配置环境


```bash

$ rpm -ivh mysql-community-5.7.25-1.el7.x86_64.rpm

...

$ yum install net-tools

$ yum install openssl-devel -y

```


4)安装


```bash

$ rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64

```


### 4、docker 安装 mysql


```bash

docker run -d \

--name mysql \

-p 3306:3306 \

-e TZ=Asia/Shanghai \

-e MYSQL_ROOT_PASSWORD=123 \

Mysql

```



## 二、Docker的安装


### 1、docker 的安装官方文档:


http://docs.docker.com/engine/install/centos/


### 2、linux 环境搭建


1)下载安装VMware


https://www.vmware.com/products


2)创建虚拟机


3)安装 centos7


4)设置虚拟机快照。


### 3、安装 SSH 客户端。


### 4、安装 docker


1)卸载旧版 docker


```bash

yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine \

docker-selinux


```


2) 配置docker的yum 库


```bash

sudo yum install -y yum-utils device-mapper-persistent-data lvm2



sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo



sudo yum makecache fast


```


3) 安装docker


```bash

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


```


4) 启动和校验docker


```bash

# 启动Docker

systemctl start docker


# 停止Docker

systemctl stop docker


# 重启

systemctl restart docker


# 设置开机自启

systemctl enable docker


# 执行docker ps命令,如果不报错,说明安装启动成功

docker ps


```


5) 配置docker 的镜像加速器


```bash

# 创建目录

mkdir -p /etc/docker


# 复制内容

tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": [

"http://hub-mirror.c.163.com",

"https://mirrors.tuna.tsinghua.edu.cn",

"http://mirrors.sohu.com",

"https://ustc-edu-cn.mirror.aliyuncs.com",

"https://ccr.ccs.tencentyun.com",

"https://docker.m.daocloud.io",

"https://docker.awsl9527.cn"

]

}

EOF


# 重新加载配置

systemctl daemon-reload


# 重启Docker

systemctl restart docker


```


## 三、快速入门-部署MySQL


### 1、docker 部署 mysql


```bash

docker run -d \

--name mysql \

-p 3306:3306 \

-e TZ=Asia/Shanghai \

-e MYSQL_ROOT_PASSWORD=123 \

mysql

```









### 2、镜像(image)和容器(container)


使用Docker,会自动搜索并下载MySQL。注意:这里下载的不是安装包,而是镜像。镜像中不仅包含了MySQL本身,还包含了其运行所需要的环境、配置、系统级函数库。因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了。这套独立运行的隔离环境我们称为容器


### 3、镜像仓库(DockerRegistry)


Docker官方提供了一个专门管理、存储镜像的网站,并对外开放了镜像上传、下载的权利。Docker官方提供了一些基础镜像,然后各大软件公司又在基础镜像基础上,制作了自家软件的镜像,全部都存放在这个网站。这个网站就成了Docker镜像交流的社区:hub.docker.com。


官方仓库在国外,下载速度较慢,阿里云、华为云会提供一些第三方仓库,我们也可以自己搭建私有的镜像仓库。一般我们都会使用第三方仓库提供的镜像加速功能,提高下载速度。而企业内部的机密项目,往往会采用私有镜像仓库。


### 4、docker 基础概念


1)Docker是做什么的?


Docker可以帮助我们下载应用镜像,创建并运行镜像的容器,从而快速部署应用。


2)什么是镜像?


将应用所需的函数库、依赖、配置等与应用一起打包得到的就是镜像。


3)什么是容器?


为每个镜像的应用进程创建的隔离运行环境就是容器。


4)什么是镜像仓库?


存储和管理镜像的服务就是镜像仓库,DockerHub是目前最大的镜像仓库,其中包含各种常见的应用镜像。



### 5、docker 部署应用图示


Docker本身包含一个后台服务,我们可以利用Docker命令告诉Docker服务,帮助我们快速部署指定的应用。Docker服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了。








## 四、快速入门-命令解读


### 1、利用Docker快速的安装了MySQL,非常的方便,执行的命令到底是什么意思?


```bash

docker run -d \

--name mysql \

-p 3306:3306 \

-e TZ=Asia/Shanghai \

-e MYSQL_ROOT_PASSWORD=123 \

mysql

```


### 2、docker 命令解读


1)docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行。


2)--name mysql : 给容器起个名字叫mysql,你可以叫别的。


3)-p 3306:3306 : 设置端口映射。


容器是隔离环境,外界不可访问。但是可以将宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。


容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。


格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口。


4)-e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数


格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定。


案例中,TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123是设置MySQL默认密码。


5)mysql : 设置镜像名称,Docker会根据这个名字搜索并下载镜像。


格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号


在未指定TAG的情况下,默认是最新版本,也就是mysql:latest


### 3、docker 镜像命名规范


1)镜像名称一般分两部分组成:[repository]:[tag]。其中repository就是镜像名

tag是镜像的版本。


2)在没有指定tag时,默认是latest,代表最新版本的镜像。








### 4、docker run命令中的常见参数:


-d: 让容器后台运行。如: docker run -d \


--name : 给容器命名。如:--name nginx \

-e: 环境变量。

-P: 宿主机端口映射到容器内端口。如:-p 80:80 \


镜像名称结构:nginx

Repository:TAG

镜像名:版本号



## 五、Docker基础-常见命令


### 1、Docker最常见的命令就是操作镜像、容器的命令


详见官方文档: https://docs.docker.com/


https://docs.docker.com/reference/


### 2、docker 常见命令


命令

说明

docker pull

拉取镜像

docker push

推送镜像到DockerRegistry

docker images

查看本地镜像

docker rmi

删除本地镜像

docker run

创建并运行容器(不能重复创建)

docker stop

停止指定容器

docker start

启动指定容器

docker restart

重新启动容器

docker rm

删除指定容器

docker ps

查看容器

docker logs

查看容器运行日志

docker exec

进入容器

docker save

保存镜像到本地压缩文件

docker load

加载本地压缩文件到镜像

docker inspect

查看容器详细信息




### 3、docker 常见命令关系图例:








### 4、案例:查看DockerHub,拉取Nginx镜像,创建并运行Nginx容器


1)需求:


* 在DockerHub中搜索Nginx镜像,查看镜像的名称

* 拉取Nginx镜像

* 查看本地镜像列表

* 创建并运行Nginx容器

* 查看容器

* 停止容器

* 再次启动容器

* 进入Nginx容器

* 删除容器


2)以Nginx为例,演示上述命令。


```bash

# 第1步,去DockerHub查看nginx镜像仓库及相关信息


# 第2步,拉取Nginx镜像

docker pull nginx


# 第3步,查看镜像

docker images

# 结果如下:

REPOSITORY TAG IMAGE ID CREATED SIZE

nginx latest 9bea9f2796e2 7 weeks ago 192MB


# 打包(保存)镜像到本地

docker save -o nginx.tar nginx:latest


# 删除镜像

docker rmi nginx


# 再次查看镜像,没有了nginx

docker images


# 解压镜像(-i: 指定包名,-q: 不显示输出)

docker load -i nginx.tar

# 或者

docker load -i nginx.tar -q


# 再次查看镜像,又有了nginx

docker images



# 第4步,创建并允许Nginx容器

docker run -d --name nginx -p 80:80 nginx


# 第5步,查看运行中容器

docker ps


# 也可以加格式化方式访问,格式会更加清爽

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"


# 第6步,访问网页,地址:http://虚拟机地址


# 第7步,停止容器

docker stop nginx


# 第8步,查看所有容器

docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"


# 第9步,再次启动nginx容器

docker start nginx


# 第10步,再次查看容器

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"


# 第11步,查看容器详细信息

docker inspect nginx


# 第12步,进入容器,查看容器内目录

docker exec -it nginx bash


# 或者,可以进入MySQL

docker exec -it mysql mysql -uroot -p


# 第13步,删除容器

docker rm nginx


# 发现无法删除,因为容器运行中,强制删除容器

docker rm -f nginx


```



### 5、示例:














发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接