Docker容器入门指北

admin 2022年5月11日09:08:42评论18 views字数 3138阅读10分27秒阅读模式

Docker 是一种基于 Linux 的容器化技术,类似于轻量的虚拟机。它采用 C/S 架构,使用Go语言开发。

Docker 分为 2 个版本:社区版(Community Edition, CE)和企业版(Enterprise Edition, EE),社区版免费,企业版是收费的。

针对 macOS 10.10.3 和 Windows 10,Docker 还推出了Docker DesktopDocker Desktop 又分为 2 个渠道(channel),稳定渠道(Stable)和抢先渠道(Edge),需要注意的是,Docker Desktop对系统是有要求的,例如,针对 Win10 的 Docker for Windows 因为要用到 Hyper-V 虚拟机,所以要求系统是 64 位专业版或企业版并开启 Hyper-V 功能。

安装Docker

本人使用Centos 8测试安装

> yum install docker-ce -y

启动 Docker

> systemctl start docker

关闭 Docker

> systemctl stop docker

重启Docker

> systemctl restart docker

使用Docker

1. 修改当前用户组

Docker命令默认需要root权限,也就是说每个指令需要sudo前缀,非常的麻烦。解决这个麻烦的方法是将当前用户加到docker用户组,具体方法是:

> groupadd docker
> usermod -aG docker ${USER}

之后要应用新的组,需要重新登陆服务器或者输入下面内容:

> su - ${USER}

这里需要你的登陆密码。之后,你可以通过下面方法来确认当前用户加入到了docker组:

> id -nG

确认当前用户已经加入到docker组.

2. Docker基本命令

Docker命令的基本语法组成为:

> docker [option] [command] [arguments]

输入docker回车可以列出所有的docker子命令,使用:

> docker docker-subcommand --help

可以获取子命令的帮助,使用docker info可以获取系统信息。

3. 使用Docker镜像工作

Docker容器从Docker镜像中工作,它默认从Docker hub拉取这些需要的镜像。运行Docker容器的大多数应用和linux的发行版所需要的镜像image都能在Docker hub找到。为了检查你是否能从Docker hub下载镜像,使用下面指令:

> docker run hello-world

成功运行后会看到一些欢迎信息,’Hello from Docker!…balabala’。使用docker和search子命令,可以搜索镜像,比如搜索Nginx镜像使用:

>  docker search nginx

可以看到Nginx镜像的搜索结果,然后当你确定了你想用的镜像的时候,使用pull子命令,例如:

> docker pull nginx

当镜像下载完成后,你可以使用下载好的镜像和run子命令来运行一个容器,如果镜像不存在,docker会先下载这个镜像:

> docker run nginx

要检查当前有那些镜像已经下载到了当前计算机上,使用:

> docker images

运行容器所使用的镜像可以被修改从而生成新的镜像,新的镜像可以上传或者说push到Docker hub上用来分享。

4. 运行Docker容器

之前的hello-world程序运行后就退出了,实际上,Docker容器还有更强大的功能,它们可以变得可交互,就像一台虚拟机一样,不过比虚拟机更加节省资源。

使用下面的指令可以使用Nginx镜像来运行容器,-i-t选项可以赋予你以交互式shell形式进入容器的权限:

> docker run -it nginx

然后你的shell提示符会反映出你现在正在容器中,它的形式是这样的:

root@d9b100f2f636:/#

5. 提交容器中的变化到Docker镜像

当你启用一个Docker镜像的时候,你可以像在虚拟机中一样创建,修改,删除文件,这些改动只会被保存在容器中。你可以启动或者停止它,但是一旦你使用docker rm命令摧毁它的时候,这些变化就会消失。那么如何将容器中的状态保存为镜像呢?

exit

将这些变化提交到新的Docker镜像实例使用下面的命令:其中-m参数是记录了本次提交的备注信息,而-a参数用来定义作者,container-id是需要提交的容器的id,repository通常是你的Docker hub的用户名,除非你在Docker hub上创建了额外的仓库。

> docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name

举一个具体的例子:

> docker commit -m "added nginx" -a "rumenz test" 123456 rumenz/rumenz-nginx

注意:这里提交的镜像只是保存在本地的镜像

当这个操作完成以后,使用docker images可以看到新的镜像已经被添加了进去。下一次需要运行Nginx容器的时候,就可以使用这个新的镜像了。除了这种方法,镜像还可以通过DockerFile来创建。

6. 列出Docker容器

当使用docker一段时间后,你就会有很多active和inactive的容器,使用下面的指令来列出所有active的容器:

> docker ps

如果要观察所有active和inactive的容器,则使用

> docker ps -a

如果要观察最近创建的容器,使用:

> docker ps -l

停止一个正在运行的active状态的容器使用命令:

> docker stop container-id

其中container-id可以通过docker ps命令来找到。

7.本地镜像推到Docker仓库

创建完的镜像当然想要分享给朋友,一个方法是通过上传或者说push到Docker Hub。要想push image首先需要在Docker hub注册账号。然后通过指令登陆Docker hub:

> docker login -u docker-registry-username

在根据提示输入完密码后,可以使用下面指令来push镜像:

> docker push docker-registry-username/docker-image-name

> docker push rumenz/rumenz-python3

然后等待push完成就可以在Docker hub上看见自己的image。

8. 使用Dockerfile

> docker build -t nginx:1.0  .

9. 容器与本地系统的关联

> docker run --name nginx-test -p 8080:80 -d nginx
  • --name nginx-test:容器名称。
  • -p 8080:80:端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  • -d nginx:设置容器在在后台一直运行。
转自:入门小站
Docker容器入门指北

好文推荐

Docker容器入门指北

应急响应的基本流程(建议收藏)

渗透测试面试近期热门题

干货|安全工程师面试题汇总

渗透工程师常用命令速查手册

Web常见漏洞描述及修复建议

流量分析与日志溯源的个人理解

规范报告中的漏洞名称以及修复建议

应急响应 | 7款WebShell扫描检测查杀工具

11个步骤完美排查Linux机器是否已经被入侵


欢迎关注 系统安全运维

原文始发于微信公众号(系统安全运维):Docker容器入门指北

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月11日09:08:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Docker容器入门指北http://cn-sec.com/archives/997648.html

发表评论

匿名网友 填写信息