Gun's Blog

Docker的使用

Word count: 1.6kReading time: 6 min
2019/08/20 Share

一直对信息安全感兴趣,大二临近暑假时,老师打算安排一场关于信息安全的培训,并建议学习Docker的安装与使用,因此培训前一天去学了Docker。

一.Docker环境配置

1.Docker简介:

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

2.Docker架构:

docker架构
图片来源:https://www.runoob.com/docker/docker-architecture.htm

3.Docker的安装:

以下是在Ubuntu环境下按安装Docker的详细步骤:
a.通过 uname -r 命令查看你当前的内核版本:

1
2
$ uname -r
4.18.0-15-generic

b.更新apt包:
1
$ sudo apt-get update

c.确保apt源不被篡改,使用https.因此,首先需要添加使用https传输的软件包以及CA证书.
1
2
3
4
5
6
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

d.为确认安装的软件包的合法性,需要添加软件源的GPG密钥.
1
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

e.向source.list中添加Docker CE软件源:
1
2
3
4
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

f.更新apt软件包缓存,并安装docker-ce:
1
2
$ sudo apt-get update
$ sudo apt-get install docker-ce

g.启动Docker CE:
1
2
$ sudo systemctl enable docker
$ sudo systemctl start docker

4.建立Docker用户组

a.建立用户组:

1
$ sudo groupadd docker

b.将当前用户加入到docker组中:
1
$ sudo usermod -aG docker $USER

c.重启系统,进行如下测试.

5.测试Docker是否安装正确.

1
$ docker run hello-world

6.更换镜像加速:

a.在/etc/docker/daemon.json中写入如下内容(如果文件不存在请新建该文件)

1
2
3
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}

b.配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功.
1
2
RegistryMirrors:
https://docker.mirrors.ustc.edu.cn/

b.添加完docker国内加速后,需要重启docker服务.
1
$ sudo service docker restart

7.卸载Docker CE

1.卸载Docker CE包.

1
$ sudo apt-get purge dpcker-ce

2.Images, containers, volumes, or customized configuration files on your host are not automatically removed. To delete all images, containers, and volumes:

1
$ sudo rm -rf /var/lib/docker

二.使用镜像:

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载.

  • 管理和使用本地Docker 主机镜像
  • 创建镜像

1.列出镜像列表:

1
$ docker images

docker-images
各个选项的说明:

  • REPOSITORY :表示镜像的仓库源
  • TAG: 镜像标签(同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,所以我们使用 REPOSITORY:TAG 来定义不同的镜像。)
  • IMAGE ID: 镜像ID
  • CREATED : 镜像创建 的时间
  • SIZE: 镜像的大小
    如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:(如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像)
    1
    docker run -t -i --rm ubuntu:18.04 /bin/bash
    (参数说明:—rm:这个参数是说容器退出后随之将其删除。默认情况下,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 –rm 可以避免浪费空间。注意删除的是容器,不是镜像)
    dcoker-container

2.获取一个新的镜像:

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它.下载完成后,我们可以直接使用这个镜像来运行容器。

3.查找镜像:

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
OFFICIAL:是否docker官方发布

4.拖取镜像:

假如决定使用上图中的httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。下载完成后,我们就可以使用这个镜像了.

1
$ docker run httpd

5.创建镜像:

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改。

  • 从已经创建的容器模板中更新镜像,并且提交这个镜像
  • 使用 Dockerfile指令来创建一个新的镜像

1.更新镜像
更新镜像之前,需要使用镜像来创建一个容器.在运行的容器内使用 apt-get update 命令进行更新

1
2
mx@ly:~$ docker run -i -t --rm ubuntu:18.04 /bin/bash
root@4a3e9808b0bd:/# apt-get update

在完成操作之后,输入 exit命令来退出这个容器。
此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。之后便可以使用我们的新镜像 mx 来启动一个容器.
1
mx@ly:~$ docker commit -m "update" -a "mx" 7e7ad444e888 mx>ubuntu

各个参数的说明:

  • -m: 提交的描述信息
  • -a: 制定镜像作者
  • 7e7ad444e888:容器ID
  • mx>ubuntu: 指定的目标镜像名
    update-docker-images

2.构建镜像:
我们使用命令docker build, 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

CATALOG
  1. 1. 一.Docker环境配置
    1. 1.1. 1.Docker简介:
    2. 1.2. 2.Docker架构:
    3. 1.3. 3.Docker的安装:
    4. 1.4. 4.建立Docker用户组
    5. 1.5. 5.测试Docker是否安装正确.
    6. 1.6. 6.更换镜像加速:
    7. 1.7. 7.卸载Docker CE
  2. 2. 二.使用镜像:
    1. 2.1. 1.列出镜像列表:
    2. 2.2. 2.获取一个新的镜像:
    3. 2.3. 3.查找镜像:
    4. 2.4. 4.拖取镜像:
    5. 2.5. 5.创建镜像: