一:docker镜像管理
-
搜索镜像
docker search 镜像名称
eg.
docker search ubuntu -
获取镜像(下载远程仓库中的镜像)
docker search 镜像名称
eg.
docker pull ubuntu -
列出本地镜像
docker images 镜像名称 # 列出指定镜像
docker image ls 镜像名称 # 列出指定镜像
docker images # 列出所有镜像
docker images -a # 列出所有镜像
docker image ls # 列出所有镜像 -
本地镜像重命名(对本地镜像的name、tag重命名,并产生一个命名后的镜像)
docker tag 旧镜像名称:旧镜像版本 新镜像名称:新镜像版本 -
本地镜像删除
docker rmi 镜像ID/镜像名称:镜像版本
docker image rm 镜像ID/镜像名称:镜像版本
eg.
docker rmi ubuntu
docker rmi ubuntu:latest
docker image rm ubuntu
docker image rm ubuntu:latest
docker image rm 9dd37cab9c22
docker rmi 9dd37cab9c22 -
导出镜像到本地
docker save -o 导出文件存储路径及文件名称 导出镜像名称 本地镜像名称
eg.
docker save -o ~/Desktop/ubuntu.tar ubuntu -
导入镜像
docker load -i 导入镜像文件路径及文件名称
eg.
docker load -i ~/Desktop/ubuntu.tar -
查看本地某个镜像的历史信息
docker history 镜像名称:镜像版本/镜像ID
eg.
docker history ubuntu -
查看镜像详细信息
docker inspect 镜像名称:镜像版本/镜像ID
docker inspect ubuntu -
根据模板创建镜像
// 从镜像网站下载模板
// https://download.openvz.org/template/precreated/
cat 模板名称.tar | docker import - 自定义镜像名称
eg.
cat ubuntu-16.04-x86_64.tar.gz | docker import - myubuntu
二:docker容器管理
-
查看当前正在运行的容器
docker ps -
查看所有容器
docker ps -a -
创建待启动的容器
docker create 镜像名称
eg.
docker create -it --name myubuntu ubuntu ls -a -
启动容器
docker start 容器名称/容器ID
eg.
docker start -a myubuntu -
创建容器并启动
docker run 镜像名称
eg.
docker run -it --name myubuntu ubuntu /bin/bash -
守候进程启动容器
docker run -d 镜像名称
eg.
docker run -d myubuntu -
容器暂停、取消暂停、重启
docker pause 容器名称/容器ID
docker unpause 容器名称/容器ID
docker restart 容器名称/容器ID -
容器关闭、终止、删除、强制删除
docker stop 容器名称/容器ID
docker kill 容器名称/容器ID
docker rm 容器名称/容器ID
docker rm -f 容器名称/容器ID -
进入容器
// 创建容器并进入
docker run -it --name 要创建的容器名称 镜像名称 /bin/bash
// 手工方式进入已在运行中的容器
docker exec -it 容器id /bin/bash
// 生产方式进入容器(借助脚本)
脚本内容:
#!/bin/bash
#定义进入仓库函数
docker_in(){
NAME_ID=$1
PID=$(docker inspect --format {{.State.Pid}} $NAME_ID)
nsenter --target $PID --mount --uts --ipc --net --pid
}
docker_in $1
直接执行的话是没有执行权限的所以需要赋值权限
#赋权执行
$ chmod +x docker_in.sh #进入指定的容器,并测试
$ ./docker_in.sh b3fbcba852fd
-
基于容器创建镜像
方式一:
docker commit -m “摘要” -a “作者” 容器ID 创建的镜像名称:版本号
方式二:
docker export 容器ID > 模板文件.tar -
查看容器运行日志
docker logs 容器ID -
查看容器详细信息
docker inspect 容器ID -
查看容器端口
docker port 容器ID -
容器重命名
docker rename 容器旧名称 容器新名称
三:docker数据管理
- 挂载宿主机目录到容器
docker run -itd --name 新建的容器名字 -v 宿主机目录:容器目录 镜像名称
eg.
docker run -itd --name myubuntu -v ~/Desktop:/mydesktop ubuntu
docker 挂载数据卷的默认读写权限(rw),用户可通过ro设置为只读
eg.
docker run -itd --name myubuntu -v ~/Desktop:/mydesktop:ro ubuntu
- 数据卷容器
使用特定容器维护数据卷,为其他容器提供数据交互存储的容器。
如果使用数据卷容器,在多个容器间共享数据,并永久保存这些书籍,需要有一个规范的流程:创建数据卷容器—》其他容器挂载数据卷容器
数据卷容器本身不需要启动,但启动依然可以进行数据卷容器的工作。
2.1 创建数据卷容器
docker create -v 容器数据卷目录 --name 新创建的容器名字 镜像名字
eg.
docker create -v /mydata --name dataubuntu ubuntu
2.2 创建其他容器,并挂载数据卷容器
docker run --volumes-from 数据卷容器ID/Name -tid --name 新创建的容器名字 镜像名称
eg.
docker run --volumes-from dataubuntu -tid --name testubuntu ubuntu /bin/bash
四:docker网络管理
-
端口随机映射 -P 大写
docker run -d -P 镜像名称
eg.
docker run -d -P nginx
//netstat -tnulp 查看当前主机开放了哪些端口 -
指定端口映射 -p 小写
docker run -d -p 宿主机ip:宿主机端口:容器端口 --name 新建的容器名称 镜像名称
eg.
docker run -d -p 9001:9100 -p 9002:9200 --name myubuntu ubuntu -
网络命令
docker network help // 查看帮助
docker network ls // 查看网络类型
docker network inspect bridge // 查看bridge网络详情 -
创建网络
docker network create --driver 网络类型 网络名称
eg.
docker network create --driver bridge bridge-test
网络类型
bridge 模式:docker的默认模式,类似vmware虚拟机桥接模式
host 模式:容器和主机共享网络
container模式:容器和容器共享网络
none模式:无网络模式
overlay模式:容器彼此不再同一网络,而且能互相同行
-
自定义网段与网关
eg.
docker network create --driver bridge --gateway 172.99.0.1 --subnet 172.99.0.0/16 bridge-test1 -
在自定义网络中启动容器
docker run --net=网络名称 -itd --name 新建的容器名称 镜像名称
eg.
docker run --net=bridge-test -tid --name myubuntu ubuntu -
容器断开网络
docker network disconnect 网络名称 容器名称
eg.
docker network disconnect bridge-test myubuntu -
容器连接网络
docker network connect 网络名称 容器名称
eg.
docker network connect bridge-test myubuntu