提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Docker虚拟化平台
- 前言
- 一、Docker安装
- 二、Docker重启
- 三、Docker命令实战
- 1.从Docker仓库中搜索Nginx镜像
- 2.从Docker仓库中搜索Mysql镜像
- 3.docker pull命令实战
- 5.docker images命令实战
- 5.docker rmi 仓库名称 删除docker镜像
- 6.docker run命令实战
- 6.docker ps -a 查询所有容器
- 7.docker inspect命令实战
- 7.docker exec命令实战
- 8.docker cp 复制文件到容器命令实战
- 9.docker commit 基于容器构建新的镜像命令实战
- 1.基于新镜像(db-mysql)运行容器
- 10.补充:列出当前正在运行的容器,并以表格的形式展示容器的名字(Names)和网络信息
前言
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