admin管理员组

文章数量:1530085

在这篇文章中记录一下docker安装的过程以及遇到的问题&解决方法,以便后续再安装时使用,也给大家做个参考。之后总结一些docker常用的基本命令。

文章目录

  • 一、docker desktop安装
      • 1. 下载
      • 2. 安装
      • 3. 启动docker desktop
  • 二、docker基本命令
      • 0. 帮助启动类命令
      • 1. 查看docker信息
      • 2. 镜像文件管理
      • 3. 容器管理

一、docker desktop安装

1. 下载

在官网 https://docs.docker/desktop/windows/install/ 下载docker desktop安装文件。

2. 安装

下载好后,双击“Docker Desktop Installer.exe”安装docker desktop,勾选 “Install required Windows components for WSL 2”和“Add shortcut to desktop” 2个功能复选框。
默认安装地址就是系统盘(C盘),这个安装时好像无法直接更改。但可以再后续通过mklink命令软连接到别的盘,具体操作可以参考这篇文章:

https://blog.csdn/weixin_43913077/article/details/113870002

如果碰到“当文件已存在时,无法创建该文件。”的问题,直接把C盘的原文件删除再执行mklink命令即可。(如果不放心可以备份一下,哈哈)

3. 启动docker desktop

安装完成后,打开desktop它可能会提醒安装wsl,按照它给的链接一步一步安装就好了。
然后还需要一个Windows发行版的Linux子系统,先确保以下的选项勾选了(控制面板>程序和功能,然后按“启用或关闭Windows功能”就会出现Windows功能对话框,勾选红框里的两个选项),然后直接在MicroSoft Store搜索下载你所需要的系统就好了(我下的是Ubuntu20.4)。
(这些那个链接都会告诉你怎么做,按他说的做就好)

做完这些电脑应该会要求重启。重启后打开docker desktop,等待一会儿,左下角绿了就说明启动成功了。

然后我们在设置里面添加一些语句来增加镜像源,提高镜像拉取的速度。添加好后点击右下角的 “Apply & Restart” 就好了:


我添加的是这些:

镜像源网址
官方镜像https://registry.docker-cn
网易http://hub-mirror.c.163
中科大https://docker.mirrors.ustc.edu

至此,docker desktop安装完成啦!
然后我们可以修改镜像存放的位置,因为镜像默认存放的位置还是系统盘,具体操作方法可以参考这篇文章:

win10修改docker镜像的存储位置

之后我们可以尝试拉取一个镜像(用pull命令,例: docker pull hello-world),然后去你的目标镜像存储目录看一下更新时间是不是你刚刚拉取镜像的时间(这个存在一点点延迟,可以多刷新等待一下),如果是,那么就说明修改成功了。

(额。。还是老老实实用虚拟机的Linux环境吧,win10很多命令都用不了比如systemctl。。)

二、docker基本命令

0. 帮助启动类命令

启动docker:

> systemctl start docker  

停止docker:

> systemctl stop docker

重启docker:

> systemctl restart docker

查看docker状态:

> systemctl status docker

开机启动:

> systemctl enable docker

1. 查看docker信息

查看docker版本信息:

> docker version

查看docker系统信息:

> docker info

查看docker使用语法/帮助:

> docker --help  # 查看总体帮助文档
> docker [具体命令] --help  # 查看docker命令帮助文档

2. 镜像文件管理

查看本地镜像列表:

> docker images
> docker images -a  # 列出本地所有镜像(含历史镜像)
> docker images -q  # 只列出镜像ID
> docker images -qa # 列出本地所有镜像的镜像ID

查找基础镜像:

> docker search [关键词]
> # 例:docker search hello-world
> # 还可以使用--filter来进行搜索结果的筛选:
> # 例:docker search --filter=stars=100 hello-world,该命令搜索star数大于等于100的镜像
> 
> docker search --limit [关键词]  # 只列出N个镜像,默认25> # 例:docker search --limit 5 redis

镜像抓取:

> docker pull [OPTIONS] [镜像名字][:TAG]
> # TAG通常为版本号,如果不写则默认抓取最新版本,相当于[:latest]> # 例:docker pull hello-world

查看镜像/容器/数据卷所占的空间:

> docker system df

删除本地镜像:

> docker image rm [IMAGE]
> 或 docker rmi [IMAGE]
> # 其中[IMAGE]表示镜像名字或镜像ID,推荐使用镜像ID
> # 若因为有基于该镜像生成的容器而无法删除镜像,可以-f强制删除:
> docker rmi -f [IMAGE]
> docker rmi -f [IMAGE1] [IMAGE2] [...]  # 删除多个
> docker rmi -f $(docker images -qa)  # 删除全部

插播一个问题:docker虚悬镜像是什么?
仓库名、TAG都是< none >的镜像,有时候镜像在构建的时候出了点问题就会这样。俗称虚悬镜像(dangling image)。

3. 容器管理

查看本地容器运行情况:

> docker container ls  # 显示正在运行的所有容器
> 或 docker ps
> docker container ls -a  # 显示所有容器 
> 或 docker ps -a
> docker ps -l  # 显示最近创建的容器
> docker ps -n  # 显示最近创建的n个容器
> docker ps -q  # 静默模式,只显示容器编号

新建+启动容器:

> docker run [OPTIONS] IMAGE [COMMAND][ARG]
> # 例:docker run -it ubuntu bash 
> 或 docker run -it ubuntu /bin/bash
> 要退出bash终端就输入:exit

OPTIONS说明:

OPTIONS说明
- -name给容器指定一个名字
-d后台运行容器并返回容器ID,也就是启动守护式容器(后台运行)(docker容器后台运行时就必须有一个前台进程,容器运行的命令如果不是那种一直挂起的命令(比如运行top,tail),就是会自动退出的。)(Redis不会自杀,Ubuntu就会。。不知道原因)
-iinteractive,以交互模式运行容器,通常与-t同时使用
-tterminal,为容器重新分配一个伪输入终端,通常与-i同时使用
-it启动交互式容器(前台有伪终端,等待交互),表示启动后对这个容器有进一步的请求,需要返回一个终端,让我能够输入命令进行操纵
-P随机端口映射
-p指定端口映射

退出容器:

> exit  # run进入容器,exit退出,容器停止
> Ctrl+p+q  # run进去容器,Ctrl+p+q退出,容器不停止

Ctrl+p+q退出,容器还在运行:

启动已停止运行的容器:

> docker start [容器ID或容器名]

重启容器:

> docker restart [容器ID或容器名]

停止容器:

> docker stop [容器ID或容器名]

强制停止容器:

> docker kill [容器ID或容器名]

删除容器:

> docker rm [容器ID或名字]  # 删除已停止的容器,先stop再删 
> docker rm -f [容器ID或名字]  # 强制删除
> docker rm -f $(docker ps -a -q)  # 强制删除所有容器

查看容器日志:

> docker logs [容器ID] 

查看容器内运行的进程:

> docker top [容器ID]

查看容器内部细节:

> docker inspect [容器ID]

进入正在运行的容器并以命令行交互:

> docker exec -it [容器ID] bash  # exec是在容器中打开新的终端,并且可以启动新的进程。用exit退出,不会导致容器停止。推荐使用。
> docker attach [容器ID]  # attach直接进入容器启动命令的终端,不会启动新的进程。用exit退出会导致容器停止

从容器内拷贝文件到主机:

> docker cp [容器ID:容器内路径] [目的主机路径] 

导入和导出容器:

> docker export [容器ID] > 文件名.tar  # 导出容器的内容作为一个tar归档文档
> cat 文件名.tar | docker import - 镜像用户(包名)/镜像名:镜像版本号  # 从tar包中的内容创建一个新的文件系统再导入为镜像

本文标签: 入门命令DockerampWSL