Docker详细应用秘籍

目录

起源

一、Docker是什么?

二、资源网址

三、核心内容

镜像​​​​​​​

容器

数据卷

执行原理

 四、安装

在线安装Docker

离线安装Docker

五、docker操作指令

镜像操作指令

容器操作指令

docker容器应用

Mysql数据库-安装

Redis数据库-安装

Nginx服务器-安装

容器互联

通过虚拟网络进行连接



起源

Docker 是 Paas提供商 dotCloud 开源的一个基于PLX的高级容器引擎,源代码托管在 GithubGithub上, 基于go语言并遵从Apache2.0协议开源。


一、Docker是什么?

Docker 是一个开源的应用容器引擎,提供可运行的容器.可更快的打包/测试以及部署应用程序


二、资源网址

官网:https://docs.docker.com/get-started/overview/

镜像仓库:http://hub.docker.com


三、核心内容

镜像

只是一个虚拟的概念,实际体现并非由一个文件组成,而是由一组文件系统组成或者说 由多层文件系统联合组成

容器

容器是镜像运行时的载体.容器本质是进程,运行于属于自己的独立的命名空间

数据卷

数据卷的生存周期独立于容器,容器消亡,数据卷也不会消亡.
因此使用数据卷时,当容器删除或重新启动之后数据却不会丢失

前提:因容器消亡时,容器存储层也随之消亡,

执行原理

Docker_Host是我们的docker宿主机(就是安装docker的操作系统)

  1. Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在lmages中
  2. Docker Daemon是docker的服务线程,处理docker客户端命令
  3. lmages是Docker本地的镜像仓库,可以通过docker images查看镜像文件

以docker pull命令,了解docker执行过程

  1. 客户端将指令发送给docker daemon
  2. docker daemon先检查Images中有没有相关镜像
  3. 如果本地没有相关镜像,则向镜像服务器请求,将远程镜像下载到本地

 四、安装

在线安装Docker

1.卸载Docker

sudo yum remove docker-ce \
                docker-ce-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

2.安装工具包

sudo yum install -y yum-utils 

3.设置 yum 仓库地址

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

其中哪个都可以

4.更新 yum 缓存

sudo yum makecache fast #yum 是包管理器

5.安装Docker

sudo yum install -y docker-ce docker-ce-cli containerd.io

离线安装Docker

1.下载docker离线包

https://github.com/Jrohy/docker-install/

2.下载离线安装工具

3.将下载好的资源放在同一个目录 

4.执行安装操作

# 进入/root/setup/docker 文件夹
cd /root/setup/docker

# 为 install.sh添加执行权限
chmod +x install.sh

# 安装
./install.sh -f docker-20.10.6.tgz

5.检查安装状态

docker info

五、docker操作指令

1.启动Docker服务

sudo systemctl start docker

2.镜像开机自启
开启:

systemctl enable docker

禁用

systemctl disable docker

3.查看docker版本

docker -v

4.查看Docker状态

5.重新启动

sudo systemctl restart docker

 6.停止服务

systemctl stop docker

7.防火墙

# 开机启动
systemctl enable firewalld
# 重启
systemctl restart firewalld
# 关闭
systemctl stop firewalld
# 开启
systemctl start firewalld
# 查看状态
systemctl status firewalld

8.网卡操作

关闭网卡
service NetworkManager stop    

永久关闭 Manager网卡
chkconfig  NetworkManager  off    

重启network网卡
service  network restart		  

镜像操作指令

1.镜像加速

1-1.命令生成文件

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF

1-2.修改配置文件

/etc/docker/daemon.json

2.下载镜像

docker pull 镜像名

3.浏览镜像文件

sudo docker images

4.查看镜像详情

docker inspect 镜像名或镜像id

5.查看镜像历史

docker history 镜像名/镜像id

6.导出镜像文件

docker save  hello-world | gzip > hello-world.tar.gz  

7.删除镜像文件

docker image rm 镜像名或镜像id

8.导入镜像操作

docker load < hello-world.tar.gz  

9.运行镜像文件

docker run 容器名/容器id

容器操作指令

1.创建并启动容器

docker run -it xxxx bash

1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。

2.查看Docker中的容器

2-1.查看docker运行中的容器

docker ps

2-2.查看docker运行中的所有容器

docker ps -a

3.查看容器日志信息

docker container logs 容器名/容器id

4.停止运行的容器

docker container stop 容器id

5.重启容器

docker container restart 容器名/容器id

6.进入指定容器

docker exec -it 802 bash #802为容器id

7.退出容器

假如从宿主机进入了启动的容器,退出容器需要使用exit指令

8.删除容器

docker container rm 802 #802为容器id


如果删除运行中的容器,需要添加 -f 参数。

9.清理所有终止状态容器

docker container prune

10.容器开机自启

docker update 容器名/容器ID --restart=always

11.容器状态监控

docker stats

docker容器应用

Mysql数据库-安装

1.清空已安装文件

yum  clean   all

2.拉取指定版本的Mysql

docker pull mysql:5.7.36

 3.挂载配置文件并 运行容器

sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.36

Redis数据库-安装

1.拉取镜像文件

docker pull redis

2.创建Redis文件夹及文件

2-1.创建Redis配置文件目录

mkdir -p /usr/local/docker/redis01/conf

2-2.在配置文件目录中创建redis.conf配置文件

touch /usr/local/docker/redis01/conf/redis.conf


因为Redis镜像中这个redis.conf是一个目录所以需要创建一个配置文件,否则我们本地挂载点 也会编程一个目录

3.挂载配置文件并 运行容器

sudo docker run -p 6379:6379 --name redis01 \
-v /usr/local/docker/redis01/data:/data \
-v /usr/local/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf 


–name:给容器起一个名
-p:端口映射 宿主机:容器
-v:挂载自定义配置 自定义配置:容器内部配置
-d:后台运行
redis-server --appendonly yes: 在容器执行redis-server启动命令,并打开redis持久化配置

4.查看正在运行的进程


Nginx服务器-安装

1.拉取镜像文件

docker pull nginx

2.运行容器

docker run -p 80:80 --name nginx -d nginx

3.复制配置

docker container cp nginx:/etc/nginx .

执行以上指令则直接复制当前目录---用ls打开

4.停止/删除容器

5.文件

5-1.修改文件名 

mv nginx conf

5-2.新建一个nginx文件夹把conf移动到新建的nginx

5-3.把以上复制的配置放到Nginx文件夹中 

mv conf nginx

前提复制[配置时是mydata文件夹

6.创建新的Nginx容器

docker run -p 80:80 --name nginx \
 -v /mydata/nginx/html:/usr/share/nginx/html \
 -v /mydata/nginx/logs:/var/log/nginx \
 -v /mydata/nginx/conf/:/etc/nginx \
 -d nginx

7.创建“/mydata/nginx/html/index.html”文件

echo '<h2>hello nginx!</h2>' 

容器互联

作用:容器中的端口会映射到宿主机上

通过虚拟网络进行连接

1.初始化网络

1-1.新建网络

docker network create -d bridge t-net  #t-net为自己起的网络名称

其中;
       -d dridge~网络类型,默认:bridge

说明:
         创建好这个网络后,在网络上添加容器,容器就可以通讯

1-2.列出网络

1-3查看网络信息

2.实现容器互联

2-1.创建容器

 2-1-1.打开终端,基于centos:7这个镜像启动容器,并加入n-net这个网路

docker run -it --name app1 --network t-net centos:7

2-1-2.新开终端执行,基于centos:7这个镜像再启动容器,同时也加入到n-net网络

docker run -it --name app2 --network t-net centos:7

2-2-1.测试网络互通

在app2的终端执行:
ping app1

在app1的终端执行:
ping app2

测试效果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值