docker
docker常用命令大全
java-jar 运行jar
nohup /root/java/jdk1.8.0_111/bin/java -jar service-side.jar --Dspring.config.location=config/* >/dev/null 2>&1 &
有状态容器不适合docker部署
docker search nginx -- 查看 可以下载
dockers images --查看本地镜像
docker ps --查看运行中的容器
docker start name 运行容器
docker stop name 停止容器运行
docker pull ${CONTAINER NAME} #拉取镜像
docker ps -a #查看所有正在运行的容器,加-q返回id
docker rmi ${IMAGE NAME/ID} #删除镜像
docker rm ${CONTAINER NAME/ID} #删除容器
docker exec -it nginx /bin/bash #进入容器
docker inspect name #查看容器信息
docker restart naem #重启容器
docker cp name:path path本机 # name 容器在容器内拷贝文件到本地
docker logs name #查看日志
docker logs --tail 10 name # 查看后10条日志
docker logs name -f # 一直
--restart=always docker重启 该容器也重启
docker image inspect (docker image名称):latest|grep -i version 查看latest版本
docker search activemq 查看下载
--network host 网络模式,所有容器端口都对应属主机端口,不存在映射关系。
-t:为容器分配 一个伪终端;-i:进行交互式的标准输入
有的目录挂载不出来 比如mysql bin
镜像导出导入
保存到当前目录下
`docker save -o nginx.tar nginx:latest`
或
`docker save > nginx.tar nginx:latest`
其中-o和>表示输出到文件,`nginx.tar`为目标文件,`nginx:latest`是源镜像名(name:tag)
`docker load -i nginx.tar`
或
`docker load < nginx.tar`
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
启动
docker run --name csXXX -d -p 8686:8686 cs1.0
容器名字 后台运行 指定端口 镜像名字
打包
docker build -t name .
Dockerfile
dockerfile EXPOSE 端口 是项目使用的端口
-p 8687:8686 访问端口 映射 程序运行的端口
FROM java:8
MAINTAINER lgl
ADD service-side.jar demo.jar
EXPOSE 8686
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java","-jar","demo.jar"]
python docker中下载包本地要安装py环境好像
#基于的基 础镜像
FROM python:3.7.4
#代码添加到code文件夹,后面可以通过进入容器中看的
ADD ./ /code
# 设置code文件夹是工作目录
WORKDIR /code
# 安装支持
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
#当容器启动时,使用python3执行指定路径的py脚本
CMD ["python3", "/code/main.py"]
mysql 运行命令
docker run -p 3306:3306 -d --name mymysql -v /docker/mysql/data:/usr/share/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.5
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v /docker/mysql/data:/usr/share/mysql:将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码
redis 运行命令
docker run -p 6379:6379 -d --name myredis -v /docker/redis/data:/data redis redis-server --appendonly yes
-p 6379:6379 将容器的6379端口映射到主机的6379端口
-v /docker/redis/data:/data: 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes: 在容器执行redis-server启动命令,并打开redis持久化配置
docker pull ${CONTAINER NAME} #拉取镜像
docker save ${IMAGE NAME} > ${FILE NAME}.tar #将镜像保存成文件
docker load < ${FILE NAME}.tar #从文件加载镜像
docker run... #运行一个容器
--name ${container name} #设置容器名称
-p ${host port}:${container port} #映射主机和容器内的端口
-e ${env name}=${env value} #添加环境变量
-d #后台运行
-v ${host folder path}:${container folder path} #将主机目录挂在到容器内
# Advance use
docker ps -f "status=exited" #显示所有退出的容器
docker ps -a -q #显示所有容器id
docker ps -f "status=exited" -q #显示所有退出容器的id
docker restart $(docker ps -q) #重启所有正在运行的容器
docker stop $(docker ps -a -q) #停止所有容器
docker rm $(docker ps -a -q) #删除所有容器
docker rm $(docker ps -f "status=exited" -q) #删除所有退出的容器
docker rm $(docker stop $(docker ps -a -q)) #停止并删除所有容器
docker start $(docker ps -a -q) #启动所有容器
docker rmi $(docker images -a -q) #删除所有镜像
docker exec -it ${CONTAINER NAME/ID} /bin/bash #进入容器内
docker exec -it ${CONTAINER NAME/ID} ping ${CONTAINER NAME/ID} #一个容器ping另外一个容器
docker top ${CONTAINER NAME/ID} #显示一个容器的top信息
docker stats #显示容器统计信息(正在运行)
docker stats -a #显示所有容器的统计信息(包括没有运行的)
docker stats -a --no-stream #显示所有容器的统计信息(包括没有运行的) ,只显示一次
docker stats --no-stream | sort -k8 -h #统计容器信息并以使用流量作为倒序
docker system
docker system df #显示硬盘占用
docker system events #显示容器的实时事件
docker system info #显示系统信息
docker system prune #清理文件
docker file

CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
列出最近创建的5个容器信息。
FROM:基础镜像,当前镜像基于那个镜像的
MAINTAINER:镜像维护者的姓名和邮箱地址
RUN: 执行过程中需要执行的linux命令
WORKDIR:指定容器后,终端默认登陆的进来工作目录,一个落脚点
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径位置> 1、COPY src dest 2、COPY ["src","dest"]
VOLUME: 通过 VOLUME 指令创建的挂载点,本地可修改 直接生效,多个容器可以共用实现同步效果 (执行Dockerfile文件后直接生成文件路径,实现本地数据进行挂载)
ENV:定义环境变量的同时,可以引用已经定义的环境变量
EXPOSE:告诉 Docker 服务端容器暴露的端口号,供互联系统使用
CMD:命令设置容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换
ENTRYPOINT:指定启动容器时执行的命令, ENTRYPOINT的目的和CMD一样,指定容器启动程序及参数 命令附加不覆盖
ONBUILD: 当构建一个被继承的Dockfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
ENV:用来构建镜像过程中设置环境变量
.dockerignore 文件编写方法
.dockerignore 文件的写法和 .gitignore 类似,支持正则和通配符,具体规则如下:
- 每行为一个条目;
- 以
#开头的行为注释; - 空行被忽略;
- 构建上下文路径为所有文件的根路径;
文件匹配规则具体语法如下:
| 规则 | 行为 |
|---|---|
| /temp | 匹配根路径下一级目录下所有以 temp 开头的文件或目录 |
| //temp* | 匹配根路径下两级目录下所有以 temp 开头的文件或目录 |
| temp? | 匹配根路径下以 temp 开头,任意一个字符结尾的文件或目录 |
| **/*.go | 匹配所有路径下以 .go 结尾的文件或目录,即递归搜索所有路径 |
| *.md !README.md | 匹配根路径下所有以 .md 结尾的文件或目录,但 README.md 除外 |

浙公网安备 33010602011771号