介绍
三个部件
镜像(Image)
容器(Container)
仓库(Repository)
docker pull redis
docker run -d name redis redis
docker start/stop/pause redis
容器镜像的运行关系
安装
centos7安装
yum install docker
卸载
yum list installed | grep docker
yum remove -y(-y不询问)
启动
service docker start
service docker stop
sudo chkconfig docker on(开机启动)
# 查看docker程序是否正常工作
docker info
测试
docker version
docker run hello-world
docker search hello-world
docker常规用法
docker操作
版本/信息
docker [info|version]
容器操作
容器生命周期管理
docker [run | start | stop | restart | kill | rm | pause | unpause]
run -dti
d 后台运行
it 交互shell进程
保持一个前端进程,容器就不会退出
容器操作运维
docker [ps | inspect | exec | logs | history | save | import ]
inspect 查看上下文信息
容器root fs命令
docker [commit | cp | diff]
镜像管理
docker [images | rmi | tag | build | history | save | import]
rmi 删除镜像
仓库操作
docker [log | pull | push | search]
配置镜像
vi /etc/docker/daemon.json
官方针对中国市场的镜像
{
"registry-mirrors":["https://registry.docker-cn.com"]
}
官方针对中国市场的镜像也很慢,最好配置一个阿里云的镜像,速度比较快
登陆阿里云官网,搜索容器镜像服务,复制自己的加速器地址到/etc/docker/daemon.json文件即可
退出容器并关闭
exit
退出容器并不关闭
ctrl + p + q
手动运行tomcat
docker pull tomcat
# 指定版本号可以这样写
docker pull tomcat:版本号
# 还可以指定仓库名,不指定默认为官方仓库
docker pull erlieStar/hello
# 指定ip和port,不指定默认为官方仓库
docker pull ip:port/erlieStar/hello
docker run -d --name tomcat 9090:9090 tomcat(启动失败,删除原来的,docker rm tomcat)
docker ps
端口格式为:宿主端口:docker端口
启动报错
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "process_linux.go:258: aor unknown property.\"".
执行
yum update
查看详情
docker inspect tomcat
仓库使用
docker tag hello-word erlieStar/hello:2.0
docker login
docker push erlieStar/hello:2.0
docker tag 标记本地镜像,将其归入某一仓库
login 登陆仓库
docker push 推送镜像到仓库(需要登陆)
search 在仓库中查询镜像-无法查询到tag版本
pull 下载镜像到本地
搭建私有仓库
docker run -d --name reg -p 5000:5000 registry
查看私有镜像
curl http:ip:port/v2/_catalog
发布到私有仓库
docker push ip:port/hello
数据管理
docker run --name ce -v /opt/data -it cenos /bin/bash
需要改变宿主机目录时
docker run --name ce2 -v /opt/data:data -it cenos /bin/bash
/opt/data 为宿主机目录
docker的数据卷默认位置:/var/lib/docker/volumes
共享容器ce的共享文件
docker run -it --name ce3 --volumes-from ce centos
相同目录下有相同的数据文件
ce容器生成订单数据 opt/data
ce3容器需要来处理订单数据 volumes-from
删除容器也不会宿主数据
镜像的制造
docker commit n1 cent-ng:v1
docker run -it --name ngx1 cent-ng:v1 /bin/bash
启动容器的时候,直接启动nginx (要以前台的方式启动,daemon off守护关闭)
docker run -d --name ngx3 cent-ng:v1 /usr/sbin/nginx -g “daemon off;”
假如docker run时指定/usr/sbin/nginx nginx进程是以后台进程启动的
基础镜像,维护者信息,操作指令,容器CMD
dockerfile的指令分为两种:构建指令和设置指令
构建指令:用于构建镜像的时候执行的,不会在该镜像上的容器里执行
设置指令:用于设image的属性,将会在运行的容器里执行
Dockerfile使用
Dockerfile指令集
命令 | 解释 |
---|---|
FROM | 第一条指令必须为FROM指令,用于指定基础镜像 |
MAINTAINER | 指定维护者信息 |
RUN | 会在shell终端运行命令 |
EXPOSE | 格式为EXPOSE[…] 声明容器需要暴露的端口号,镜像启动可以通过-P或-p进行端口映射的绑定 |
ENV | 指定一个环境变量,可以被后续的RUN引用,并且在容器中记录该环境变量 |
ADD | 该命令将复制指定的文件到容器中,其中可以是Dockerfile所在目录的一个相对路径,也可以是tar文件(自动解压) |
VOLUME | 格式为VOLUME [path],可以创建一个可以从本地主机或其他容器挂载点,一般用来存放需要保持的数据 |
USER | 指定运行容器时的用户名,后续的RUN也会指定该用户 |
WORKDIR | 指定工作空间,后续命令都在此目录下执行 |
CMD | |
ENTRYPOINT |
FROM openjdk:8
将test-1.0.jar重命名为web.jar
ADD ["test-1.0.jar", "web.jar"]
EXPOSE 8090
ENTRYPOINT ["java","-jar","/web.jar"]
docker build -t member:test
连接不上容器中的mysql