Docker部署与配置

2022-01-21 11:13:40 浏览数 (1)

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

代码语言:javascript复制
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-Communitycontainerd

代码语言:javascript复制
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

代码语言:javascript复制
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

代码语言:javascript复制
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

0 人点赞