跳转至

Docker 的基本使用

约 494 个字 100 行代码 7 张图片 预计阅读时间 3 分钟

Warning

以下操作均在 root 用户下进行,否则请带上 sudo,或者是把用户加到 docker 用户组内。

查询帮助信息

root@ding-server:~# docker

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/home/foxconn/.docker")
  -v, --version            Print version information and quit

Management Commands:
  image       Manage images
  network     Manage networks

Commands:
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
Run 'docker COMMAND --help' for more information on a command.

To get more help with docker, check out our guides at https://docs.docker.com/go/guides/
root@ding-server:~# docker pull --help

Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Pull an image or a repository from a registry

Options:
  -a, --all-tags                Download all tagged images in the repository
      --disable-content-trust   Skip image verification (default true)
      --platform string         Set platform if server is multi-platform capable
  -q, --quiet                   Suppress verbose output

镜像获取

镜像库

  • https://hub.docker.com/ —— Docker 官方公共镜像库
    • 官方镜像由 Docker 构建
    • 社区镜像由开发者或使用者构建 在 Docker 官方公共镜像库查找 chrome
  • 其他公共镜像库
  • 私有的镜像库

查看镜像信息

官方镜像

查看镜像信息 - 官方镜像
查看镜像信息 - 官方镜像

社区镜像

查看镜像信息 – 社区镜像
查看镜像信息 – 社区镜像

查看镜像标签信息

查看镜像标签信息
查看镜像标签信息

镜像拉取

镜像拉取示意图
镜像拉取示意图

docker pull 镜像地址[:标签名]

不带标签名则为 latest 版。

root@ding-server:~# docker pull node:latest
latest: Pulling from library/node
6aefca2dc61d: Pull complete 
967757d56527: Pull complete 
c357e2c68cb3: Pull complete 
c766e27afb21: Pull complete 
32a180f5cf85: Pull complete 
3507b5066a40: Pull complete 
3c68557c340d: Pull complete 
925b4ef5803f: Pull complete 
3c263125b4e4: Pull complete 
Digest: sha256:73c1ce2540981fec5b9bde1b6738eb08e4e480592afea52b4b8fc3f606b73559
Status: Downloaded newer image for node:latest
docker.io/library/node:latest

容器

启动容器

一般在帮助文档中,镜像创建者会注明如何运行。

一些运行容器的说明
一些运行容器的说明

启动容器的基本命令

下面的选项,仅“镜像名称或地址”必填,但通常要按需填其他选项。

docker run \
    -itd \                                                  # -i:打开标准输入 –t:分配终端 –d:后台
    -p 6379:6379 \                                  # -p 宿主机端口号:容器端口号:映射端口
    --name redis \                                  # --name 容器名称(如无该参数,会随机分配一个名称)
    --restart always \                          # --restart 重启策略(如无该参数,等同于参数值为 no)
    --network ljl \                                 # --network 网络名:添加到网络
    -v /root/redis/data:/data \         # -v 宿主机路径或卷:容器路径:映射目录或文件
    -e TZ=Asia/Shanghai \                       # -e 环境变量=值:赋环境变量
    --privileged=true \                         # 是否获取完整权限(如无该参数,为 false)
    redis:latest \                                  # 镜像名称或地址[:标签名](如本地没有会自动拉取)
    redis-server /.../redis.conf        # 在容器内执行的命令

容器退出后的操作

1
2
3
4
5
6
--restart no                            # 容器退出时,不重启(默认值)
--restart unless-stopped    # 容器退出后总是重启,但是 docker 守护进程运行时即停止的不在内
--restart on-failure[:3]    # 容器退出状态码非 0 时,自动重启容器,可以定义最大尝试次数
--restart always                    # 容器退出后总是重启

--rm                                            # 容器退出后即销毁

查看容器

1
2
3
4
5
# 查看当前运行中的容器
docker ps

# 查看全部状态的容器
docker ps --all

例:

查看容器 - 例
查看容器 - 例

使用 docker ps 时,看不到项目 1。

停止、停止后启动、重启容器

Info

下面的“容器标识符”,为容器 ID 或其前面若干字;或者为容器名称。

1
2
3
4
5
6
7
8
# 停止容器
docker stop 容器标识符

# 启动已停止的容器
docker start 容器标识符

# 重启容器
docker restart 容器标识符

删除容器

docker rm 容器标识符

只能在容器停止的情况下执行。

强制删除容器可以在容器运行时执行下面的语句,不过不建议在正式情况下使用:

docker rm -f 容器标识符

查看容器日志

docker logs 容器标识符

实质上是查看容器内部的标准输出,会输出执行时所有的日志。

如果想实时动态查看日志,可以执行:

docker logs -f 容器标识符

在容器中执行命令

docker exec [-dit] 容器标识符 命令(最好用绝对路径)

最常用的是通过执行容器内的 bash 以进入容器操作:

docker exec -it 容器标识符 /bin/bash

镜像操作

查看本地镜像

root@ding-server:~# docker images
REPOSITORY        TAG               IMAGE ID       CREATED        SIZE
node              latest            04232a462409   31 hours ago   995MB
<none>            <none>            770539807ac2   8 days ago     460MB
jenkins-foxconn   latest            2bd4c6fa881a   12 days ago    888MB
grafana/grafana   latest            b62664e7b910   13 days ago    286MB
prom/prometheus   latest            a5bac665ffa2   13 days ago    206MB
redis             latest            3c3da61c4be0   2 weeks ago    113MB
postgres          latest            74b0c105737a   2 weeks ago    376MB
nginx             latest            fa5269854a5e   2 weeks ago    142MB
jenkins/jenkins   latest            997405ea0ac7   2 weeks ago    460MB
sonarqube         community         4ca41017fd9b   4 weeks ago    532MB
sonarqube         9.2.4-developer   06a5f9c38d64   4 months ago   598MB
sonarqube         9.2.4-community   d3899771462f   4 months ago   514MB

删除镜像

Info

下面的“镜像标识符”,为镜像 ID 或其前面若干字;或者为镜像名称。

docker rmi 镜像标识符

更新镜像

更新镜像即为拉取镜像。

如果更新的镜像有容器在使用,需要删除容器,再运行,才能更新到容器内。

参考资料