docker常使用的命令
docker 镜像和容器命令
docker images # 查看镜像
docker search # 搜索镜像
docker pull # 下载镜像
docker rmi # 删除镜像
docker ps -a # 查看容器
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
docker stop 容器ID # 停止容器
docker kill 容器ID # 强制停止当前容器
docker rm 容器ID # 删除容器
docker stats 容器ID # 查看容器所占的CPU、内存
docker logs -tf --tail 10 容器ID # 查看10条容器运行日志
docker top 容器ID # 查看容器中的进程信息
docker inspect 容器ID # 查看镜像的元数据
docker exec -it 容器ID /bin/bash # 进入容器内部,可以进行操作
docker attach 容器ID # 进入正在运行的容器内部
exit # 进入容器后直接腿粗
ctrl +P +Q # 进入容器后不停止退出
docker cp 容器ID:/usr/local/test.png /opt/ # 将容器内部的文件拷贝到主机上
docker 部署Nginx
docker search nginx
# 安装Nginx
docker pull nginx
# 运行Nginx容器 -d以后台方式运行 --name别名 -p映射的端口号 8888本机的端口号 80容器内部的端口号 --restart=always开机自启动
docker run -d --name nginx -p 8888:80 --restart=always nginx
docker 部署tomcat
# 安装tomcat
docker pull tomcat:9.0
# 运行tomcat容器
docker run -d --name tomcat9 -p 8080:8080 tomcat:9.0
Portainer可视界面图形面板安装
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
docker run -d -p 8080:8080 tomcat
# 2、发现这个默认的tomcat 是没有webapps应用,官方的镜像默认webapps下面是没有文件的!
docker exec -it 容器id
# 3、拷贝文件进去
# 4、将操作过的容器通过commit调教为一个镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像。
docker commit -a="kuangshen" -m="add webapps app" 容器id tomcat02:1.0
容器数据卷
原先的数据都在容器中,如果我们删除容器的话我们的数据都会丢失。
容器数据卷就是目录的挂载,将我们容器内的目录,挂载到Linux上面
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!
# 直接使用命令来挂载 -v /home/ceshi主机上的地址 /opt docker容器内的地址,内容相互映射(双向绑定)
docker run -it -v /home/ceshi:/opt centos /bin/bash
# 查看Mounts中是否挂载成功
docker inspect 容器ID
具名和匿名挂载
# 匿名挂载 -v 只有容器内路径 就是匿名挂载!
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 具名挂载 -v 卷名:容器内路径
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
# 所有的docker容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/xxxx/_data
下
docker volume inspect juming-nginx
# 三种挂载: 匿名挂载、具名挂载、指定路径挂载
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载 docker volume ls 是查看不到的
数据卷容器
容器之间的配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的!
# --volumes-from相当于java中的extends 可以实现多个容器数据共享
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
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name
mysql02 --volumes-from mysql01 mysql:5.7
DockerFile
dockerdFile是用来构建docker镜像的文件
构建步骤:
1.编写一个dockerfile的文件
2.docker build构建为一个镜像
3.docker run运行镜像
4.docker push发布镜像(DockerHub、阿里云仓库)
基础知识
注意点
1.上图每个保留关键字都是大写字母
2.执行从上到下按照顺序执行
3.#表示注释
4.每一个指令都会创建提交一个新的镜像层,并提交
DockerFile是面向开发的,发布项目、做镜像,都需要编写dockerFile文件。
Docker进行逐渐成为企业交付的标准
步骤:
1.开发:DockerFile:构建文件,定义了一切的步骤,源代码
2.部署:DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品
3.运维:Docker容器:容器就是镜像运行起来提供服务器
DockerFile指令
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的,姓名+邮箱
RUN # 镜像构建时需要运行的命令
ADD # 镜像中添加内容 比如CentOs镜像添加JDK、tomcat
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露的端口配置
CMD # 指定这个容器启动时需要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动时需要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令
COPY # 类似ADD,将文件拷贝到镜像中
ENV # 构建的时候设置环境变量
创建一个自己的CentOs
# 1.编写Dockerfile文件,创建文件mydockerfile-centos
vim mydockerfile-centos
FROM centos
MAINTAINER cheng<1204598429@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 echo "-----end----"
CMD /bin/bash
# 2、通过这个文件构建镜像
# 命令 docker build -f 文件路径 -t 镜像名:[tag] .
docker build -f mydockerfile-centos -t mycentos:0.1 .