Skip to content

Docker 的总结与使用(一)

Published: at 00:00

前言

我有幸很久之前的工作是负责云计算方面的,因此我在很早的时候就使用上了Docker,也知道 Docker 的部分原理。经过这些年的发展,特别是云原生方面,Docker被广泛地使用。在2015年写过一遍Docker的使用文章,但说得不全也不好,今天来重新写一份,本文是第一部分,旨在说明 docker 命令的基本使用,希望对大家能有帮助。

说明

本文并没有讲解 docker 的原理和主要概念,网上有很多资料对这方面进行了讲解,请自行查阅。本文列举了一堆可能常用的命令示例,作为参考,相关使用者能一目了然。

安装

$ brew install docker docker-compose docker-buildx docker-completion

使用

基础

# 查看版本号
$ docker --version

# 查看状态
$ docker stats

镜像

# 获取镜像
$ docker pull hello-world

# 查看镜像
$ docker images

# 查找镜像
$ docker search nginx

# 删除镜像
$ docker rmi hell-world

# 创建镜像:hwsdien/hello-world:v1
# -m: 描述信息
# -a: 作者
# 9d8bb5b878f6: 容器ID
# hwsdien/hello-world:v1: 创建的镜像名
$ docker commit -m="new version" -a="hwsdien" 9d8bb5b878f6 hwsdien/hello-world:v1

# 增加tag
$ docker tag 9d8bb5b878f6 hwsdien/hello-world:dev

# 构建镜像
# 1、编写 Dockerfile 文件
$ cat ./Dockerfile
FROM    ubuntu
MAINTAINER      Hwsdien "[email protected]"
RUN     echo '123123' | md5sum
# 2、执行 docker build
$ docker build -t hwsdien/ubuntu:v1 .

容器


# 启动容器(可在终端交互)
# -t: 终端
# -i: 交互操作
# ubuntu: 镜像
# /bin/bash: 命令
$ docker run -ti ubuntu /bin/bash

# 启动容器(后台)
$ docker run -tid ubuntu /bin/bash

# 指定名称
$ docker run -tid --name hwsdien-linux ubuntu /bin/bash

# 启动设置端口映射
# 1、随机端口映射
$ docker run -tid -P nginx
# 2、指定端口映射
# 8088: 宿主机端口
# 80: docker内端口
$ docker run -tid -p 8088:80 nginx

# 查看端口映射情况
# 42e061e17b77: 容器ID
$ docker port 42e061e17b77

# 启动指定共享目录
# /tmp: 宿主机目录
# /data: 容器内目录
$ docker run -ti -v /tmp:/data ubuntu /bin/bash

# 启动指定网络
$ docker run -ti --network test-bridge-v1 ubuntu /bin/bash

# 启动指定DNS
$ docker run -ti --dns=8.8.8.8 ubuntu /bin/bash

# 停止容器
# 42e061e17b77: 容器ID
$ docker stop 42e061e17b77

# 启动已停止的容器
# 42e061e17b77: 容器ID
$ docker start 42e061e17b77

# 重启容器
# 42e061e17b77: 容器ID
$ docker restart 42e061e17b77

# 删除容器
$ docker rm -f 42e061e17b77

# 查看所有容器
$ docker ps -a

# 查看正在运行的容器
$ docker ps

# 查看容器的详细信息
$ docker inspect 42e061e17b77

# 进入容器
# 42e061e17b77: 容器ID
$ docker attach 42e061e17b77

# 在已运行的容器内执行命令
# 42e061e17b77: 容器ID
# date: 执行的命令
$ docker exec -it 42e061e17b77 date

# 将宿主机的数据复制到容器
# ./dist: 宿主机目录
# 42e061e17b77: 容器ID
# /www: 容器内目录
$ docker cp ./dist 42e061e17b77:/www

# 查看容器内的stdout
$ docker logs -f 42e061e17b77

# 查看容器内的进程情况
$ docker top 42e061e17b77

# 导出容器
$ docker export 42e061e17b77 > hwsdien-ubuntu.tar

# 导入容器
$ cat hwsdien-ubuntu.tar | docker import - hwsdien/ubuntu:v2

网络

# 新建网络
$ docker network create -d bridge test-bridge-v1

# 查看所有的网络
$ docker network ls

# 删除网络
$ docker network rm test-bridge-v1