一、镜像相关指令
1、搜索镜像
指令
docker search
案例:搜索 busybox
\docker search busyboxNAME DESCRIPTION STARS OFFICIAL AUTOMATEDbusybox Busybox base image. 1847 [OK]arm32v7/busybox Busybox base image. 8yauritux/busybox-curl Busybox with CURL 7..............................................................................................................................sou856099/busybox 0ggtools/busybox-ubuntu Busybox ubuntu version with extra goodies 0 [OK]trollin/busybox 0
2、下载镜像
指令
docker pull <registry>[:<port>]/[namespace/]<name>:<tag>不加 tag 默认 最后一个版本
案例:从官方获取一个 busybox 镜像
docker pull busybox
3、查看已有镜像
指令
docker images / docker image ls
案例
\docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEbusybox latest 83aa35aa1c79 4 weeks ago 1.22MBmytomcat9 latest a1c3edd61706 5 months ago 678MBcentos latest 0f3e07c0138f 6 months ago 220MBmysql 5.7 383867b75fd2 7 months ago 373MBbusybox <none> 19485c79a9bb 7 months ago 1.22MB
4、移除镜像
指令
docker rmi [镜像名/ID]
案例
\docker rmi 19485c79a9bbUntagged: busybox@sha256:fe301db49df08c384001ed752dff6d52b4305a73a7f608f21528048e8a08b51eDeleted: sha256:19485c79a9bbdca205fce4f791efeaa2a103e23431434696cc54fdd939e9198dDeleted: sha256:6c0ea40aef9d2795f922f4e8642f0cd9ffb9404e6f3214693a1fd45489f38b44
\docker rmi busybox:latestUntagged: busybox:latestUntagged: busybox@sha256:b26cd013274a657b86e706210ddd5cc1f82f50155791199d29b9e86e935ce135Deleted: sha256:83aa35aa1c79e4b6957e018da6e322bfca92bf3b4696a211b42502543c242d6fDeleted: sha256:a6d503001157aedc826853f9b67f26d35966221b158bff03849868ae4a821116
5、在已有镜像上定制镜像
docker savedocker loaddocker commit
二、容器相关指令
1、启动容器
指令
docker run [option]
options:
- —name 指定容器名称
-it 交互模式
-i :让 Docker 分配一个未中断(pseudo-tty)并绑定到容器的标准输入上 -t:让 Docker 容器的标准输入保持打开
-d 使用守护态(Daemonized)形式运行【在后台运行】
案例
## 启动一个 bash 终端与用户进行交互,结束交互终止容器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
