docker是什么,怎么使用

介绍

三个部件
镜像(Image)
容器(Container)
仓库(Repository)

在这里插入图片描述

docker pull redis
docker run -d name redis redis
docker start/stop/pause redis
  • 1
  • 2
  • 3

容器镜像的运行关系
在这里插入图片描述

安装

centos7安装

yum install docker
卸载
yum list installed | grep docker
yum remove -y(-y不询问)
  • 1
  • 2
  • 3
  • 4

启动

service docker start
sudo chkconfig docker on(开机启动)
  • 1
  • 2

测试

docker version
docker run hello-world
docker search hello-world
  • 1
  • 2
  • 3

docker常规用法

docker操作
版本/信息

docker [info|version]
  • 1

容器操作
容器生命周期管理

docker [run | start | stop | restart | kill | rm | pause | unpause]
  • 1

run -dti
d 后台运行
it 交互shell进程
保持一个前端进程,容器就不会退出

容器操作运维

docker [ps | inspect | exec | logs | history | save | import ]
  • 1

inspect 查看上下文信息

扫描二维码关注公众号,回复: 7284445 查看本文章

容器root fs命令

docker [commit | cp | diff]
  • 1

镜像管理

docker [images | rmi | tag | build | history | save | import]
  • 1

rmi 删除镜像

仓库操作

docker [log | pull | push | search]
  • 1

配置镜像

vi /etc/docker/daemon.json
  • 1
{
	"registry-mirrors":["https://registry.docker-cn.com"]
}
  • 1
  • 2
  • 3

退出容器并关闭

exit
  • 1

退出容器并不关闭

ctrl + p + q
  • 1

手动运行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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

端口格式为:宿主端口: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.\"".
  • 1

执行

yum update
  • 1

查看详情

docker inspect tomcat
  • 1

仓库使用

docker tag hello-word erlieStar/hello:2.0
docker login
docker push erlieStar/hello:2.0
  • 1
  • 2
  • 3

docker tag 标记本地镜像,将其归入某一仓库
login 登陆仓库
docker push 推送镜像到仓库(需要登陆)
search 在仓库中查询镜像-无法查询到tag版本
pull 下载镜像到本地

搭建私有仓库

docker run -d --name reg -p 5000:5000 registry
  • 1

查看私有镜像

curl http:ip:port/v2/_catalog
  • 1

发布到私有仓库

docker push ip:port/hello
  • 1

数据管理

在这里插入图片描述
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
相同目录下有相同的数据文件
  • 1
  • 2

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"]
  • 1
  • 2
  • 3
  • 4
  • 5
docker build -t member:test

猜你喜欢

转载自www.cnblogs.com/gamecenter/p/11521019.html