欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker入门教程

程序员文章站 2022-06-03 13:13:27
...

介绍

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

docker入门教程

docker pull redis
docker run -d name redis redis
docker start/stop/pause redis

容器镜像的运行关系
docker入门教程

安装

centos7安装

yum install docker
卸载
yum list installed | grep docker
yum remove -y(-y不询问)

启动

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

测试

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"]
}

退出容器并关闭

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入门教程
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

参考博客