docker安装(支持各系统)及使用参考:https://www.w3cschool.cn/docker/centos-docker-install.html
docker hub 搜索下载镜像:https://hub.docker.com/
docker 可视化管理工具:https://www.jianshu.com/p/b3bec0b936c2
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
使用 yum -y install docker 命令安装
安装完成后使用 docker -v 确认安装完成及版本
启动docker 服务
测试运行 hello-world,由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
服务启动后,还可以用命令 docker images,查看当前docker 仓库中的镜像。刚pull下来的hello-world镜像也在其中。
docker 显示所有 commands 用法及介绍
service docker start
service docker restart
service docker stop
docker -v
docker build -t test:1.0 -f Dockerfile-jenkins .
-t 定义构建的镜像名及版本
-f 如果用的不是Dockerfile,需要用这个参数来指定
. 表示Dockerfile位于当前目录下
docker images 查看本地镜像
docker ps -a 查看所有容器,及其运行状态,容器id等信息
docker ps 查看当前正在运行的容器
docker logs [container id] 查看容器的日志输出
docker logs -f [container id] 像tail -f 监听日志
docker stop [container id] 停止正在运行的容器
docker start [container id] 启动容器
docker inspect [container id] 查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
docker rm [container id] 删除废弃的容器,容器必须已停止才可删除,否则报错。
批量删除容器:
-f: 强行删除运行中的容器
-v: 删除容器卷
-f: --filter,按名字=rancher去过滤容器
-qa: 只展示容器id
docker rm -f -v $(docker ps -f name=rancher -qa)
删除镜像时使用-f参数可以强行删除镜像,但建议应先删除引用该镜像的容器,再删除该镜像。
docker rmi [-f] [IMAGE ID] 通过镜像id删除镜像,
docker rmi [-f] [REPOTSITERY:TAG] 通过标签删除镜像
将15.10版本的ubuntu镜像,运行成容器:
docker run -t -i ubuntu:15.10 /bin/bash
--restart=always 即在容器停止或服务器重启后,自动启动
-i 允许你对容器内的标准输入 (STDIN) 进行交互
-t 在新容器内指定一个伪终端或终端
-d 容器后台运行
-p port:port 将容器内部的端口映射到我们的主机上
-P 是容器内部端口随机映射到主机的高端口
-v dir1:dir2:ro 可以指定宿主机的目录或文件(dir1),挂载到容器的对应目录,如果加上:ro,表示容器只能读不能写
docker search mysql 可以用来搜索你需要的镜像,如:Mysql镜像
NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
OFFICIAL:是否docker官方发布
docker tag [IMAGE ID] [REPOSITERY]:[TAG] 在指定imageid的镜像基础上,复制出一个定义了新tag的镜像。
1)将当前目录下的 Dockerfile 文件构建成镜像,如果Dcokerfile文件名为其他,或不在当前目录,可以用 -f 参数去指定要用的Dcokerfile文件:
docker build -t my/test:1.0 .
指定镜像名:版本 取当前目录Dockerfile
2)将指定容器打包成新的镜像
docker commit -m="has finish" -a="laowang" e218edb10161 my/test:1.0
描述提交信息 指定作者 容器id 指定镜像名:版本
3)将docker制成压缩包,并在其他机器加载成镜像
docker save redis > redis.tar.gz #将镜像制成压缩包
现在将镜像从本地删除,然后重新装载:
docker load -i redis.tar.gz #将本地文件加载成镜像
#说明:dockerfile的基础命令
FROM:指为当前的环境引入一个基础镜像(nginx环境之上的linux内核镜像)
CMD:执行命令(和run很相似,但是一个dockerfile只能有一个cmd指令,如有多个最后一个生效)
LABEL:设置标签(类似为变量赋值)
EXPOSE:暴露端口号(解除断口的防火墙)
ENV:设置环境变量
COPY:复制到指定地方
ADD: copy指令的高级版(具有解压功能),将系统文件拷贝到容器内,可以指定到具体目录下
USER:指定容器的用户
WORKDIR:如果目录存在 cd到指定目录,不存在则创建并cd到指定目录
ARG:表示变量
VOLUME ["/data1","/data2","/data3"] 挂载卷:/data1~3都是容器内的目录,Dockerfile挂载不能指定映射主机目录,运行容器后在docker安装目录自动生成,可通过docker inspect 容器id 查看。
其实VOLUME指令只是起到了声明了容器中的目录作为匿名卷,但是并没有将匿名卷绑定到宿主机指定目录的功能。但是当我们生成镜像的Dockerfile中以Volume声明了匿名卷,并且我们以这个镜像run了一个容器的时候,docker会在安装目录下的指定目录下面生成一个目录来绑定容器的匿名卷(这个指定目录不同版本的docker会有所不同)。
ENTRYPOINT ["java","-jar","eureka.jar"] (容器启动后执行的命令,如该命令可在java镜像启动后,运行jar程序。可以覆盖CMD的内容)
RUN rm -rf /usr/local/tomcat/webapps/ROOT 构建镜像时运行指令,如 :构建tomcat镜像时删除自带的ROOT目录(apt install vim相似的指令)
# 以下为Dockerfile文件的内容
FROM java:8
MAINTAINER jjp
ADD eureka-0.0.1-SNAPSHOT.jar eureka.jar
EXPOSE 8761
ENTRYPOINT ["java","-jar","eureka.jar"]
1.新建Dockerfile文件,没映射 /usr/local/tomcat/webapps 是因为Dockerfile里不能指定映射的主机目录。所以我准备在启动容器时再映射
2.打包镜像
3.运行镜像,设置参数 -v $PWD/webapps:/usr/local/tomcat/webapps,新打成的war包,放到webapps下,即可在容器内运行了。
4. docker inspect [container id],查看容器参数,可以看到 Dockerfile 指定的容器卷,自动生成映射的主机目录
docker search portainer
docker pull portainer/portainer
docker run -d \
-p 9000:9000 \
--restart=always \
-v /run/docker.sock:/var/run/docker.sock \
--name portainer \
portainer/portainer
浏览器打开:http://ali:9000,登录用户admin,需要设置8位密码,我用12345678
登录后,可选择 Local 或 Remote 连接
Portainer 工具是指定 /run/docker.sock 启动的,能连接到本地docker。我们选择连接 Local:
1. 选择Local 并连接:会看到服务器本地仓库镜像和容器
这个管理界面的功能非常的丰富,有镜像、容器、网络等方面的直观统计,非常的方面。
点击左边菜单栏的 Containers,打开容器管理界面,可以对容器进行增删改查的操作!