查看版本:docker version
列出本地的镜像:docker images
拉取镜像:docker pull centos[:version]
查找镜像:docker search ubuntu
删除镜像:docker rmi ubuntu
创建容器:docker run --help
创建交互式容器:docker run -i -t --name=name1 centos /bin/bash
-i:交互式容器
-t:tty终端
-d:守护式容器
–name:指定容器名称
查看正在运行的容器:docker ps
查看运行过的容器:docker ps -a
查看最后一次运行的容器:docker ps -l
退出当前容器:exit
创建守护式容器:docker run -itd --name c2 centos /bin/bash
登录到容器中:docker exec -it c2 /bin/bash
停止运行容器:docker stop c1
开启容器:docker start c1
查看容器的详细信息:docker inspect c1
删除容器:docker rm 容器名称/容器id
注意不能删除正在运行的容器
文件拷贝:
docker cp 待拷贝的文件或目录 容器名称:容器目录
docker cp 容器名称:容器目录 带拷贝的文件或目录
目录挂载
在创建容器的时候,将宿主机的目录与容器的目录进行映射,这样就可以通过修改宿主机的某个目录文件去影响容器
-v 宿主机目录:容器目录
docker run -id --name=c1 -v /opt/:/usr/local/myhtml centos
docker exec -it c1 /bin/bash
容器/镜像打包
镜像打包:
1、镜像打包:docker save -o /root/xx.tar mydockerimage
2、将打包的镜像上传到其他服务器(机器) scp xx.tar 其他服务器ip:/root/xx.tar
3、导入镜像:docker load -i /root/xx.tar
容器打包:
1、容器打包:docker export -o /root/xx.tar t1
2、导入容器:docker import xx.tar mytomcat:latest
docker镜像制作
(1)使用docker commit
拉取镜像:docker pull cnetos
创建交互式容器:docker run -it --name mycentos centos /bin/bash
在容器中进行操作
将正在运行的容器提交为一个新的镜像:docker commit mycentos mydockerimage
(2)使用docker build和Dockerfile文件
Dockerfile使用基于DSL语法的指令来构建一个docker镜像,之后使用docker bulider命令来构建一个新的镜像
-------DSL语法------
FROM:基础镜像
MAINTAINER:维护者信息
RUN:安装软件
ADD:copy文件(自动解压)
WORKDIR:切换工作目录
VOLUME:目录挂载
EXPOSE:内部服务器端口
CMD:执行dockerfile中的命令
ENV:设置环境变量
构建镜像步骤:
1、创建一个目录
2、在目录下创建Dockerfile文件以及其他文件
3、通过docker builder构建景象
4、通过构建的镜像启动容器
docker网络管理
查看docker网络:docker network ls
一、默认网络
在非集群环境下docker提供的默认网络
docker中默认网络分为bridge、host、none。
bridge可以与互联网通信,host和none不可以与外界网络通信
二、自定义网络
1、bridge
2、overlay network in swarm mode(swarm集群中的覆盖网络)
3、network plugin(定制网络插件)
举栗:
1、创建一个基于bridge的mynet网络,其中–driver用于指定网络驱动类型
docker network create --driver bridge mynet
2、创建一个名为newtest的容器,–network指定了容器的网络连接为mynet
docker run -itd --nmae=newtest --network=mynet hello-world
3、为newteest容器添加一种默认的网络管理方式
docker network connect bridge newtest
4、断开网络连接
docker network disconnect mynet newtest
5、移除名mynet的自定义网络
docker network rm mynet
容器间的通信
1、创建两个使用默认bridge网络容器
docker run -itd --name=c1 busybox
docker run -itd --name=c2 busybox
2、创建一个使用自定义的mynet网络(需要预先创建)的容器
docker network create --driver bridge mynet
docker run --network=mynet -itd --name=c3 busybox
3、为容器2新增一个自定义的mynet网络连接
docker network connect mynet c2
此时容器c1和c3各有一块网卡,c2有两块网卡。
c1和c2, c2和c3可以通信,但是c1和c3不能通信。
swarm 集群网络
实际的服务环境是通过类似于反向代理的形式,将多个服务器通过一台服务器向外提供服务,而内部是通过swarm分配给各个服务器不同的节点来完成的。看了几篇博客,貌似是这个样子。