学习笔记—容器化技术(1)—docker的使用

镜像操作

  以nginx为例:

  搜索镜像:

1
docker search nginx

  拉取镜像:

1
docker pull nginx

  查看所有镜像:

1
docker images

  导出镜像:

1
docker save -o nginx.tar nginx:latest

  导入镜像:

1
docker load -i nginx.tar

  删除镜像:

1
docker rmi nginx:latest

容器操作

  同样以nginx为例,需要注意的是,docker容器有三个状态,分别是运行、暂停和停止。

  容器运行:

1
docker run -d --name nginx01 -p 8080:80 nginx:latest

  容器暂停:

1
docker pause nginx01

  容器从暂停到恢复运行:

1
docker unpause nginx01

  停止一个容器:

1
docker stop nginx01

  启动一个容器:

1
docker start nginx01

  重启一个容器:

1
docker restart nginx01

  删除一个容器:

1
docker rm nginx01

  进入一个容器:

1
docker exec -it nginx01 /bin/bash

  查看容器日志:

1
docker logs nginx01

  查看容器日志tail1000行:

1
docker logs nginx01 --tail=1000

  查看容器内进程:

1
docker top nginx01

  查看容器详细信息:

1
docker inspect nginx01

  查看容器内文件:

1
docker cp nginx01:/etc/nginx/nginx.conf /home/nginx.conf

  查看容器内端口映射:

1
docker port nginx01

  查看容器内网络:

1
docker network inspect bridge

数据卷操作

  数据和容器最好是解耦的,这就需要用到数据卷了。

  数据卷(volume) 是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

  数据卷的基本操作中,创建一个数据卷:

1
docker volume create nginx_volume

  显示所有数据卷:

1
docker volume ls

  删除未使用的数据卷:

1
docker volume prune

  删除指定数据卷:

1
docker volume rm nginx_volume

  查看数据卷详细信息:

1
docker volume inspect nginx_volume

  挂载数据卷到容器:

1
docker run -d -p 80:80 --name nginx02 -v nginx_volume:/etc/nginx nginx

  查看数据卷挂载信息:

1
docker inspect nginx02

Dockerfile自定义镜像

  常见的镜像在DockerHub就能找到,但是对于自己写的项目,需要通过dockerfile来打包镜像。

  首先,要打包镜像,需要知道镜像的结构。

  镜像包括应用程序、系统函数库、环境、配置和对应的依赖。在此不详述。

  构建自定义的镜像时,并不需要一个个文件去拷贝,打包。只需要通过一个file告诉docker,需要哪些基础镜像,拷贝哪些文件,安装什么依赖,启动脚本怎么样,就可以构建镜像,这个file就是dockerfile。

1
2
3
4
5
6
7
8
9
10
11
12
// From是指定基础镜像
FROM nginx:1.14-alpine
// ENV是设置环境变量,这个变量可以在后续指令中使用
ENV PATH /app/node-v10.16.3-linux-x64/bin:$PATH
// COPY是拷贝文件,把宿主机的文件拷贝到镜像中
COPY ./app /app
// EXPOSE是暴露端口,这个端口是容器运行时监听的端口
EXPOSE 80
// RUN是执行命令,安装依赖
RUN npm install
// CMD是启动命令,容器启动时执行的命令,此外,也可以用ENTRYPOINT
CMD ["sh", "-c", "npm start"]

  构建镜像:

1
docker build -t my_nginx .

  运行镜像:

1
docker run -d -p 80:80 --name my_nginx my_nginx

  总结一下,dockerfile其实就是一个有描述镜像构建过程的指令文件,第一行必须是FROM,由一个基础镜像来构建。


学习笔记—容器化技术(1)—docker的使用
https://gagaducko.github.io/2024/09/15/学习笔记—容器化技术-1-—docker的使用/
作者
gagaduck
发布于
2024年9月15日
许可协议