小言_互联网的博客

docker入门教程

400人阅读  评论(0)

介绍

三个部件
镜像(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

推荐

参考博客


转载:https://blog.csdn.net/zzti_erlie/article/details/100282808
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场