前言

全系列分为xx篇(xx表示很多, 十来篇), 不会涉及到任何docker底层代码的问题, 所有内容完全是由docker操作的一些延伸, 本博客编写时使用Debian10, docker-ce=5:19.03.2~3-0~debian-buster

Docker安装

官方的安装文档在这里, 如果是在国内可以使用中科大或是阿里云的源. apt-get update更新结束后, 选择合适的版本安装即可.

1
2
3
4
5
6
7
# 可以先别急着安装, 使查看一下目前可以用的版本.
$ apt-cache policy docker-ce

5:19.03.2~3-0~debian-buster 500
500 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian buster/stable amd64 Packages
100 /var/lib/dpkg/status
$ apt-get install docker-ce=5:19.03.2~3-0~debian-buster

镜像下载与构建

同样由于在国内的原因, 访问官方的dockerhub很可能会很慢, 我平时是用daocloud 在国内加速的, 有需要可以访问Daocloud镜像站.

1
2
3
4
5
6
7
# 下载镜像
$ docker pull python:3.7.4-stretch

# 查看已经下载好的 镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.7.4-stretch b9d77e48a75c 3 weeks ago 940MB

当然也是可以在本地构建镜像的, 建立一个空的目录: 创建好Dockerfile文件后, 可以在该目录下执行docker build来建立本地镜像.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建一个空目录并切换过去
$ mkdir tmp && cd tmp

# 创建Dockerfile文件
$ cat > Dockerfile <<EOF
FROM python:3.7.4-stretch
RUN echo 1 > /tmp/file.txt
EOF

# 开始构建
$ docker build . -t my_image

# 再次查看已经有的镜像,简单的一个本地镜像就构建好了.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.7.4-stretch b9d77e48a75c 3 weeks ago 940MB
my_image latest 860d8f0fd1c4 25 seconds ago 940MB

容器的启动与停止

刚刚不论是下载好的, 还是本地构建的镜像, 类似的是存储在硬盘中的操作系统, 还没有装载到内存中启动. 现在我们想要启动这些镜像, 可以使用docker run.

1
2
3
4
5
6
7
$ docker run -ti my_image /bin/bash
root@9b497582be91:/#

# 新建一个终端, 使用docker ps 可以查看正在运行的容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b497582be91 my_image "/bin/bash" 44 seconds ago Up 43 seconds magical_beaver
1
2
3
4
5
6
7
8
9
10
# docker stop 一个容器

$ docker stop magical_beaver
magical_beaver


# 而后docker ps -a可以看到关闭了的容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b497582be91 my_image "/bin/bash" 2 minutes ago Exited (0) 4 seconds ago magical_beaver

运行容器时的一些参数指定将会在后面的部分中讲到.

如何进入到目前正在运行的容器中

我一般是通过下面这样的方式进入

1
docker exec -ti <容器名> /bin/bash

如何没有bash的, 可以考虑/bin/sh, 获得一个shell基本就可以进行操作了.