1.帮助命令
# 显示docker的版本信息
[root@Link ~]# docker version
# 显示docker的系统信息,包括镜像和容器的数量
[root@Link ~]# docker info
2. 镜像命令
# 查看所有本地的主机上的镜像
dokcer images
# 搜索镜像
docker search 镜像名[:tag]
# 下载镜像
docker pull 镜像名[:tag]
# 删除镜像
docker rmi -f 镜像id
3.容器命令
# 新建容器并启动
docker run
# 列出所有运行的容器
docker ps
# 查看日志
docker logs -tf 容器id
docker logs -tf --tail number 容器id
# 进入当前正在运行的容器
docker exec -it 容器id /bin/bash
docker attach 容器id
# 两种方式的区别 docker exec进入容器后开启一个新的终端,可以在里面操作。 docker attach进入容器正在执行的终端,不会启动新的进程。
# 从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机的路径
# 查看镜像的元数据
docker inspect 容器id
# 删除容器
docker rm -f 容器id
# 启动容器
docker start 容器id
# 重启容器
docker restart 容器id
# 停止当前正在运行的容器
docker stop 容器id
# 强制停止当前容器
docker kill 容器id
4.完整的docker run 命令
docker run -d -p 3306:3306 \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql01 mysql:5.7
# 参数含义
-d 后台启动
-v 数据卷挂载
-e 设置环境变量
--name 设置容器名
5. 容器数据卷
容器之间可以有一个数据共享的技术,Docker容器中产生的数据,同步到本地。这就是**卷技术**,即目录的挂载,将我们容器内的目录,挂载到Linux主机上面。**容器的持久化和同步操作,容器间也是可以数据共享的。**
>方式一:直接使用命令来挂载:-v
>
>```shell
>-v 容器内的路径 # 匿名挂载
>
>-v 卷名:容器内的路径 # 具名挂载
>
>-v /宿主机路径:容器内路径 # 指定路径挂载
>方式二:使用Dockerfile实现挂载
>Dockerfile 就是用来构建 docker 镜像的构建文件,命令脚本
>
>VOLUME ["volume01","volume02"]
>
>方式三:数据卷容器 --volumes-from 通过此命令使容器间的数据共享
>--volumes-from 容器名
6. 如何编写dockerfile文件
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的:姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤:tomcat镜像,这个tomcat压缩包。添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令。触发指令。
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量
#基础镜像
FROM centos:7
#作者信息
MAINTAINER cm<xxxx@qq.com>
#拷贝readme.txt至容器内
COPY readme.txt /usr/local/readme.txt
#添加JDK压缩包至容器内,ADD命令可以自动解压
ADD jdk-8u144-linux-x64.tar.gz /usr/local/
#添加tomcat压缩包至容器内,ADD命令可以自动解压
ADD apache-tomcat-8.5.61.tar.gz /usr/local/
#安装vim命令
RUN yum -y install vim
#设置环境变量,一启动镜像会进入的工作目录
ENV MYPATH /usr/local
#设置工作目录
WORKDIR $MYPATH
#配置JAVA的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#配置tomcat的环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.61
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.61
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#配置tomcat暴露的端口8080
EXPOSE 8080
#运行时执行的命令
CMD /usr/local/apache-tomcat-8.5.61/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.61/bin/logs/catalina.out
7.微服务打包docker镜像
1.新建Dockerfile文件
2.上传jar包、Dockerfile文件至服务器
3.构建镜像 docker build -t hello .
4.启动镜像 docker run -d -P --name demo-springboot hello
FROM openjdk:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
8.其他常见命令
# 列出Docker主机上的全部网络
docker network ls
# 移除指定的网络
docker network rm 网络名
# 查看网络
docker network inspect 网络名
# 创建网络
docker network create --d 网络驱动类型 --subnet 子网范围 --gateway 网关地址 网络名
# 将容器连接到网络,例如跨网络操作
docker network connect 网络名 容器名
# 断开容器的网络
docker network disconnect 网络名 容器名
# 删除全部未使用的网络
docker network prune
# 创建网络
# --driver bridge 可不写,默认桥接模式
# --subnet 192.168.0.0/16 IP范围:192.168.0.2 ~ 192.168.255.255 总数:255*255个
# --gateway 192.168.0.1 设置网关
[root@Link ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# 列出Docker主机上的全部网络
[root@Link ~]# docker network ls
# 查看网络
[root@Link ~]# docker network inspect mynet
# 启动容器并指定自定义网络
[root@Link ~]# docker run -d -P --name tomcat_net_01 --net mynet tomcat:9