【Docker】docker的基本使用方法
- 镜像image与容器container的关系
- 基本命令
- - 查看 Docker 版本
- - 拉取镜像
- - 查看系统中的镜像
- - 删除某个镜像
- - 列出当前 Docker 主机上的所有容器,包括正在运行的、暂停的、已停止的,以及未运行的容器
- - 列出当前 Docker 主机上的正在运行的容器
- - 进入正在运行的容器
- - 退出容器
- - 删除容器
- - 使用 docker start 命令后跟容器 ID 或名称来启动容器
- - 停止正在运行的容器
- - 启动docker服务
- - 停止docker服务
- - 重启docker服务
- - 检查docker服务状态
- - 将本地文件或环境复制到docker容器中(需要先退出容器 ctrl + d)
- - 根据容器创建镜像
- - 将镜像保存为压缩包
- - 加载镜像
- 参考文献
镜像image与容器container的关系
- 镜像是模板:Docker 镜像是一个轻量级、可执行的软件包,包含了运行一个应用程序所需的代码、运行时、库、环境变量和配置文件。镜像可以看作是容器的模板,用于创建容器的实例。
- 镜像可以创建多个容器:同一个 Docker 镜像可以用于创建多个独立的容器实例。每个容器都有自己的文件系统、网络设置、环境变量等,彼此之间是隔离的。
- 容器是镜像的运行实例:当运行一个 Docker 镜像时,Docker 会创建一个容器,这是镜像的沙盒实例。容器是隔离的、安全的,并且是可移植的
- 安装了Docker的机器是宿主机,在容器内的代码不会受到宿主机环境的影响
- 配置好的容器可以打包成镜像,可以快速迭代,方便二次开发
优点:
- 轻量级和高效:Docker容器共享宿主机的操作系统内核,因此不需要像虚拟机那样复制整个操作系统,这使得容器比虚拟机更加轻量和高效
- 可移植性:Docker容器可以在任何支持Docker的系统上运行,无论是开发环境、测试环境还是生产环境,都能保证一致,eg.别人的环境打包好镜像,我们拿到镜像后不用配置环境,根据该镜像生成容器就可以直接在容器里运行程序
- 隔离性:每个容器都是相互隔离的,拥有自己的文件系统,并且运行在独立的网络环境中。这有助于防止应用之间的冲突
基本命令
- 查看 Docker 版本
sudo docker --version
- 拉取镜像
Docker Hub 是 Docker 官方提供的公共镜像仓库,可在此链接中寻找需要的镜像并拉取到本地,其中会提供拉取镜像的命令
sudo docker pull [OPTIONS] 镜像名:TAG(不输入tag则默认拉取最新版,默认TAG是latest)
- 查看系统中的镜像
sudo docker images
- 删除某个镜像
sudo docker rmi 镜像ID或镜像名:tag
- 列出当前 Docker 主机上的所有容器,包括正在运行的、暂停的、已停止的,以及未运行的容器
sudo docker ps -a
- 列出当前 Docker 主机上的正在运行的容器
sudo docker ps
- 根据镜像创建一个新的容器
-d:以 detached 模式运行容器,即在后台运行
-t:分配一个伪终端,通常与 -i 一起使用,使得可以与容器进行交互
-i:保持容器的标准输入(STDIN)打开,即使不附加到终端
当使用 -d 参数时,容器会在后台运行,不会阻塞当前的命令行或终端会话。如果想启动一个交互式的会话,或者想要进入正在运行的容器,可以使用 docker exec 命令
要实现容器一被创建就自动运行,您需要在 docker run 命令中使用 -d(detached 模式)选项。这个选项允许容器在后台运行,即不与当前的命令行或终端会话交互
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
eg. sudo docker run -d --name my_container(容器名) my_image(镜像名:tag)
sudo docker run --name 容器名 -idt 镜像名:tag
- 进入正在运行的容器
sudo docker exec -it 容器名 /bin/bash
这里的 -it 参数与 docker run 中的相同,/bin/bash 是您希望在容器内部启动的 shell
- 退出容器
ctrl + d
- 删除容器
sudo docker rm container_name_or_id
- 使用 docker start 命令后跟容器 ID 或名称来启动容器
sudo docker start CONTAINER_ID_OR_NAME
- 停止正在运行的容器
sudo docker stop container_name_or_id
- 启动docker服务
sudo systemctl start docker
- 停止docker服务
sudo systemctl stop docker
- 重启docker服务
sudo systemctl restart docker
- 检查docker服务状态
sudo systemctl status docker
- 将本地文件或环境复制到docker容器中(需要先退出容器 ctrl + d)
sudo docker cp /本地路径 容器名:/目标路径
eg. sudo docker cp /home/b/miniconda3/envs/yolo1.7 test:/opt/conda/envs
- 根据容器创建镜像
repository_name:tag 是为新镜像指定的名称和标签
在使用 docker commit 从容器创建镜像之前,通常需要确保容器已经停止运行
sudo docker commit [OPTIONS] CONTAINER_ID或容器名称 [REPOSITORY[:TAG]]
eg. sudo docker commit -a '作者' -m '提交说明' test image_test
-a 或 --author:设置镜像的作者字段,后面跟着作者的名字或邮箱
-m 或 --message:提交时的说明信息,通常用来描述镜像的内容或用途
- 将镜像保存为压缩包
sudo docker save --output my_image.tar my_image:my_tag
eg.sudo docker save -o test_tar.tar image_test
my_image:my_tag 是您要导出的镜像的名称和标签。如果未指定标签,将默认使用 latest
- 加载镜像
sudo docker load --input my_image.tar
sudo docker load -i test_tar.tar
参考文献
- Docker封装anaconda环境,生成镜像并打包,纯小白一文读懂(二)