Docker虚拟化平台实战

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Docker技术机制跟集装箱类似,Docker虚拟化 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

Docker容器是完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是他们不依赖于任何语言、框架或包括系统。


一、Docker安装

1.安装yum源

(方法一)使用 yum-config-manager 工具动态地向 /etc/yum.repos.d/ 目录中添加一个指向指定 URL 的 .repo 配置文件,从而添加了 Docker CE 仓库。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y*

(方法二)使用 wget 下载 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 文件,并将其保存到 /etc/yum.repos.d/ 目录中,手动添加了 Docker CE 仓库的配置文件

wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y*

2.安装社区版

yum install docker-ce -y*

3.docker info 查看docker信息

代码如下(示例):

[root@xuhuaping ~]# docker info

在这里插入图片描述

二、Docker重启

[root@xuhuaping docker]# systemctl restart docker.service

三、Docker命令实战

1.从Docker仓库中搜索Nginx镜像

代码如下(示例):

[root@xuhuaping docker]# docker search nginx

在这里插入图片描述

2.从Docker仓库中搜索Mysql镜像

代码如下(示例):

[root@xuhuaping ~]# docker search mysql

在这里插入图片描述


3.docker pull命令实战

从Docker仓库下载mysql镜像

代码如下(示例):

[root@xuhuaping  ~]# docker pull mysql

在这里插入图片描述
代码如下(示例):

[root@xuhuaping ~]# docker pull nginx

在这里插入图片描述


5.docker images命令实战

代码如下(示例):

[root@xuhuaping ~]# docker images

在这里插入图片描述


5.docker rmi 仓库名称 删除docker镜像

代码如下(示例):

[root@localhost docker]# docker rmi be0dbf01a0f3

在这里插入图片描述


6.docker run命令实战

docker run来创建一个新的容器并且立即启动

-d表示:daemon后台启动;
-name表示:指定容器的名称;
-p端口映射:将宿主机端口映射到容器:第一个80宿主机监听端口,第二个80端口为容器监听;
#浏览器输入宿主机IP+80端口,即可访问容器中的80端口所在服务;
代码如下(示例):

nginx安装

[root@localhost ~]# docker run -d --name nginx -p 8081:80 nginx:latest

在这里插入图片描述

redis安装

[root@localhost ~]# docker run -d --name redis -p 6379:6379 redis:latest

在这里插入图片描述

mysql安装

[root@xuhuaping ~]# docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=hqkjad_ mysql:5.7

在这里插入图片描述

tomcat安装

[root@xuhuaping ~]# docker run -d --name tomcat -p 8080:8080 tomcat:8

在这里插入图片描述

tomcat安装

root@xuhuaping ~]# docker run -itd --name tomcat02 -p 8083:8080 --privileged tomcat:9 

在这里插入图片描述

6.docker ps -a 查询所有容器

代码如下(示例):

[root@xuhuaping ~]# docker ps -a

在这里插入图片描述


7.docker inspect命令实战

查询容器详细信息
代码如下(示例):

[root@xuhuaping ~]# docker inspect b1252dc0e0d6

在这里插入图片描述

从容器详细信息中,过滤IP地址

代码如下(示例):

[root@xuhuaping ~]# docker inspect b1252dc0e0d6 |grep -i ipaddr

在这里插入图片描述


7.docker exec命令实战

代码如下(示例):

[root@xuhuaping ~]# docker exec -it nginx bash

在这里插入图片描述


8.docker cp 复制文件到容器命令实战

代码如下(示例):

[root@xuhuaping home]# docker cp dbjk.txt 7214cbcdc7c6:/home/
说明:将文件dbkj.txt文件复制到mysql容器(7214cbcdc7c6)的home目录

在这里插入图片描述
在这里插入图片描述

9.docker commit 基于容器构建新的镜像命令实战

使用场景:
将当前服务器上正在运行的一个容器,迁移到另一台服务器上运行

总体思想:
将当前正在运行的容器构建为新的镜像A----》将新镜像A的镜像文件复制到另一台服务器或直接将镜像A提交到镜像仓库----》在另一台服务器上将镜像A从镜像仓库下载下来----》基于镜像A创建容器并运行。

代码如下(示例):

[root@xuhuaping home]# docker commit 7214cbcdc7c6 db-mysql
说明:将正在运行的7214cbcdc7c6,mysql容器构建为新的镜像db-mysql

在这里插入图片描述

1.基于新镜像(db-mysql)运行容器

代码如下(示例):

[root@xuhuaping home]# docker run -d --name xu-mysql-db -e MYSQL_ROOT_PASSWORD=hqhbkj2024 -p 3307:3306 db-mysql
28c8e8b50bedcd497101b74024e0aeff56f8662cdff6a517447b44dab4c46078
说明:
-d:放后台运行
--name xu-mysql-db  指定容器名称为xu-mysql-db
 -e MYSQL_ROOT_PASSWORD hqhbkj2024 指定密码为hqhbkj2024
 -p 3307:3306 宿主机3307端口映射到容器3306端口
 db-mysql 镜像名(用该镜像来创建容器)

在这里插入图片描述

root@xuhuaping home]# docker run -d --name xu-mysql-db -e MYSQL_ROOT_PASSWORD=hqhbkj2024 -p 3307:3306 db-mysql
28c8e8b50bedcd497101b74024e0aeff56f8662cdff6a517447b44dab4c46078
[root@xuhuaping home]# docker ps -a
CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS                    PORTS                                                  NAMES
28c8e8b50bed   db-mysql                                          "docker-entrypoint.s…"   33 minutes ago   Up 33 minutes             33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp   xu-mysql-db
d03414ad578f   hello-world                                       "/hello"                 2 days ago       Exited (0) 2 days ago                                                            determined_mirzakhani
e9e2739f1ecd   zabbix/zabbix-agent:5.0-centos-latest             "/usr/bin/tini -- /u…"   3 days ago       Up 3 days                                                                        zbx5-agent
a8c3de287786   zabbix/zabbix-web-nginx-mysql:5.0-centos-latest   "docker-entrypoint.sh"   3 days ago       Exited (0) 47 hours ago                                                          zbx5-web-nginx-mysql
27ef858a5ed4   zabbix/zabbix-server-mysql:5.0-centos-latest      "/usr/bin/tini -- /u…"   3 days ago       Up 3 days                                                                        zbx5-server-mysql
7214cbcdc7c6   mysql:5.7                                         "docker-entrypoint.s…"   3 days ago       Up 3 days                                                                        zbx5-mysql
b1252dc0e0d6   redis:latest                                      "docker-entrypoint.s…"   3 days ago       Up 3 days                 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis

查看新容器内文件与旧容器内容相同
代码如下(示例):

新容器 [root@xuhuaping home]# docker exec -it 28c8e8b50bed /bin/bash
bash-4.2# ls /home/
dbjk.txt

或者

新容器 [root@xuhuaping home]# docker exec -it xu-mysql-db /bin/bash
bash-4.2# ls /home/
dbjk.txt
bash-4.2# 

旧容器 
[root@xuhuaping home]# docker exec -it 7214cbcdc7c6  /bin/bash
bash-4.2# ls /home/
dbjk.txt

或者

[root@xuhuaping home]# docker exec -it zbx5-mysql  /bin/bash
bash-4.2# ls /home/
dbjk.txt


10.补充:列出当前正在运行的容器,并以表格的形式展示容器的名字(Names)和网络信息

代码如下(示例):

[root@localhost ~]# docker ps --format "table {{.Names}}\t{{.Networks}}"
NAMES               NETWORKS
mysql8.0            bridge
zbx5-agent          host
zbx5-server-mysql   host

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值