基础操作
查看镜像列表
docker images
拉取镜像
docker pull redis
Docker Hub
镜像打包
docker save -o redis.tar redis:latest
删除镜像
docker rmi redis:latest
导入镜像
docker load -i reids.tar
容器命令
创建并运行一个容器
docker run --name mynginxserver -p 8080:80 -d nginx:6.2.0
docker run --name myredis -p 6379:6379 -d redis redis-server --save 60 1 --loglevel warning
暂停容器运行
docker pause
恢复容器运行
docker unpause
停止容器运行
docker stop mynginxserver
启动容器
docker start mynginxserver
查看容器运行日志
docker logs -f mynginxserver
查看所有运行的容器和状态
docker ps
查看所有容器
docker ps -a
进入容器执行命令
docker exec -it mynginxserver bash
docker exec -it myredis redis-cli
删除容器
docker rm mynginxserver
数据卷
docker volume --help
查看数据卷列表
docker volume ls
创建一个名为html的数据卷
docker volume create html
查看数据卷html具体映射哪个真实文件夹
docker volume inspect html
删除html数据卷
docker volume rm html
清理所有未使用的数据卷
docker volume prune
挂载 数据卷、目录、文件
mysql为例 (-v为挂载命令)
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v html:/root/html
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
进入mysql
docker exec -it mysql mysql -u root -p
自定义镜像
自定义镜像需要自己写一个构建镜像的脚本,脚本大致分为4部分:
(1)基础镜像环境
(2)对基础镜像进行自定义操作
(以配置jdk环境举例,需要在基础镜像里创建jdk目录,将jdk安装包拷贝到基础镜像里,解压安装,配置环境参数等等。。。)
(3)暴露端口
(做这些工作肯定是要对外服务的,一般形式通过端口进行交互)
(4)启动命令
(上面配置好这么多东西,docker启动自定义镜像的时候需要帮你做什么?java项目肯定是要启动java -jar啦)
脚本如下,命名为 Dockerfile ,没有文件后缀名
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
构建命令
docker build -t javaweb:1.0 .
构成 docker build -t + 镜像名称 + : + 版本号 + Dockerfile所在文件路径
构建完成后通过 docker images 查看是否生成自定义镜像。
docker既然是基于基础镜像进行构建自定义镜像,那这个基础镜像好像也不一定只能是一个linux系统镜像,比如可以是一个配置好jdk环境的基础镜像,可以是配置好maven、node.js等等的镜像。
以java项目举例,那就不需要像上面一样,每次都用linux系统镜像,安装jdk,再导入jar包,再启动。而是改成了用jdk的基础镜像,导入jar包,再启动
脚本如下,在dockerhub上找一个jdk的基础镜像,然后将你的jar放入进去即可
(一定要注意安全啊,因为看不见基础镜像里到底都有啥,感觉重要的东西还是自己构建镜像好)
# 指定基础镜像
FROM qorzj/java8-alpine:latest
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
注意