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

Docker非常类似于虚拟机技术,但是它有不是虚拟机,它是一个轻量级的容器技术,但是它却实现了虚拟机的资源隔离技术,性能是远远高于虚拟机的

优点:

1.可以把我们已经安装配置好的软件,例如,mysql,Tomcat,redis等,打包成一个镜像,这样如果我们想在其他的服务器上安装这些软件,我们就不用再像以前那样,从官网上下载,并且对每一个软件进行配置,我们只需要在其他的服务器上安装docker,然后通过docker直接运行我们打包好的镜像,
2.运行中的镜像称为是容器,容器的启动速度是非常快的,软件就是在容器的内部运行的.
3.容器之间是沙箱的隔离机制,

2.Docker的核心概念

  • docker主机(Host):安装了docker程序的机器(docker是直接安装在操作系统上的)
  • docker客户端(Client):: 连接docker主机,进行操作.
  • docker仓库(Registry): 用来保存各种打包好的软件镜像
  • docker镜像(Images): 软件打包好的镜像,放在docker仓库中
  • docker容器(Container): 镜像启动之后,称为是一个实例,容器是独立运行的一个或一组应用

如果我们想安装5个Tomcat,不用像之前那样安装5个Tomcat,我们只需要把Tomcat的镜像运行5次就行了
每次运行一个镜像,就会产生一个容器,每一个容器内部都是一个Tomcat
我们通容器的启动和停止来操作应用程序

Docker的使用步骤

1.首先要给服务器是哪个安装docker
2.然后去Docker的仓库中找到软件对应的镜像
3.使用docker来运行这个镜像,就会生成一个容器
4.对容器的启动和停止就是对软件的停止和启动

3、安装Docker

1)、安装linux虚拟机

​ 1)、VMWare、VirtualBox(安装);
​ 2)、导入虚拟机文件centos7-atguigu.ova;
​ 3)、双击启动linux虚拟机;使用 root/ 123456登陆
​ 4)、使用客户端连接linux服务器进行命令操作;
​ 5)、设置虚拟机网络;
​ 桥接网络=选好网卡==接入网线;
​ 6)、设置好网络以后使用命令重启虚拟机的网络

service network restart

​ 7)、查看linux的ip地址

ip addr

​ 8)、使用客户端连接linux;

2)、在linux虚拟机上安装docker

在这里插入图片描述
安装步骤:

1、检查内核版本,必须是3.10及以上
uname -r
2、安装docker
yum install docker
3、输入y确认安装
4、启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、开机启动docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6、停止docker
systemctl stop docker

docker的常用命令:

systemctl start docker : 启动docker
docker -v : 查看docker的版本
systemctl enable docker : 设置docker为开机启动
systemctl stop docker: 停止docker

4.Docker的常用操作

1)、镜像操作(docker的镜像官网)

操作命令说明
检索docker search 关键字 eg:docker search redis我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。
拉取docker pull 镜像名:tag:tag是可选的,tag表示标签,多为软件的版本,默认是latest
列表docker images查看所有本地镜像
删除docker rmi image-id删除指定的本地镜像

2 .容器操作

在这里插入图片描述
docker run -d -p 8888:8080 tomcat :端口映射的方式启动一个容器,-d,表示后台运行,-p 表示做端口映射,第一个写虚拟机的端口(也就是供外界访问的端口),第二个写的是容器的饿端口,然后加上容器名称.
service firewalld status : 查看虚拟机的防火墙状态
service firewalld stop : 临时关闭Linux的防火墙
docker logs 容器的id/容器名称 : 查看容器的日志信息
更多docker命令,请参考

同一个镜像,启动多次,就会产生多个容器.而且每个容器之间都是独立的
在这里插入图片描述
在这里插入图片描述

3)、安装MySQL示例

docker pull mysql

错误的启动

[root@localhost ~]# docker run --name mysql01 -d mysql
42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846

mysql退出了
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
42f09819908b        mysql               "docker-entrypoint.sh"   34 seconds ago      Exited (1) 33 seconds ago                            mysql01
538bde63e500        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       compassionate_
goldstine
c4f1ac60b3fc        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       lonely_fermi
81ec743a5271        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       sick_ramanujan


//错误日志,mysql在启动的时候需要加入参数,也就是密码的值
[root@localhost ~]# docker logs 42f09819908b
error: database is uninitialized and password option is not specified 
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;这个三个参数必须指定一个

正确的启动

[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b874c56bec49        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        3306/tcp            mysql01

做了端口映射

[root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ad10e4bc5c6a        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02

docker run -name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWPRD=123456 -d mysql : 做了端口映射的mysql启动,并且加了参数password

几个其他的高级操作

[root@localhost ~]# docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)

[root@localhost ~]# docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
指定mysql的一些配置参数
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐