一、镜像相关指令

1、搜索镜像

指令

docker search

案例:搜索 busybox

  1. \docker search busybox
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. busybox Busybox base image. 1847 [OK]
  4. arm32v7/busybox Busybox base image. 8
  5. yauritux/busybox-curl Busybox with CURL 7
  6. ..............................................................................................................................
  7. sou856099/busybox 0
  8. ggtools/busybox-ubuntu Busybox ubuntu version with extra goodies 0 [OK]
  9. trollin/busybox 0

2、下载镜像

指令

docker pull <registry>[:<port>]/[namespace/]<name>:<tag> 不加 tag 默认 最后一个版本

案例:从官方获取一个 busybox 镜像

  1. docker pull busybox

3、查看已有镜像

指令

docker images / docker image ls

案例

  1. \docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. busybox latest 83aa35aa1c79 4 weeks ago 1.22MB
  4. mytomcat9 latest a1c3edd61706 5 months ago 678MB
  5. centos latest 0f3e07c0138f 6 months ago 220MB
  6. mysql 5.7 383867b75fd2 7 months ago 373MB
  7. busybox <none> 19485c79a9bb 7 months ago 1.22MB

4、移除镜像

指令

docker rmi [镜像名/ID]

案例

  1. \docker rmi 19485c79a9bb
  2. Untagged: busybox@sha256:fe301db49df08c384001ed752dff6d52b4305a73a7f608f21528048e8a08b51e
  3. Deleted: sha256:19485c79a9bbdca205fce4f791efeaa2a103e23431434696cc54fdd939e9198d
  4. Deleted: sha256:6c0ea40aef9d2795f922f4e8642f0cd9ffb9404e6f3214693a1fd45489f38b44
  1. \docker rmi busybox:latest
  2. Untagged: busybox:latest
  3. Untagged: busybox@sha256:b26cd013274a657b86e706210ddd5cc1f82f50155791199d29b9e86e935ce135
  4. Deleted: sha256:83aa35aa1c79e4b6957e018da6e322bfca92bf3b4696a211b42502543c242d6f
  5. Deleted: sha256:a6d503001157aedc826853f9b67f26d35966221b158bff03849868ae4a821116

5、在已有镜像上定制镜像

docker save docker load docker commit

Image简易制作

二、容器相关指令

01.png

1、启动容器

指令

docker run [option]

options:

  • —name 指定容器名称
  • -it 交互模式

    -i :让 Docker 分配一个未中断(pseudo-tty)并绑定到容器的标准输入上 -t:让 Docker 容器的标准输入保持打开

  • -d 使用守护态(Daemonized)形式运行【在后台运行】

案例

  1. ## 启动一个 bash 终端与用户进行交互,结束交互终止容器
  2. docker run --name sb1 -it busybox
## 启动一个容器输出 "Hello World" 后终止容器
docker run --name sb1 busybox /bin/echo "Hello World"

2、查看容器进程

指令

docker ps [option]

options:

  • -a:所有 docker 容器,包括中止和启动的展示

案例

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

3、启动已有的容器

docker start <dockerName>

4、停止/重启/强制中止

docker stop/restart/kill

5、在宿主机执行容器中命令

指令

docker container exec <dockerName> <commandline>

案例

## 指令容器中的 ls 命令
docker container exec sb1 /bin/ls

6、查看容器日志

指令

docker container logs <dockerName>

案例

# 查看 sb1 日志信息
docker container logs sb1

7、删除处于中止状态的容器

docker rm sb1

8、从宿主机进入容器中

docker exec -it busybox /bin/bash

三、网络相关指令

1、容器互联-通过容器名

指令

docker run -link 容器名

案例

如 web 应用,提供web服务需要如数据库,缓存,web应用等多个应用容器。这时候就需要各应用程序间进行通讯。

step1、启动一个 mysql 容器

docker run -d --name mysql mysql

step2、启动 web 应用,并连接 mysql 服务

docker run -d --name webapp --link mysql webapp

在 web 应用中 mysql 的配置可以直接使用 “jdbc:mysql://mysql:3306/databases”,填写容器名,docker 会自动将 mysql 解析成 ip 地址。

2、容器互联-通过别名

指令

docker run --link 容器名:别名

案例

如 web 应用,提供web服务需要如数据库,缓存,web应用等多个应用容器。这时候就需要各应用程序间进行通讯。

step1、启动一个 mysql 容器

docker run -d --name mysql mysql

step2、启动 web 应用,并连接 mysql 服务

docker run -d --name webapp --link mysql:databases webapp

在 web 应用中 mysql 的配置可以直接使用 “jdbc:mysql://databases:3306/db”,填写容器名,docker 会自动将 mysql 解析成 ip 地址。

3、暴露端口-容器间

指令

docker run --name 容器名 --expose 3306 镜像名

4、暴露端口-暴露到外网

指令

docker run -d -p <host-port>:<contanier-port> 镜像

案例

# 启动 nginx 开放 80 和 443 端口,并映射到宿主机的 80 和 443 端口

docker run -d --name nginx -p 80:80 -p 443:443 nginx:1.12

5、创建网络

指令

docker network create

options:

  • -d 网络类型

    bridge host overlay maclan none

案例

# 创建 bridge 网络
docker network create -d bridge myNetwork

# 创建 bridge 网络,并指定网段,网关
docker network create --driver=bridge --gateway=172.08.0.1 --subnet=172.08.0.0/16 myNetwork

6、查看当前已有的网络

docker network list

7、指定容器的网络

指令

docker run --network 网络名

案例

# 启动容器并制定网络名
docker run --name mysql --network myNetowrk mysql

四、帮助指令

1、查看 docker 版本

docker version

2、查看 docker 信息

docker info

3、查看 docker 帮助命令

docker --help

五、其他命令

1、从容器中复制文件到宿主机

指令

docker cp [container name]:[container file path] [host path]

案例

# 从 redis-master-1 容器中复制文件到宿主机
docker cp redis-master-1:/usr/xxx/xxx ./

2、本地镜像服务期间迁移

指令

保存:docker save [image name]:[image version] > [file name]
加载:docker load < [file name]

案例

## 将镜像导出到本地
docker save jdk8-alpine-1.0 > jdk8-alpine1.0.tar

## 将镜像复制到其他服务器
scp or 其他

## 读取镜像
docker load < jdk8-alpine1.0.tar

六、volume 命令

zhixing@swarm-master:/mnt$ sudo docker volume —help

Usage: docker volume COMMAND

Manage volumes

Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes