锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

第11节:Docker基本操做

时间:2023-11-22 14:37:02 mn35光电传感器对射型

1.镜像相关命令

  • 镜像名称一般分为两部分:[repository]:[tag]。
  • 在没有指定tag时,默认是latest,镜像代表最新版本。

比如mysql:5.7 mysql指的是repository,5.7是tag。

截屏2022-04-09 下午6.08.03

docker builder构建镜像 dicker images 查看本地镜像 docker rmi xxx 删除镜像 docker push 将镜像推到远程仓库 docker pull 拉取镜像 docker save保存镜像为压缩包 docker load 加载压缩包为镜像 

2、使用

1.首先,去镜像仓库搜索nginx镜像,比如https://registry.hub.docker.com/

你可以进去查看我们可以获得的一些信息

2.根据查看的镜像信息,拉取指定版本或最新版本

sudo docker pull nginx 

3.查看本地镜像

sudo docker images 

其他命令:

sudo docker save -o nginx.tar nginx:latest #保存为tar sudo docker rmi nginx:latest #删除 sudo docker load -i nginx.tar #加载tar为镜像 docker load --help #查看load命令 

3、容器命令

3.1.创建一个操作Nginx容器

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

命令解读:

  • docker run :创建并运行容器
  • –name : 给容器起个名字
  • -p :映射宿主机端口和容器端口,宿主机端口在冒号左侧,容器端口在右侧
  • -d:容器在后台运行
  • nginx:例如,镜像名nginx

3.2、查看日志

docker logs -f xxx

查看名字为xxx的容器日志

3.3.进入刚才的容器

docker exec -it mn bash

命令解读:

  • docker exec :进入容器内部,执行一个命令
  • -it : 为当前进入的容器创建标准输入输出终端,允许我们与容器交互
  • mn :进入容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

exit是退出

3.4、进入nginx html目录

cd /usr/share/nginx/html 

修改index.html

sed -i 's#Welcome to nginx#hello#g' index.html sed -i 's###g' index.html 

不建议在容器中修改文件,非常不方便。

3.5、总结

每个命令都可以在后面添加–help查看用法。

比如docker ps --help可以知道,docker ps -a 命令可以查看所有容器,docker ps只能看大容器。

nginx容器启动后,localhost访问成功。

4.容器与数据耦合

4.1.存在的问题

4.2、数据卷

数据卷(volume)指向宿主机文件系统中的某一目录的虚拟目录。

我们可以将容器中的文件绑定到数据卷中,这样不同的容器就可以共享相同的文件。

4.3、操做数据卷

docker volume [COMMAND] #docker volume命令是根据命令后跟随的数据卷操作command确定下一步: create 创建一个volume  inspect 显示一个或多个volume的信息  ls    列出所有的volume  prune  删除未使用的volume  rm    删除一个或多个指定的指定volume 

1.创建数据卷

列出所有数据卷

3.显示数据卷信息

Mountpoint:指真实目录

4.删除未使用的数据卷

5.挂载数据卷

当我们创建容器时,我们可以通过 -v 将数据列入容器目录

docker run \                 #docker run :创建和运行容器   --name mn \                #--name mn :给容器起个名字叫mn   -v html:/root/html \       #-v html:/root/htm :把html数据卷挂载到容器/root/html这个目录中   -p 8080:80                 #-p 8080:80 :将宿主机的800端口映射到容器的808端口/spa> nginx \ #nginx :镜像名称 

我们先把之前创建的容器都删除了,然后创建新的:

可以看到,容器中的文件跑到了真实的目录下:

这样就可以用vi修改了。而且其他容器也能共享这些文件。

6、宿主机目录挂载

6.1、差异

之前是将容器目录挂载到数据卷下,这种方式是交给docker管理,目录比较深。

我们还可以直接挂载到我们指定的目录下。

6.2、操作

目录挂载与数据卷挂载的语法是类似的:
-v [宿主机目录]:[容器内目录]
-v [宿主机文件]:[容器内文件]

比如:
docker run --name mn -p 80:80 -v /home/dev/nginx/:/usr/share/nginx/html/ -d nginx

自己测试,这样不会自动创建出文件。

7、自定义镜像

7.1、镜像结构

镜像是分层结构,每一层称为一个Layer

  • BaseImage层:包含基本的系统函数库、环境变量、文件系统
  • Entrypoint:入口,是镜像中应用启动的命令
  • 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置

7.2、什么是Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。

指令 说明 示例
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量,可在后面指令使用 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY ./mysql-5.7.rpm /tmp
RUN 执行Linux的shell命令,一般是安装过程的命令 RUN yum install gcc
EXPOSE 指定容器运行时监听的端口,是给镜像使用者看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar

更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章