文章目录
一、常见命令
Docker最常见的命令就是操作镜像、容器的命令,详见官方文档: https://docs.docker.com/
需求:
在DockerHub中搜索Nginx镜像,查看镜像的名称
c
docker pull nginx
拉取Nginx镜像
查看本地镜像列表
c
docker images
创建并运行Nginx容器
c
docker run -d --name nginx -p 80:80 nginx
查看容器
c
docker ps
docker ps -a
停止容器
c
docker stop nginx
再次启动容器
c
docker start nginx
进入Nginx容器
c
docker exec -it nginx bash
#退出容器
exit
删除容器
c
docker rm mysql
docker rm -f mysql
二、数据卷
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。
三、数据挂载
查看容器是否与宿主机挂载
c
docker inspect 容器名
Mounts目录下为挂载信息
c
docker inspect mysql
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
-v /root/mysql/conf:/etc/mysql/conf.d \
mysql
四、自定义镜像
镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
案例:
我们可以基于Ubuntu基础镜像,利用Dockerfile描述镜像结构
c
# 指定基础镜像
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
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]
也可以直接基于JDK为基础镜像,省略前面的步骤:
c
# 基础镜像
FROM openjdk:11.0-jre-buster
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
五、网络
默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上:
加入自定义网络的容器才可以通过容器名互相访问,Docker的网络操作命令如下: