docker常用命令
一、镜像操作
1、删除镜像(先删除容器):docker rmi mysql:latest / docker rmi 镜像id
2、创建镜像:
基于已有镜像创建 :docker commit -m '提交信息' -a '作者信息' 容器id 别名
基于本地模板导入: cat 镜像.tar.gz | docker import - 别名:版本
3、存出和载入镜像:
存出:docker save -o 导出目录和文件名.tar 源镜像id
载入:docker load < 导入目录和文件名.tar
4、查看本地所有镜像:docker images
5、上传镜像:
创建镜像标签:docker tag 镜像id 用户名/别名:版本
上传镜像: docker push 用户名/别名:版本
二、容器操作
1、查看所有正在运行的容器或者查看所有容器: docker ps /docker ps -a / docker ps -a -q(停)
2、创建并运行容器:docker run -it 镜像id /bin/bash
docker run 常用属性
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container:
--link=[]: 添加链接到另一个容器;
--network :绑定容器到自定义网络中
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
--restart : 启动策略no 不自动重启容器. (默认值) on-failure 容器发生error而退出(容器退出状态不为0)重启容器,可以指定重启的最大次数,如:on-failure:10unless-stopped 在容器已经stop掉或Docker stoped/restarted的时候才重启容器always 在容器已经stop掉或Docker stoped/restarted的时候才重启容器,手动stop的不算
3、终止/启动/重启容器:
终止:docker stop 容器id docker kill 容器id
启动:docker start 容器id
重启:docker start 容器id
4、进入容器:docker exec -it 容器id /bin/bash
5、删除容器:docker rm -f 容器id / docker rm -f name
6、导入导出容器:
导出:docker export 镜像id >文件路径.tar
导入:cat 文件路径.tar | docker import - 用户/别名:版本
三、仓库
1、登录 docker login -u 用户名 -p 密码
2、搜索镜像:docker search mysql
3、下载镜像:docker pull mysql:latest
4.创建私有仓库:docker run -d -p 5000:5000 -v /docker/registry:/var/lib/registry registry
echo '{ "insecure-registries":["ip:5000"] }' > /etc/docker/daemon.json
docker push ip:port/别名
docker pull ip:port/别名
四、网络设置
1、创建自定义网络
docker network create --driver=bridge 别名
docker run -itd --network=别名 镜像
2.查看已有网络
docker network ls
五、Dockerfile的使用
1.创建镜像
#第一行必须指定基础镜像
FROM centos:7
#维护者信息
MAINTAINER https://blog.51cto.com/andyxu
#镜像的操作命令
#1.ENV 指定一个环境变量 设置时区
ENV TIME_ZOME Asia/Shanghai
#2.ADD <SRC> <DEST> 添加本地文件到容器 压缩文件自动解压 src可以为一个url
ADD $NV.tar.gz /tmp
#3.COPY 拷贝本地文件到指定目录 目的文件不存在时自动创建
COPY nginx.conf /data/nginx/conf/
#4.RUN 运行命令
RUN yum -y install gcc gcc-c++ make openssl-devel pcre-devel \
&& mkdir -p /data \
&& cd /tmp/$NV \
&& ./configure --prefix=/data/nginx \
&& make -j 2 \
&& make install \
&& echo "${TIME_ZOME}" > /etc/timezone \
&& ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime \
&& rm -rf /tmp/nginx* \
&& yum clean all \
&& yum -y remove gcc gcc-c++ make
#5.ENTPYPOINT ["ZZZ"] 配置容器启动后执行的命令
#6.VOLUME ["/data"] 创建挂载点
#7.USER 指定运行容器的用户名字
#8.WORKDIR 设置工作目录 .多个可用于切换目录
#设置端口
EXPOSE 80 22 8443
#容器启动时执行命令 使用 exec执行 推荐使用 多个cmd只执行最后一个
CMD ["./sbin/nginx","-g","daemon off;"]
2.运行镜像:docker build -t 标签 文件路径