docker入门使用

本文详细介绍了Docker的入门使用,包括Docker的三大核心元素:镜像、容器和Registry。通过实例演示了如何安装Docker,配置阿里云镜像加速,以及常用命令的使用,如拉取、删除镜像,启动、关闭容器等。此外,还探讨了为何要将容器制作成镜像,并强调了镜像在环境备份和分享中的重要作用。
摘要由CSDN通过智能技术生成

docker入门使用

docker 三要素:镜像(image)、容器(contarin)、registry(包含多个仓库)

镜像:顾名思义就是咱们将要把代码和环境打包在一起的这个产物,就是镜像。
这里的镜像就如下方虚拟机创建时候使用的镜像类似。这个镜像便于移动,并且这个镜像我们可以交给任何人使用,其他人使用的时候也很方便,只需要将其实例化即可。比如一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了MySQL或用户需要的其它应用程序。

容器:运行起来的镜像我们称之为容器,可以理解为运行环境或者实例。其实质是进程,随着代码运行结束,进程结束,容器也就消失了。每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件

registry:类似网盘,是各云厂商提供的镜像存取服务,将镜像存储在云端仓库,方便我们随时随地在不同的介质上运行自己的代码或分享代码。比如你要把本地开发好的代码放在服务器上做耗时的训练动作,那么只需要在服务器上直接拉取自己云端的镜像运行即可。当然除了存储以外还有诸如版本管理等服务功能,类似git。

安装

https://www.docker.com/products/docker-desktop

打开安装包加载一会后一般会弹出两个选项,在Windows家庭版或之前的系统会出现如下所示的相关提示。我们把第一个选上,第二个创建桌面快捷方式。

在这里插入图片描述

而Windows10专业版则会出现一个使用wsl2的提示(最少是1903以上,推荐为2004或更高版本),如果使用wsl2则docker的性能会发挥更好。如下图,这里推荐使用WSL2,如果之后安装完成后发生报错:“WSL 2 installation is incomplete.”可能是WSL2版本比较老,点击引导网址进去下载更新就OK。

在这里插入图片描述

在这里插入图片描述

下面配置阿里云加速地址

右键右下角Docker的小图标,点击settings选择Docker Engine

阿里云——容器镜像服务——镜像加速器——加速器地址点击Apply&Restart,重新启动DockerDesktop即可。

image-20210527202100311

命令总结

初始测试命令

docker --version
docker run hello-world//让docker从官方仓库中拉去hello-world的镜像到本地,并且自动将其实例化成容器。

image-20210527211941499

对镜像基础操作

1.获取当时所有镜像(docker images)

docker image ls
# 或者
docker images
标签含义
REPOSITORY镜像所在的仓库名称
TAG镜像标签
IMAGEID镜像ID
CREATED镜像的创建日期(不是获取该镜像的日期)
SIZE镜像大小

2.拉取镜像(docker pull)

除了使用官方的镜像外,我们还可以在仓库中申请一个自己的账号,保存自己制作的进行,或者拉去使用他人的镜像。

# 官方镜像
docker image pull 镜像名称 
# 或简写为 
docker pull 镜像名称
# 比如
docker pull ubuntu
docker pull ubuntu:16.04

# 个人镜像
docker pull 仓库名称/镜像名称
docker pull xunmi/django

# 第三方仓库拉取
docker pull 第三方仓库地址/仓库名称/镜像名称
docker pull hub.c.163.com/library/mysql:latest
(默认仓库名为library,所有从官方获取镜像相当于`sudo docker image pull library/镜像名称`)


3.删除镜像(docker rmi)

docker image rm 镜像名或镜像ID 或 docker rmi 镜像名或镜像ID
docker image rm hello-world
docker rmi 9e64176cd8a2

删除镜像的前提是没有使用这个镜像的容器,如果有需要先删除容器(报错:Error response from daemon: conflict: unable to remove repository reference “镜像名” (must force) - container 容器ID is using its referenced image 镜像ID,则代表有容器使用了此镜像。)可以尝试先执行docker rm 容器ID`来删除容器,如果还报错,可以看后面删除容器的具体方法。

4.加载镜像(docker run)

上面我们说过,镜像只是一个只读类型的文件,而我们的环境不可能只是一个这样的文件,所以我们需要把这个镜像加载成我们的环境,也就是让他变成容器。

docker run [可选参数] 镜像名 [向启动容器中传入的命令]

常用可选参数和作用

-i 表示以《交互模式》运行容器。
-d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name 为创建的容器命名。(默认会随机给名字,不支持中文字符!!!)
-v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p 表示端口映射,即宿主机端口:容器中端口。 比如:-p 8080:80 就是将容器中的80端口,映射到主机中的8080端口
–network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。每个 Docker 容器都有自己的网络连接空间连接到虚拟 LAN。使用此命令则会让容器和主机共享一个网络空间。

我们可以启动一个网站docker run -dp 8080:80 --name docker-test docker/getting-started

如果没有下载docker/getting-started的进行,会自动帮你下载
成功启动后,可以在浏览器中输入http://localhost:8080/即可看到如下页面

image-20210527223810270

对容器的操作

1.查看容器(docker ps)

# 查看当前所有正在运行的容器
docker ps
# 查看当前所有的容器
docker ps -a
# 使用过滤器(除了name外,常用的还可以指定id:id= 、所有停止的容器:status=exited,正在运行的容器:status=running 等)
docker ps -f name=指定的名字
# 显示2个上次创建的容器(2可以改变)
docker ps -n 2
# 显示最新创建的容器(包括所有状态)
docker ps -l
# 仅显示ip
docker ps -q
 # 显示容器大小
docker ps -s
标签含义
CONTAINER ID容器ID
IMAGE创建容器的镜像名称
COMMAND默认启动命令(启动时会自动执行)
CREATED创建容器的日期
STATUS当前的状态(启动了多久,多久之前退出等)
PORTS映射的端口
NAMES容器的名称
SIZE容器大小(使用-s命令参数时才能看到)

2.启动和关闭容器

# 停止容器
docker container stop 容器名或容器id
# 或可简写为
docker stop 容器名或容器id

# 强制关闭容器
docker container kill 容器名或容器id
# 或可简写为
docker kill 容器名或容器id

# 启动容器
docker container start 容器名或容器id
# 或可简写为
docker start 容器名或容器id

tip :如果我们成功启动或者关闭一个容器的话,会返回容器名或者容器id。stop和kill的区别: stop是比较优雅的关掉一个容器,类似我们正常退出一个软件,而kill是当一个进程出现意外无法正常关闭的时候,我们强行进行关闭,有点像我们使用任务管理器进行结束进程操作

3.操作后台容器

启动一个linux的一个发行版kali,如果加载一个我们没有的镜像,docker会自动从官方仓库中进行拉取。

docker run -i -d -t --name=kali-test kalilinux/kali-rolling

开启容器后,如果需要在容器内执行命令,可以将后台切换到前台,也可能使用docker命令将我们需要执行的命令传入。

4.删除容器(docker rm)

# 使用rm删除容器
docker rm 容器名或容器id
# 列如
docker rm docker-test

如果报错Error response from daemon: You cannot remove a running container容器ID. Stop the container before attempting removal or force remove·则代表这个容器已经启动,需要执行 docker stop 容器id,停止此容器。

5.容器制作成镜像

为什么要把容器制作成镜像?

  • 镜像可以看作为是一种备份,如果我们后期环境出现了问题,可以还原到早期镜像。
  • 镜像便于传播,可以让自己的其他设备或他人的重复利用变得更加简单容易

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moletop

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值