Docker基础知识

Docker基础知识

一.镜像与容器

当利用docker安装应用时,docker会自动搜索下载应用镜像(image)。

镜像:包含应用本身,应用运行时所需的环境,配置,系统函数库。

容器:当docker在运行镜像时创建一个隔离环境称为容器。

镜像仓库:存储和管理镜像的平台。链接: docker hub平台

下图为部署mysql的过程:

二.命令解读

docker run -d \                  创建并运行一个容器,-d 让容器在后台运行
  --name mysql \                 给容器起名
  -p 3306:3306 \                 端口映射,宿主机端口:进程端口  直接ping容器不通,可访问服务器,间接访问该容器
  -e TZ=Asia/Shanghai \            设置环境变量
  -e MYSQL_ROOT_PASSWORD=123 \
  mysql                       运行的镜像的名字mysql:5.7

三.常见命令

docker常见命令:

命令说明
docker pull拉取镜像
docker push推送镜像到DockerRegistry
docker images查看本地镜像
docker rmi删除本地镜像
docker run创建并运行容器(不能重复创建)
docker stop停止指定容器
docker start启动指定容器
docker restart重新启动容器
docker rm删除指定容器
docker ps查看容器
docker logs查看容器运行日志
docker exec进入容器
docker save保存镜像到本地压缩文件
docker load加载本地压缩文件到镜像
docker inspect查看容器详细信息

四.数据卷(volume)

问题:docker镜像下的资源只配备运行所需的命令,很多vi ll都没有,因此无法修改部署

数据卷是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁

挂载目录:docker run -v 数据卷:容器内目录

注:容器若已经创建,没有办法再挂载,需先删除容器,docker rm -f nginx

实例(利用Nginx容器部署静态资源–将静态资源部署到nginx的html目录上):

  • 挂载目录:
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx  //数据卷名称任意,容器内目录可以在hub docker中寻找
  • 挂载点查看:
docker volume inspect html

此时,宿主机目录已经间接和容器目录产生关系

  • cd进入该目录并且使用vi命令修改内容
cd /var/lib/docker/volumes/html/_data
vim index.html
  • 进入浏览器输入ip+端口号进行查看(我的ip+端口号192.168.136.129:80)

过程中可能会遇到的问题:

1.启动一个nginx容器报错

docker: Error response from daemon: driver failed programming external connectivity on endpoint webs

解决方法:

systemctl stop firewalld
setenforce 0
systemctl restart docker

2.浏览器中打不开页面

url: (7) Failed to connect to 192.168.136.129 port 80 after 0 ms: Connection refused

解决方法:

该原因是因为nginx没有启动

docker ps
docker start nginx
curl 192.168.136.129:80

五.本地目录挂载

作用:实现宿主机目录与容器的(数据目录,配置文件,初始化脚本等等)挂载 docker run -v 本地目录:容器内目录

注:本地目录要以"/“或者”./"开头,若直接名称开头会被识别为数据卷而非本地目录

六.Dockerfile语法

镜像结构:

不需要自己做镜像,自定义镜像时,描述自己的镜像结构,docker会自动完成整个镜像的构建,如何告诉docker镜像结构?—Dockerfile

Dockerfile是一个文本文件,其中包含一个个指令,用指令来说明要执行什么操作来构建镜像。

指令说明
FROM指定基础镜像
ENV设置环境变量,可在后面指令使用
COPY拷贝本地文件到镜像的指定目录
RUN执行Linux的shell命令,一般是安装过程的命令
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的
ENTRYPOINT镜像中应用的启动命令,容器运行时调用

编写好了Dockerfile,可以利用下面命令构建镜像:

docker build -t myImage:1.0 .

  • -t:给镜像起名,格式为repository:tag的格式,不指定tag,默认就是latest
  • .:指定dockerfile所在目录,当前目录就是“.”

自定义镜像:

1.准备好一个dockerfile与一个架构包,以及基础镜像

docker load -i jdk.tar //加载镜像
cd demo/
docker build -t docker-demo . //构建镜像
docker run -d --name dd -p 8080:8080 docker-demo //创建并运行一个容器
docker logs -f dd

七.容器网络互联

加入自定义网络的容器可以通过容器名互相访问
Docker的网络操作命令如下:

命令说明
docker network create创建一个网络
docker network ls查看所有网络
docker network rm删除指定网络
docker network prune清除未使用的网络
docker network connect使指定容器连接加入某网络
docker network disconnect使指定容器连接离开某网络
docker network inspect查看网络详细信息

八. DockerCompose–项目一键部署

docker compose [option] [command]
其中,OPTIONS和COMMAND都是可选参数,比较常见的有:

类型参数或指令说明
Options-f指定compose文件的路径和名称
-p指定project名称。project就是当前compose文件中设置的多个service的集合,是逻辑概念
Commandsup创建并启动所有service容器
down停止并移除所有容器、网络
ps列出所有启动的容器
logs查看指定容器的日志
stop停止容器
start启动容器
restart重启容器
top查看运行的进程
exec在指定的运行中容器中执行命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值