docker的简单安装就直接看菜鸟教程就好 链接到标题

docker的基本的一些东西 链接到标题

docker 里一个dockerfile 就是一个镜像的构建文件,里面写了这个镜像的构建步骤,构建完成后就可以运行这个镜像了

注意一个镜像可以运行多个容器,容器是镜像的一个实例,容器之间是相互隔离的,可以有不同的环境变量,端口映射等

主要的docker命令如下:

  • docker run 启动一个新的容器并运行命令 docker run -d ubuntu
  • docker ps 列出当前正在运行的容器 docker ps
  • docker ps -a 列出所有容器(包括已停止的容器) docker ps -a
  • docker build 使用 Dockerfile 构建镜像 docker build -t my-image .
  • docker images 列出本地存储的所有镜像 docker images
  • docker pull 从 Docker 仓库拉取镜像 docker pull ubuntu
  • docker push 将镜像推送到 Docker 仓库 docker push my-image
  • docker exec 在运行的容器中执行命令 docker exec -it container_name bash
  • docker stop 停止一个或多个容器 docker stop container_name
  • docker start 启动已停止的容器 docker start container_name 可以来个$(docker ps -a -q)来启动所有容器
  • docker restart 重启一个容器 docker restart container_name
  • docker rm 删除一个或多个容器 docker rm container_name
  • docker rmi 删除一个或多个镜像 docker rmi my-image
  • docker logs 查看容器的日志 docker logs container_name
  • docker inspect 获取容器或镜像的详细信息 docker inspect container_name
  • docker exec -it 进入容器的交互式终端 docker exec -it container_name /bin/bash
  • docker network ls 列出所有 Docker 网络 docker network ls
  • docker volume ls 列出所有 Docker 卷 docker volume ls
  • docker-compose up 启动多容器应用(从 docker-compose.yml 文件) docker-compose up
  • docker-compose down 停止并删除由 docker-compose 启动的容器、网络等 docker-compose down
  • docker info 显示 Docker 系统的详细信息 docker info
  • docker version 显示 Docker 客户端和守护进程的版本信息 docker version
  • docker stats 显示容器的实时资源使用情况 docker stats
  • docker login 登录 Docker 仓库 docker login
  • docker logout 登出 Docker 仓库 docker logout
  • 常用选项说明:
    • -d:后台运行容器,例如 docker run -d ubuntu。
    • -it:以交互式终端运行容器,例如 docker exec -it container_name bash。
    • -t:为镜像指定标签,例如 docker build -t my-image .。
    • -p:映射端口,例如 docker run -p 8080:80 nginx。
    • -v:挂载卷,例如 docker run -v /host/path:/container/path nginx。
    • –name:为容器指定名称,例如 docker run –name my-container nginx。
    • -e:设置环境变量,例如 docker run -e ENV_VAR=value nginx。

e.g. 一次简易的docker安装镜像流程:

1. docker search 名称 【这里可以加点限制】
2. docker pull 名称 # 下载
3. docker run -d -p 端口:容器端口 \
-v 主机地址:容器内路径:rw(或ro) --name "shasha" -e AX=sad image名称 
# 运行并映射端口和挂载目录
# 这个run命令一定要小心,一个没写好就会导致容器运行得有问题,要改就只能删除容器重新运行了
4. docker ps # 查看正在运行的容器
5. docker exec -it 容器id /bin/bash # 进入容器
6. docker cp 本地文件路径 容器id:容器内路径 # 复制文件到容器
7. docker rm 容器id # 删除容器
8. docker commit -a="" -m="" 容器id 镜像名称:标签 # 将容器保存为新的镜像

docker的基本的一些东西:
image是一个静态的文件系统,包含了运行应用所需的所有文件和环境配置;container是image的一个实例,是一个正在运行的环境,可以有自己的网络、存储等资源;dockerfile是一个文本文件,包含了一系列指令,用于构建一个新的image。主要记住image是分层的,每一层都是一个只读的文件系统,容器在运行时会在这些层上创建一个可写的层,这样就可以实现容器之间的隔离和资源共享。

-v 有三种挂载方式:bind mount、volume和tmpfs。bind mount是直接将宿主机上的一个目录或文件挂载到容器内,volume是由Docker管理的一个独立的存储区域,可以在多个容器之间共享,tmpfs是一个临时文件系统,数据只存在于内存中,容器停止后数据会丢失。 这里bind mount中映射的宿主机的文件是不会因为容器的删除而删除的,因为它是宿主机上的文件,而不是容器内的文件,所以即使容器被删除了,宿主机上的文件仍然存在。 tmpfs和匿名挂载都不常使用。


如果要在多个容器之间共享数据,那么可以使用相同的挂载目录。

运行my-ubuntu1容器 链接到标题

docker run -it –privileged=true -v /home/doubi/my-ubuntu/host_data:/root/docker_data –name my-ubuntu1 ubuntu

运行my-ubuntu2容器 链接到标题

docker run -it –privileged=true -v /home/doubi/my-ubuntu/host_data:/root/docker_data –name my-ubuntu2 ubuntu 上面运行了两个 ubuntu 容器,使用的是宿主机相同的挂载目录,这样在宿主机修改目录下的内容,会同时同步到两个容器中;同样,在一个容器内修改目录下的内容,也可以同步到宿主机和其他的容器中。

上面是一种方式,我们还可以使用 –volumes-from 参数,让一个容器继承另一个容器的卷规则。

举个栗子:

运行my-ubuntu1容器 链接到标题

docker run -it --privileged=true \
-v /home/doubi/my-ubuntu/host_data:/root/docker_data \
--name my-ubuntu1 ubuntu

运行my-ubuntu2容器,继承my-ubuntu1容器的卷规则 链接到标题

docker run -it --privileged=true \
--volumes-from my-ubuntu1 \
--name my-ubuntu2 ubuntu

上面的 my-ubuntu2 容器,使用 –volumes-from 参数继承 my-ubuntu1容器的卷规则,那么他们的挂载将是相同的。

这样在宿主机修改目录下的内容,会同时同步到两个容器中;在一个容器内修改目录下的内容,也可以同步到宿主机和其他的容器中。

这种继承的方式在使用多个容器时更为方便。

参考了很多这个网站