docker
常用指令
创建容器:docker run -i -t -d -p 32181:32181 - -name zookeeper zookeeper
- i:交互式操作
- t:终端操作
- bin/bash:使用交互式shell
- name:容器命名 -P :是容器内部端口随机映射到主机的高端口。 -p : 是容器内部端口绑定到指定的主机端口。
退出容器:exit,会停止容器运行
启动容器:docker start
重启容器:docker restart
停止容器:docker stop
进入后台运行容器:docker attach
进入后台运行容器:docker exec -it 243c32535da7 /bin/bash 退出容器不停止 停止
导出容器:docker export
导入容器快照: docker import
删除容器:docker rm -f 1e560fca3906
查看镜像:docker images
镜像加速请使用阿里的镜像仓库,自己进行配置
Docker 仓库管理
登录和退出:docker login
退出:docker logout
搜索镜像:docker search
下载镜像:docker pull
删除镜像:docker rmi
查询所有容器:docker ps -a
查看容器日志:docker logs
镜像生成
FROM:基础镜像 RUN:为启动的容器指定默认要运行的程序 命令行命令 shell,exec格式,每执行一次构建一层,docker build时运行 CMD:为启动的容器指定默认要运行的程序 docker run时运行
docker build -t nginx:test .
COPY:从上下文目录复制文件或目录到容器指定路径 COPY [–chown=
ENV:设置环境变量 例 ENV NODE_VERSION 7.2.0
ARG:ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效 例 ARG <参数名>[=<默认值>]默认值>参数名>
VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷 例 VOLUME [“<路径1>", "<路径2>"...]路径2>路径1>
EXPOSE:声明端口 例 EXPOSE <端口1> [<端口2>...]端口2>端口1>
WORKDIR:指定工作目录 例 WORKDIR <工作目录路径>工作目录路径>
USER: 指定执行后续命令的用户和用户组 USER <用户名>[:<用户组>]用户组>用户名>
HEALTHCHECK:指定某个程序或者指令来监控 docker 容器服务的运行状态 HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令命令>
ONBUILD:延迟构建命令的执行 例 :ONBUILD <其它指令>其它指令>
提交容器副本:docker commit -m=”提交的描述信息” -a=”镜像作者” <容器 ID=""> <创建的目标镜像名>创建的目标镜像名>容器>
docker容器间通信
IP 通信
新建网络
docker network create -d bridge
连接网络
容器创建时通过 –network 指定相应的网络 或者通过 docker network connect 将现有容器加入到指定网络
Docker DNS Server
启动时用 –name 为容器命名 只能在 user-defined 网络中使用
joined 容器
使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined 容器之间可以通过 127.0.0.1 直接通信
配置 DNS 打开宿主机的 /etc/docker/daemon.json 文件,添加以下内容
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
指定容器DNS的配置 在启动指令添加参数:–rm host_ubuntu –dns=114.114.114.114 –dns-search=test.com ubuntu
查看windows下使用docker时linux环境对应ip, docker-machine -ls docker-machine ip default
自建docker容器
Docker Dockerfile
- 新建一个名为 Dockerfile 文件
- 添加以下内容
FROM centos
RUN echo '这是一个本地构建的centos镜像' > /usr/share/centos/html/index.html
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
:Dockerfile 的指令每执行一次都会在 docker 上新建一层