Docker工具

1、基础知识

  • 1.1 概念
    Docker是一个用于快速环境部署/搭建的工具。
  • 角色组成
组件描述
Docker镜像它是一个只读的文件,就类似于我们安装操作系统时候所需要的那个iso光盘镜像,通过运行这个镜像来完成各种应用的部署。这里的镜像就是一个能被docker运行起来的一个程序。
Docker容器容器就类似于我们运行起来的一个操作系统,而且这个操作系统启动了某些服务。这里的容器指的是运行起来的一个Docker镜像。
Docker仓库仓库就类似于我们在网上搜索操作系统光盘的一个镜像站。这里的仓库指的是Docker镜像存储的地方。

官方资料:

Docker 官网:http://www.docker.com

Github Docker 源码:https://github.com/docker/docker

  • 安装docker
apt install docker-ce -y

检查服务

systemctl [start|stop|restart|status|...] docker
docker version|info

注意:

安装前:只有eth0和lo网卡

安装后:docker启动后,多出来了docker0网卡,网卡地址172.17.0.1

加速配置

# 定制加速仓库
echo '{"registry-mirrors": ["https://kcmn5udq.mirror.aliyuncs.com"]}' > /etc/docker/daemon.json

# 重启服务
systemctl restart docker

2、基础管理

2.1、镜像管理

基本实践

搜索线上的nginx镜像文件

# 需要联网
docker search [image_name]

获取

docker pull [image_name]

查看

docker images <image_name>

历史(查看镜像文件创建历史记录)

docker history [image_name]

进阶实践

标签(起个别名)

docker tag [old_image]:[old_version] [new_image]:[new_version]

示例:
多了一个镜像,但镜像的ID是一样的(表示的是同一个镜像,知识起了个别名)

python@ubuntu:~$ docker tag nginx:latest new_nginx:v1.0

python@ubuntu:~$ docker images 
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
new_nginx                 v1.0                f949e7d76d63        12 months ago       126MB
nginx                     latest              f949e7d76d63        12 months ago       126MB
mysql                     5.7.22              0d16d0a97dd1        2 years ago         372MB
delron/fastdfs            latest              8487e86fc6ee        2 years ago         464MB
delron/elasticsearch-ik   2.4.6-1.0           095b6487fb77        2 years ago         689MB

删除

docker rmi [image_id/image_name:image_version]
  • (注意:删除的有别名的镜像的时候,删除的是image_name,如果删除镜像id,那么该镜像会被删除)。
  • 这里示例删除别名镜像:
python@ubuntu:~$ docker rmi new_nginx:v1.0
Untagged: new_nginx:v1.0
python@ubuntu:~$ docker images 
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
nginx                     latest              f949e7d76d63        12 months ago       126MB
mysql                     5.7.22              0d16d0a97dd1        2 years ago         372MB
delron/fastdfs            latest              8487e86fc6ee        2 years ago         464MB
delron/elasticsearch-ik   2.4.6-1.0           095b6487fb77        2 years ago         689MB

导出

docker save -o [包文件] [镜像]

示例:导出桌面
在这里插入图片描述

导入

docker load < [image.tar_name]
2.2、容器管理

基本实践

查看容器

# -a 表示查看包括未启动的容器
docker ps -a

创建容器并启动(第一次启动需要创建)

docker run -itd <image_name>

启动容器

docker start [container_id]

关闭容器

docker stop [container_id]

删除容器

docker rm [-f] [container_id]

进阶实践

进入(登录)容器

docker exec -it [container_id] /bin/bash

属性解析

-i:则让容器的标准输入保持打开。

-t:让docker分配一个伪终端,并绑定到容器的标准输入上

/bin/bash:执行一个命令

提交(创建一个镜像)

docker commit -m '改动信息' -a "作者信息" [container_id] [new_image:tag]

日志

docker logs [container_id]

属性

docker inspect [container_id]
2.3、数据管理

数据卷

数据卷就是将宿主机的某个目录,映射到容器中(*访问宿主机文件就是访问容器文件),作为数据存储的目录,我们就可以在宿主机对数据进行存储

命令详解

docker run -itd --name [容器名字] -v [宿主机文件]:[容器文件] [镜像名称]

注意:

-v 宿主机文件:容器文件 可以存在多个,表示同时挂载多个

宿主机问文件尽量用绝对路径,容器文件即使不存在,Docker自动创建

2.4、网络管理

默认构建容器,网络模式为桥接模式;那么桥接模式下,容器只能和宿主机通信,原理图如下:

在这里插入图片描述

那么,如果我们想,通过宿主机的ip和端口来直接访问容器,该如何实现呢?接下来,我们讲解docker的端口映射就可以做到这点!

端口映射
在这里插入图片描述

命令格式:

docker -P|p [镜像名称]

注意:

-P(大写) 指的是容器应用PORT随机映射到宿主机上的PORT

生产场景一般不使用随机映射,好处是由docker分配,宿主机端口不会冲突,

-p(小写) 宿主机IP:宿主机PORT:容器PORT

指定端口映射,在标准化场景下使用频率高,

宿主机IP不写表示"0.0.0.0",宿主机PORT不写表示随机端口,容器PORT必须指定

简单实践

默认随机映射(大写的-P)

docker run -d -P nginx

在这里插入图片描述

指定端口映射(-p(小写) 宿主机IP:宿主机PORT:容器PORT)

python@ubuntu:~/Desktop$ docker run -d -p 192.168.203.153:8899:80 nginx
a875f555f9214b38cf45d49bcfacfa6cbf3e904e0d8b069d800f8552da8949b6

此时就可以在本地的window系统访问容器的nginx了
在这里插入图片描述

网络模型

命令格式

docker network help|ls|create|...

模式解析

bridge模式:Docker的默认模式,它会在docker容器启动时候,自动配置好自己的网络信息,同一宿主机的所有容器都在一个网络下,彼此间可以通信。类似于我们vmware虚拟机的nat模式。

host模式:鸠占鹊巢,用着宿主机的东西,干自己的事情。容器使用宿主机的ip地址进行通信。

特点:容器和宿主机共享网络
在这里插入图片描述

**none模式:**这种模式最纯粹,不会帮你做任何网络的配置,可以最大限度的定制化。

简单实践

容器使用宿主机的ip地址和端口进行通信,容器和宿主机共享网络。

# 重点,必须掌握
docker run --network=host -itd --name <容器名称> <镜像名称>

使用网络

docker run --network=host -itd --name nginx-host nginx

断开网络

docker network disconnect bridge-test nginx-new-bri

连接网络

docker network connect bridge-test nginx-new-bri
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值