Docker简介
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护
Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 7 千个星标和一万多个 fork
甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker
Docker 最初是在 Ubuntu 12.04 上开发实现的
Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持
Google 也在其 PaaS 产品中广泛应用 Docker
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。
由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器
最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 版本开始,则进一步演进为使用 runC 和 containerd
前言
上篇文章AWVS14批量漏洞扫描Docker篇发出后,很多人后台留言问如何快速搞定Docker部署与配置
这里做一个简要总结与说明
Docker Hub 账户注册
官方地址:
代码语言:javascript复制https://hub.docker.com/
输入ID、邮箱地址及密码
注册完成之后邮箱会收到邮件,点击Verify email address
进行激活,激活后再登录Docker Hub
即可
看到这样的页面内容就代表登录成功并可正常使用
Docker安装
Ubuntu下安装Docker
首次安装Docker之前,需要设置Docker仓库
,可以从仓库安装和更新Docker
设置仓库
更新apt包索引
代码语言:javascript复制apt-get update
安装apt依赖包,用于通过HTTPS来获取仓库
代码语言:javascript复制apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
添加Docker官方GPG密钥
代码语言:javascript复制curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
通过搜索指纹的后8个字符,验证是否拥有带有指纹的密钥
指纹信息:9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
apt-key fingerprint 0EBFCD88
设置稳定版仓库
代码语言:javascript复制add-apt-repository
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/
$(lsb_release -cs)
stable"
安装 Docker Engine-Community
更新apt包索引
代码语言:javascript复制apt-get update
安装最新版本Docker Engine-Community
和containerd
apt-get install docker-ce docker-ce-cli containerd.io
测试Docker是否安装成功,输入以下指令,打印出以下信息则安装成功
代码语言:javascript复制root@XS10324213323:~# docker version
Client: Docker Engine - Community
Version: 20.10.12
API version: 1.41
Go version: go1.16.12
Git commit: e91ed57
Built: Mon Dec 13 11:45:27 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.16.12
Git commit: 459d0df
Built: Mon Dec 13 11:43:36 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.12
GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version: 1.0.2
GitCommit: v1.0.2-0-g52b36a2
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Dcoker常见用法
下载镜像
代码语言:javascript复制root@XS10324213323:~# docker pull xsgcs/awvs_xsgcs:v20220119
v20220119: Pulling from xsgcs/awvs_xsgcs
7b1a6ab2e44d: Pull complete
b92844b7ec15: Pull complete
f002d83165f7: Pull complete
Digest: sha256:2e63c6f0cdfad4ad726c37d81f018c6a3ca2c36d2c697565ae70ed3bdb019954
Status: Downloaded newer image for xsgcs/awvs_xsgcs:v20220119
docker.io/xsgcs/awvs_xsgcs:v20220119
查看镜像
代码语言:javascript复制root@XS10324213323:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xsgcs/awvs_xsgcs v20220119 3331ac19197f 22 hours ago 1.23GB
运行容器
代码语言:javascript复制root@XS10324213323:~# docker run -it -d -p 8888:3443 xsgcs/awvs_xsgcs:v20220119
fc69af56a54b836a8adf7a2823fe7af76a8b582c08649cbf9ca9b7df7d3d1c01
查看容器
代码语言:javascript复制root@XS10324213323:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc69af56a54b xsgcs/awvs_xsgcs:v20220119 "/bin/sh -c 'echo 12…" 38 seconds ago Up 36 seconds 0.0.0.0:8888->3443/tcp, :::8888->3443/tcp nifty_lamarr
进入容器
代码语言:javascript复制root@XS10324213323:~# docker exec -it fc69af56a54b /bin/bash
root@fc69af56a54b:/# whoami
root
关闭容器
代码语言:javascript复制root@XS10324213323:~# docker stop fc69af56a54b
fc69af56a54b
启动容器
代码语言:javascript复制root@XS10324213323:~# docker start fc69af56a54b
fc69af56a54b
容器打包成镜像
代码语言:javascript复制root@XS10324213323:~# docker commit fc69af56a54b xsgcs123:v20220120
sha256:20c86b3c4930f3e7a68954ed623e72c45b2e6c21c1858ef87cc42b53540f1539
上传镜像到Docker Hub
设置镜像标签
代码语言:javascript复制root@XS10324213323:~# docker tag xsgcs123:v20220120 xsgcs/awvstest:v20220120
xsgcs/awvstest:v20220120为DockerHub帐户名/镜像名:标签名
使用第一步注册的账户密码
登录Docker Hub
root@XS10324213323:~# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: xsgcs
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
Push
镜像到Docker Hub
root@XS10324213323:~# docker push xsgcs/awvstest:v20220120
The push refers to repository [docker.io/xsgcs/awvstest]
43f715ccc958: Pushed
5feaf36e7400: Mounted from xsgcs/awvs_xsgcs
13225bea83b6: Mounted from xsgcs/awvs_xsgcs
9f54eef41275: Mounted from xsgcs/awvs_xsgcs
v20220120: digest: sha256:7ffe9c126d7fe86f616803779909d8afa342be672f8efe2a7a9ee425ea6a0009 size: 1166
访问Docker Hub
查看是否存在新上传的镜像
删除镜像
代码语言:javascript复制root@XS10324213323:~# docker rmi xsgcs123:v20220120
Untagged: xsgcs123:v20220120
删除容器
先停止容器才可以删除容器
代码语言:javascript复制root@XS10324213323:~# docker stop 2774825f3b7f
2774825f3b7f
root@XS10324213323:~# docker rm 2774825f3b7f
2774825f3b7f