Docker

Docker

介绍:

Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。
docker中文免费手册 [Docker — 从入门到实践]
https://vuepress.mirror.docker-practice.com

在线安装Docker
第一步:安装一组工具

sudo yum install -y yum-utils 

第二步:设置 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

第三步:更新 yum 缓存

sudo yum makecache fast #yum 是包管理器

第四步:安装新版 docker

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

Docker的操作:

启动docker服务
systemctl start docker

查看docker是否启动了,是否是运行状态.
systemctl status docker

设置Docker开机自启
systemctl enable docker

禁用Docker开机自启
systemctl disable docker

重新启动Docker服务
systemctl restart docker

查看Docker信息
docker info

查看docker info中具体key的信息,例如:
docker info | grep ‘Docker Root Dir:’

停止docker服务
systemctl stop docker

Docker镜像的操作:

下载镜像
语法:docker pull 镜像名
案例:
docker pull hello-world

浏览镜像文件
语法:
docker images

查看镜像详情
语法:docker inspect 镜像名或镜像id
docker inspect hello-world

查看镜像历史
一个镜像是由多个层(layer)组成的,那么,我们要如何知道各个层的具体内容呢?通过 docker history 命令,可以列出各个层(layer)的创建信息,例如:
docker history hello-world

导出镜像文件
镜像导出(linux系统中的镜像文件下载到本地-例如window),导出后给他人使用
docker save hello-world | gzip > hello-world.tar.gz

删除镜像文件
语法:docker image rm 镜像名或镜像id
docker image rm hello-world

导入镜像操作
镜像导入(要在hello-world.tar.gz 文件所在目录下执行)
docker load < hello-world.tar.gz

运行镜像文件
基于镜像,启动容器运行。
docker run hello-world

Docker容器的操作:

创建并启动容器
基本语法解析:
docker run -it xxxx bash
其中:
1)xxxx - 镜像名, 或 image id 的前几位,
2)-it 这是两个参数(-i表示交互式操作, -t 表示终端)
3) bash 表示进入操作终端,基于交互式进行相关操作(例如执行linux相关指令)。

案例:通过docker启动运行 centos7镜像
docker run -it centos:7 bash

查看Docker中的容器
查看docker运行中的容器
docker ps

查看docker运行中的所有容器
docker ps -a
其中,-a表示全部(all)。

查看容器日志信息
查看后台运行的容器输出结果,这个指令非常重要,假如容器没有启动,要通过此指令去看一下错误日志。

docker container logs 802

停止或重启容器
停止运行的容器,代码如下:
docker container stop 802

重新启动容器,代码如下:
docker container restart 802

进入指定容器
当需要进入容器进行操作时(容器运行着),可以使用 docker exec 命令,例如:
docker exec -it 802 bash #802为容器id

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

删除容器
假如容器不用了,可执行删除操作,例如:

docker container rm 802 #802为容器id
其中,如果删除运行中的容器,需要添加 -f 参数。

清理所有终止状态容器,例如:
docker container prune

Docker数据管理:

在容器中管理数据主要有两种方式:

1、挂载主机目录 (Bind mounts)-最常用 (docker run -v 宿主机目录:容器目录)
2、数据卷(Volumes)

数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。

挂载主机目录

我们可以在启动容器时,以目录直接挂载的方式进行数据操作,例如:

docker run -it -v /usr/app:/opt/app centos:7 bash

其中:
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建

数据卷操作

第一步:创建数据卷,例如:
docker volume create container-vol

第二步:查看所有数据卷,例如:
docker volume ls

查看指定 数据卷 的信息
docker volume inspect container-vol
查询的结果:

[
{
“Driver”: “local”,
“Labels”: {},
“Mountpoint”: “/var/lib/docker/volumes/container-vol/_data”,
“Name”: “container-vol”,
“Options”: {},
“Scope”: “local”
}
]
第三步:启动挂载数据卷的容器,例如:
docker run -it --mount source=container-vol,target=/root centos:7 bash

或者采用如下简写方式
docker run -it -v container-vol:/root centos:7 bash

-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录

第四步:删除数据卷(如果数据卷被容器使用则无法删除),例如
docker volume rm container-vol

清理无主数据卷
docker volume prune

Docker网络:

Docker 中容器与容器之间进行通讯的解决方案一般有两种:
第一种:两个容器通过宿主机进行通讯(容器中的端口会映射到宿主机上)
第二种:两个容器之间直接通过虚拟网络进行连接,但是需要我们在docker中创建网络。

新建虚拟网络 my-net
docker network create my-net

查看虚拟网络
docker network ls

查看网络描述信息
docker inspect my-net

查看宿主机新建的虚拟网卡
ifconfig

清理容器
docker rm -f $(docker ps -aq)

新建两个容器 cat1 和 cat2

连接到虚拟网络 my-net
docker run -d --name cat1
–net my-net
tomcat

docker run -d --name cat2
–net my-net
tomcat

查看两个容器的虚拟网络ip
docker inspect cat1
docker inspect cat2

测试网络能否互联互通
从宿主机ping两个容器
ping 172.18.0.2
ping 172.18.0.3

进入cat1,ping宿主机和cat2
docker exec -it cat1 ping 172.18.0.1
docker exec -it cat1 ping 172.18.0.3
从容器访问另一个容器,可以使用容器名称访问,容器内部实现了解析环境
docker exec -it cat1 ping cat2

构建镜像:

https://wanght.blog.csdn.net/article/details/117733452

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值