镜像基本命令
帮助命令
docker --help
docker info 显示docker 的容器和镜像信息
docker version 显示docker的版本信息
镜像命令
docker images
显示docker 的镜像。
docker search
docker 搜索命令
docker pull
现在镜像
docker pull mysql:[tag]
docker pull docker.io/library/mysql:latest
docker rmi
删除镜像
docker rmi -f 镜像ID
删除所有的镜像
docker rmi -f $(docker images -aq)
容器命令
下载一个centos 的镜像 ,docker pull centos
新建容器并启动
docker run [可选参数] 镜像
参数说明
参数 | 说明 |
---|---|
--name | 容器名称 |
-d | 后台方式运行 |
-it | 交互方式运行 |
-p | 端口映射 -p 主机端口:容器端口 -p 8080:8080 |
-P | 随机指定端口 |
启动并进入容器
docker run -it centos /bin/bash
进入容器后,使用exit 命令退出容器。
查看运行的容器
docker ps 查看活动的容器
参数 | 说明 |
---|---|
-a | 查看所有的容器,包括停止的 |
-n=? | 查看最近运行的容器 |
-q | 只显示容器ID docker ps -aq |
退出容器
exit 容器停止并退回
ctrl + p +q 容器不停止退出
删除容器
docker rm 容器ID
docker rm -f $(docker ps -aq)
docker ps -a -q | xargs docker rm
docker ps -a -q | xargs docker rm -f
启动或停止容器
docker start 容器ID
dokcer restart 容器ID
docker stop 容器ID
docker kill 容器ID
常用的其他命令
后台启动容器
docker run -d centos
查看日志
docker logs -f -t -tail 条数 容器ID
让容器一直运行
docker run -d centos /bin/sh -c "while true;do echo ray;sleep 1;done"
docker logs -t -f --tail 10 1239043eefa8
查看容器内部的进程信息
docker top 容器ID
查看镜像元数据
docker inspect 容器ID
进入正在运行的容器
docker exec -it 容器ID /bin/bash #进入容器后开启一个新的终端,可以在里面操作
docker attach 容器id # 进入容器正在执行的终端
从容器拷贝文件到主机
docker cp 容器ID:容器内路径 目的主机的路径
测试
安装nginx
下载镜像
docker pull nginx
运行容器
docker run -d --name 名字 -p 主机端口:容器端口 镜像名称
docker run -d --name nginx001 -p 8080:80 nginx
进入容器
docker exec -it nginx001 /bin/bash
用完即删除
docker run -it --rm tomcat:9.0 ,一般用来测试,用完即删除
docker run -d -p 3355:8080 --name tomcat01 tomcat
安装 elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.3
docker stats
增加内存配置:
docker run -d --name elasticsearch001 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" elasticsearch:7.17.3
docker 图形化管理工具
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
commit 镜像
docker commit 提交容器为一个新的副本
docker commit -m="提交的信息" -a="作者信息" 容器ID 目标镜像名称:[tag]
测试步骤:
1.启动一个tomcat
2.在tomcat中增加一个webapps 应用
3.拷贝文件到webapps目录。
4.将操作过的容器通过commit 提交为一个镜像,以后就可以使用这个镜像。
容器数据卷
什么是容器数据卷
数据不能保存在容器中,容器一删除,数据就删除了。数据不放在容器中。容器之间有一个数据共享技术。数据卷就是将容器内的目录 挂载到 宿主机目录上。
使用数据卷
使用命令挂载:
docker run -it -v /home/test:/home centos /bin/bash
docker inspect 容器ID
docker run -d -p 3310:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:8.0.29
Dockfile
用来构建docker镜像。
1.编写一个docker文件
2.构建镜像
3.运行镜像
4.dockerpush 发布镜像
docker 指令
1.指令必须都是大写字母。
2.从上到下执行
3.# 为注释
4.每一个指令会创建一个新的镜像层。
dockerfile 指令说明
指令 | 说明 |
---|---|
FROM | 基础镜像 |
MAINTAINER | 镜像是谁写的 |
RUN | 镜像构建是需要运行的命令 |
ADD | 步骤 tomcat镜像,需要添加的内容 |
WORKDIR | 镜像的工作目录 |
VOLUME | 挂载的目录 |
EXPOSE | 保留端口配置 |
CMD | 指定这个容器需要运行的命令,只有最后一个会生效 |
ENTRYPOINT | 指定这个容器需要运行的命令,可追加命令 |
ONBUILD | 当构建一个被继承DockerFile这个时候会运行ONBUILD的指令,触发指令 |
COPY | 类似ADD 将文件copy到镜像 |
ENV | 构建的时候 设置环境变量 |
编写 dokerfile
FROM centos:7
MAINTAINER RAY<58133370@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD /bin/bash
编译构建
docker build -f dockfile -t mycentos:1.0 .
测试运行
docker run -it mycentos:1.0
1.进入后,直接进到工作目录
2. 支持 ifconfig 明
3.支持vi 命令
可以通过 docker history '镜像ID'查看进行编译的过程
CMD和 ENTRYPOINT区别
CMD ["ls" ,"-a"]
docker run 镜像ID -l 会报错
ENTRYPOINT ["ls" ,"-a"]
docker run 镜像ID -l 会变成 ls -al ,不会报错
tomcat 镜像
- 编写Dockerfile
FROM centos:7
MAINTAINER ray<58133370@qq.com>
ADD jdk-8u191-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.62.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME=/usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.62
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.62
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib;$CATALINA_HOME/bin
EXPOSE 8080
CMD $CATALINA_HOME/bin/startup.sh && tail -F $CATALINA_HOME/logs/catalina.out
- 编译镜像
docker build -t tomcat:1.0 .
- 运行镜像
docker run -d -p 8080:8080 -v /home/tomcat/webapps:/usr/local/apache-tomcat-9.0.62/webapps tomcat:1.0
- 打tag
docker tag 容器ID ray/tomcat:1.0
导出导入镜像
- 将镜像保存到tar文件中,这个镜像可以拷贝给其他人
docker save -o tomcat.tar tomcat:1.0
- 可以将导出的镜像导入
docker load -i tomcat.tar