Docker 安全学习之——Docker基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 安全学习之——Docker基础知识相关的知识,希望对你有一定的参考价值。

前言:本篇以nginx镜像的制作过程为例,介绍了Docker容器的基础知识。

一、 手工制作一个包含nginx服务的镜像并启动容器

我使用的centos7.6,目前提供的docker版本为1.13.1,版本是比较老的,因此我从互联上下载了比较新的20.10.9相关的文件到本地,然后在本地进行安装,下载地址:​​https://download.docker.com/​​。具体下载的文件如下:

1、 docker安装

[good@localhost~]$sudo yum localinstall *.rpm

Docker

[root@localhost ~]# docker -v

Docker

[good@localhost ~]$ sudo systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

[good@localhost ~]$ sudo systemctl start docker

[good@localhost ~]$ sudo systemctl status docker

2、下载centos的初始镜像

[good@localhost ~]$ sudo docker search centos

Docker

[good@localhost ~]$ sudo docker pull centos

Docker

[good@localhost ~]$ sudo docker images

Docker

3、对centos初始镜像进行修改

启用镜像,进入容器后修改一下YUM源,方便后面使用:

[root@6bd3435f9295 /]# sed -i s/mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-*

[root@6bd3435f9295 /]# sed -i s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g /etc/yum.repos.d/CentOS-*

[root@6bd3435f9295 /]# exit

Docker

通过exit命令退出后,该容器处于exit状态。

4、使用docker commit命令提交生成一个新的镜像:

docker commit -m "Change repos" -a "Docker yang" c911e547e8bf mydocker/centos:v1

Docker

5、现在基于该镜像通过Dockerfile创建包含nginx服务的镜像:

创建一个目录centosnginx,进入目录创建dockerfile,内容如下:

Docker

通过docker build命令制作镜像,注意最后有一个“.”

[good@localhost centosnginx]$ sudo docker build -t="mydocker/centosnginx:v1" .

从输出可以看到在dockerfile中的每一个命令都执行了,并且创建了一个中间镜像,最后生成了一个最终的镜像:

Docker

6、启动包含nginx服务的镜像:

[good@localhost centosnginx]$ sudo docker run -itd -p:8081:80 5ea73680e9da

Docker

看到本地的8081端口映射到了容器的80端口,现在在本地访问一下:

Docker

镜像启动成功。

7、容器中运行状态查看

进入到运行的这个容器中:

docker exec -it 87beac0c7ca2 /bin/bash

在里面可以执行一些命令:

Docker

8、退出容器:

先按Ctrl+P,再按Ctrl+Q,可以退出容器,让容器仍然保持运行状态;

      在容器中指定的应用终结时,容器也会退出,如果容器只运行了/bin/bash,当输入EXIT或者CTRL+D退出容器并且容器停止运行,如果像上面的例子一样,运行了nginx服务,然后进入到容器中,在通过EXIT或者CTRL+D退出时,容器不会停止运行。

二、使用官方nginx镜像启动服务

1、直接使用docker search nginx可以看到nginx相关的镜像,其中official为官方镜像

2、使用docker pull nginx下载镜像

3、使用nginx官方镜像启动容器

[good@localhost ~]$ sudo docker run --name nginx-demo -p 8081:80 -v /var/www/:/usr/share/nginx/html:ro -d nginx

       说明:-v指定要挂载的目录,可以参考官方说明。

三、相关命令总结

经过上面的步骤,已经从一个初始的镜像制作出了包含nginx运行服务的镜像,并且成功运行了起来,后面又通过下载官方镜像,使用官方镜像启动了容器。这个过程中主要涉及到了镜像相关的命令、容器相关的命令,下面总结一下在这整个过程中相关的命令:

1、 镜像查找

Docker search centos

2、 从仓库中拉取镜像

Docker pull centos:latest

3、 查看本地的镜像

Docker images

4、 使用镜像创建并进入容器

Docker run –it centos:latest /bin/bash

-i 让容器的标准输入保持打开

-t 让docker分配一个伪终端

/bin/bash,启用bash终端,允许进行交互操作

-d docker容器在后台以守护形式运行

[root@localhost centosnginx]# docker run docker.io/centos:latest /bin/echo "hello,world"

Docker

5、 对容器进行修改后,使用commit命令提交到本地的镜像中:

docker commit -m "Change repos" -a "Docker yang" c911e547e8bf mydocker/centos:v1

-m 说明提交的信息,进行标注

-a 指定更新的用户信息

c911e547e8bf 为前面修改过的容器ID

mydocker/centos:v1 tag信息

6、 docker build生成镜像

docker build –t=”mydocker/centos:v2” .

-t 指定标签信息

. dockerfile所在的路径,这里是当前目录,可以修改为一个具体的dockerfile的路径

7、 镜像上传

Docker push mydocker/centos:v2 默认为Docker Hub公共仓库

8、 保存镜像

Docker save

Docker

9、 删除镜像

[root@localhost centosnginx]# docker rmi mydocker/centos:v1

10、            导入镜像

docker load < mydocker_centos_v1.tar

Docker

11、            删除容器

docker rm c911e547e8bf

12、            查看容器

Docker ps 查看运行中的容器

Docker ps –a 查看所有的容器,包括已经退出的

13、            启动已经停止的容器

Docker start 87beac0c7ca2

14、            查看容器的输出信息

docker logs 87beac0c7ca2

15、            停止docker运行

Docker stop

16、            进入运行的容器中

Docker attach 87beac0c7ca2

docker exec -it 775c7c9ee1e1 /bin/bash

Docker

17、            运行容器,允许外部访问

docker run -itd -p 8081:80 mydocker/centos:v2

18、            查看容器端口映射信息

docker port 87beac0c7ca2

Docker

19、            一键删除多个容器

[good@localhost ~]$ sudo docker stop $(sudo docker ps -q) && sudo docker rm $(sudo docker ps -qa)

2a2d889f9ac3

2a2d889f9ac3

20、            dockerfile中的几个指令

基础镜像信息:

FROM

维护者信息:

MAINTAINER

镜像操作指令:

RUN

容器启动时执行指令

EXPOSE

CMD

ENTRYPOINT

四、总结

      本篇至此结束,主要是以nginx镜像的制度对Docker的基础知识进行了相关的学习,下一篇中主要记录Docker安全相关的知识点。

以上是关于Docker 安全学习之——Docker基础知识的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习-Docker学习之Dockerfile

Docker学习之Docker容器基本使用

docker学习之-什么是docker

Docker学习之docker-compose

docker学习之介绍

Docker学习之仓库