Docker

2 篇文章 0 订阅
2 篇文章 0 订阅

1、Docker简介

在这里插入图片描述
官网的介绍是“Docker is the world’s leading software container platform.”官方给Docker的定位是一个应用容器平台。
Docker通俗的讲是服务器中高性能的虚拟机,可以将一台物理机虚拟N多台虚拟机的机器,互相之间隔离,互不影响。

容器和虚拟机比较
在这里插入图片描述

特性容器虚拟机
启动秒级分钟级
硬盘使用一般为MB一般为GB
性能接近原生硬件弱鸡
系统支持量单机可跑几十个容器单机几个虚拟OS
运行环境主要在Linux主要在window

相同:容器和虚拟机都是虚拟化技术,具备资源隔离和分配优势
不同:
- Docker虚拟化的是操作系统,虚拟机虚拟化的是硬件
- 传统虚拟机可以运行不同的操作系统,Docker主要运行同一类操作系统(Linux)

Docker的基本概念
宿主机: 安装Docker守护进程的Linux服务器,称之为宿主机;
镜像(Image): Docker 镜像,就相当于是一个 root 文件系统。除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。
容器(Container): 镜像运行之后的实体,镜像和容器的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository): 仓库可看成一个镜像控制中心,用来保存镜像。

2、Docker安装与启动

1、查看电脑上是否已经安装Docker

yum list installed | grep docker

2、安装docker

yum -y install docker

3、查看安装版本

docker -v

4、启动docker

systemctl命令是系统服务管理器指令

systemctl start docker

5、停止docker

systemctl stop docker

6、重启docker

systemctl restart docker

7、查看docker状态

systemctl status docker

8、开启自启

systemctl enable docker

9、查看docker概要信息

docker info

在这里插入图片描述
10、镜像加速
默认情况,将从docker hub(https://hub.docker.com/)下载docker镜像太慢,一般都会配置镜像加速器,这里有两种国内镜像可以提供:
编辑docker下的daemon.json文件

vim /etc/docker/daemon.json

在该文件中输入如下内容:

中科大

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

阿里云

{ 
"registry-mirrors": ["https://3ad96kxd.mirror.aliyuncs.com"] 
}

3、Docker常用命令

1、镜像相关

查看镜像

docker images

搜索镜像

docker search 镜像名称

拉取镜像

docker pull 镜像名称:版本

删除镜像

docker rmi 镜像id

删除之前要确认此镜像已经没有被容器在使用,如果存在正在运行的docker容器,删除会报错 “Error: container_delete: Impossible to remove a running container, please stop it first”
批量删除镜像

docker rmi `docker images -q`
2、容器相关

查看正在运行的容器

docker ps

查看所有容器(查看正在运行的和已经停止运行的)

docker ps –a

查看最后一次运行的容器

docker ps –l

查看停止的容器

docker ps -f status=exited
3、创建和启动容器

创建容器命令:

docker run 参数 镜像名称:镜像标签 /bin/bash

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

命令参数详解
-i:表示运行容器,如果不加该参数那么只是通过镜像创建容器,而不启动。
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端(如果 只加it两个参数,创建后就会自动进去容器)。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。
–name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录 或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射,例如: 可以将Docker中Tomcat容器的8080端口映射到宿主机上的某一个端口8080,那么以后访问tomcat只需 要:http://宿主机的IP:8080/
进入容器之后,初始化执行的命令:/bin/bash;可写可不写

交互式容器
使用交互式运行容器,容器运行后直接进入到容器内部,退出容器内部后,容器直接关闭只有第一次才会这样,以后再启动容器就是一个守护式的。

docker run -it --name=容器名称 镜像名称:标签	/bin/bash

退出当前容器

exit

守护式容器

docker run -di --name=容器名称  镜像名称:标签	/bin/bash

登录容器/进入容器的目录

docker exec -it 容器名称(或容器id) /bin/bash

注:这里的登陆容器之后执行的脚本/bin/bash必须写
停止容器

docker stop 容器名称(容器id)

启动容器

docker start 容器名称(容器id)

文件拷贝
将宿主机的文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或目录	容器名称:容器目录

也可以将文件从容器内拷贝出来

docker cp 容器名称:容器目录	需要拷贝的文件或目录

目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

docker run -di -v 宿主机目录:容器目录

查看容器ip

docker inspect 容器名称(容器id)

删除容器

docker rm 容器名称(容器id)

4、Docker数据卷

数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方的修改会立即同步。一个数据卷可以被多个容器同时挂载,一个容器也可以被挂载多个数据卷。
简单来说数据卷本质其实是共享文件夹,是宿主机与容器间数据共享的桥梁。
作用

  1. 容器数据持久化
  2. 外部机器和容器间接通信
  3. 容器之间数据交换
1、1个容器挂载1个数据卷

创建启动容器时,使用 –v 参数 设置数据卷

docker run ... -v 宿主机目录:容器内目录

注意事项:

  1. 目录必须是绝对路径
  2. 如果宿主机目录不存在,会自动创建
  3. 可以挂载多个数据卷

例:

#拉取centos镜像 
docker pull centos:7 
#安装启动容器并挂载 
docker run -di --name=c1 -v /root/host_data1:/root/c1_data centos:7 /bin/bash
#查看容器已挂在的数据卷
docker inspect 容器名称(容器id)
2、1个容器挂载多个数据卷
docker run -di --name=c1 -v /root/host_data1:/root/c1_data1 -v /root/host_data2:/root/c1_data2 centos:7 /bin/bash
3、多个容器挂载1个数据卷
docker run -di --name=c2 -v /root/host_data_common:/root/c2_data centos:7 
docker run -di --name=c3 -v /root/host_data_common:/root/c3_data centos:7
4、多个容器挂载1个容器
##创建启动c3数据卷容器,使用 –v 参数 设置数据卷 
docker run -di --name=c3 -v /root/host_data_common:/root/c3_data centos:7 /bin/bash 
##创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷 
docker run -di --name=c1 --volumes-from c3 centos:7 /bin/bash 
docker run -di --name=c2 --volumes-from c3 centos:7 /bin/bash

5、在Docker中部署软件

1、MySQL部署
## 搜索mysql镜像
docker search mysql
## 拉取mysql镜像
docker pull mysql:5.7
## 创建容器、设置端口映射、目录挂载、设置mysql初始密码
docker run -di --name=mysql -p 3307:3306 -v root/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD = 123456
mysql:5.7
## 进入容器、操作mysql
docker exec -it mysql /bin/bash

然后就可以通过数据库连接软件进行连接了,注意端口号是3307

2、tomcat部署
## 搜索tomcat镜像
docker search tomcat
## 拉取tomcat镜像
docker pull tomcat:8
## 创建容器,设置端口映射、目录映射
docker run -di --name=mytomcat -p 8080:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8

然后使用外部机器访问Tomcat,测试部署服务

3、Nginx部署
## 搜索Nginx镜像
docker search Nginx
## 拉取Nginx镜像
docker run -di --name=mynginx -p 80:80 nginx

测试访问即可

4、Redis部署
##  搜索redis镜像
docker search redis
##  拉取redis镜像
docker pull redis
##  创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis

使用外部机器连接redis,测试

6、镜像备份

容器保存为镜像

docker commit {正在运行容器名称/容器ID} {镜像名称}:{镜像标签}

镜像备份

docker save -o {压缩包存放路径} {镜像名称/镜像ID} 
# 举例 
docker save -o redis.tar redis:version_lagou_1.0.0 
#压缩包在生产环境下会还原为一个 image,还原之后的name和tag 
# -o :输出到的文件

镜像恢复

## 恢复镜像
docker load -i {备份的镜像文件}
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值