启动操作
Docker 需要用户具有 sudo 权限
sudo usermod -aG docker $USER
验证是否安装成功
docker version
启动 Docker 服务
# service 命令的用法
$ sudo service docker start
# systemctl 命令的用法
$ sudo systemctl start docker
镜像操作
获取镜像
docker pull [imageName]:[tag]
列出本地镜像
docker images
将修改后的容器提交为新镜像
docker commit -m "提交的说明信息" -a "更新的用户信息" [containerID] [imageName]:[tag]
利用 Dockerfile 来创建镜像
docker build -t [imageName]:[tag] [Dockerfile_path]
修改镜像的标签
docker tag [imageName] [username]/[respository]:[tag]
发布镜像文件
docker push [username]/[respository]:[tag]
存出镜像到本地文件
docker save -o [image.tar] [imageName]:[tag]
本地文件载入本地镜像库
docker load --input [image.tar]
#或
docker load < [image.tar]
移除本地镜像
docker rmi [imageName]
容器操作
新建并启动
docker run [OPINIONS] [imageName] /bin/bash
-it 容器的 Shell 映射到当前的 Shell
-d 容器启动后,在后台以守护态形式运行
--rm 停止运行后,自动删除容器文件
--name [containerName] 指定该容器的名字
--volumes-from [containerID] 挂载指定容器中的数据卷
-v [localPath:][containerPath] 创建一个数据卷挂载到容器里
-p [hostPort:containerPort] 容器的端口映射主机的端口
--link [containerName:alias] 与指定容器建立互联关系
启动已终止容器
docker start [containerID]
查看容器信息
docker ps -a
获取容器的输出信息
docker logs [containerID]
终止运行中的容器
docker stop [containerID]
导出容器快照到本地文件
docker export [containerID] > [container.tar]
容器快照文件导入为镜像
cat [container.tar] | docker import - [imageName]
删除容器
docker rm [-f] [containerID]
查看映射端口配置
docker port [containerID] [port]
Dockerfile操作
基本结构一般由四部分组成,基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
FROM php:5.6-apache
MAINTAINER haoren [email protected]
RUN docker-php-ext-install mysqli
CMD apache2-foreground
指令
FROM [imageName]:[tag] 基础镜像信息,必须为第一条指令
MAINTAINER [username] 维护者信息
RUN [command] 在当前镜像上操作指令
CMD [command] 容器启动时执行的指令,会被容器启动时指定的命令覆盖
EXPOSE [port] 容器暴露的端口号,供互联系统使用
ENV [key] [value] 指定一个环境变量
ADD [src] [dest] 复制指定的 src 到容器中的 dest
COPY [path1] [path2] 复制本地主机的 path1 目录到容器中的 path2 目录
ENTRYPOINT [command] 容器启动后执行的指令,不可被 docker run 提供的参数覆盖
VOLUMN [path] 创建一个可以从本地主机或其他容器挂载的挂载点
USER [daemon] 指定运行容器时的用户名或 UID
WORKDIR [workpath] 为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录
ONBUILD [INSTRUCTION] 配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令
创建镜像
docker build -t [imageName]:[tag] [Dockerfile_path]
建议放置 Dockerfile 的目录为空目录,也可通过 .dockerfile 文件来忽略路径下的目录或文件
网络操作
只有在 docker run 执行时使用的选项
-h [hostName] or –hostname=[hostName] 配置容器主机名
--link=[containerName:alias] 添加到另一个容器的连接
-–net=[bridge|none|host|container:containerID] 配置容器的桥接模式
-p SPEC or –publish=SPEC 映射容器端口到宿主主机
-P or –publish-all=[true|false] 映射容器所有端口到宿主主机
既可以在启动 Docker 服务时指定,也可以在 docker run 时指定的命令选项
-–dns=IP_ADDRESS 使用指定的DNS服务器
–-dns-search=DOMAIN 指定DNS搜索域
只有在 Docker 服务启动的时候才能配置的命令选项
-–ip-forward=true|false 是否允许容器访问外部网络
-–icc=true|false 是否允许容器之间进行通信
-–iptables=true|false 是否允许 Docker 添加 iptables 规则
-–bip=CIDR 定制 docker0 的掩码
-–mtu=BYTES 容器网络中的 MTU
-b BRIDGE or -–bridge=BRIDGE 指定容器挂载的网桥
-H SOCKET or -–host=SOCKET Docker 服务端接收命令的通道