Docker入门学习
一、理论知识
1.什么是Docker,为什么用Docker
他是一个开源的应用程序引擎。
因为方便,我理解的几方面:
- 不需要管运行环境,生成镜像都是带环境的,拉取完镜像后直接可运行。
- 通用性,只要支持Docker的平台,安装Docker后都可以运行。
- 管理方便,Docker compose k8s。
2.Docker三核心
-
镜像:说白就是应用程序文件(类似于ISO镜像文件),分层存储。
-
仓库:镜像的存储位置:一般的镜像都在docker hub,也有私人的镜像地址(阿里云,或者自己用docker-registry搭建)
-
容器:镜像运行的实体/环境(实质是宿主机的一个进程),分层存储
疑问:docker中一个容器只有一个镜像吗?
答:是的,一个容器内只有一个镜像,一个镜像可以有多个应用程序。但是一个镜像可以对应多个容器,被多个容器启动。一个镜像可以包含多个应用程序。
3.Docker常见命令
1. #### docker
systemctl enable docker //开机启动
systemctl start docker //启动Docker
docker run ... //在一个新的容器中执行一条命令
2. #### 操作镜像
docker search image-name //搜索镜像
docker pull image-name //拉取镜像
docker images //查找本地有哪些镜像
docker rmi image-name:version //删除本地某镜像
3. #### 操作容器
docker ps //查找当前运行的容器
docker ps -a //查找所有历史容器
docker stop/start/kill/restart Name/containerId //停止/启动/杀死/重启 容器
docker rm containerId //删除容器
二、实际操作
1.如何安装Docker
sudo yum install docker-ce
2.启动Docker
# 开机自启
systemctl enable docker
# 启动docker服务
systemctl start docker
3.Docker镜像加速配置
该操作是因为docker hub国外网站下载速度慢/无法下载。使用配置中的国内网站下载更快。
1.新建文件
touch /etc/docker/daemon.json
2.在文件里面写入:
{ "registry-mirrors":[
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"http://registry.docker-cn.com"
],"insecure-registries":["192.168.40.89:5000"]
}
3. 重启docker生效
systemctl daemon-reload(-前没有空格)
systemctl restart docker
4.用Doccker运行公开应用程序(示例)
Confluence是一个企业常用的文档管理平台(可以试用,长期得收费)。以下来自网站confluence搭建教程。
-
确认安装Docker较高版本(19以上)
-
运行confluence(会自动拉取镜像)
docker run -d --name confluence -p 8090:8090 --user root:root cptactionhank/atlassian-confluence
如果出现docker: Error response from daemon…,下载问题。需要配置docker镜像加速配置
-
进入confluence setup页面:192.168.40.86:8090(如果进不去,看是否防火墙是否放行8090)
5.Docker管理个人应用程序(jar包等)
-
用DockerFile构建私人镜像 ,并运行该私人java项目
a.准备私人测试项目 位置为: /mnt/xctest1.0.jar
新建 /mnt/springbootfile文件,文件内容为:
#父级镜像 FROM java:8 #作者信息 作者名称 邮箱 MAINTAINER XYH <xuyuanhao12138@gmail.com> #指定挂载点(备份的位置,防止丢失) VOLUME /tmp #将主机上的文件(Dockerfile的相对路径)或者网络文件添加到镜像中,我的测试项目为xctest-1.0.jar,添加为app.jar ADD xctest-1.0.jar app.jar #用来执行命令:新建文件 RUN bash -c 'touch /app.jar' #启动容器时默认运行的命令 ENTRYPOINT ["java", "-jar","/app.jar"]
b.构建镜像
docker build -f /mnt/springbootfile -t xctest:1.0 . //(构建镜像,注意后面有空格点)
c.启动镜像
docker run -d -p 8001:8001 xctest:1.0
-
构建私有仓库并上传
工具:docker-registry (以下是没有密码的私有仓库,设置密码暂无)
#运行docker-registry(默认地址:/var/lib/registry)(设置密码:使用htpasswd,certs证书,暂无) docker run -d -p 5000:5000 --restart=always --name registry registry #标记为带ip和端口号的镜像名称 docker tag xctest:1.0 192.168.40.89:5000/xctest:1.0 #登录(没有密码就不用登陆) docker login 192.168.40.89:5000 #上传 docker push 192.168.40.89:5000/xctest:1.0 #查看私有仓库 curl 192.168.40.89:5000/v2/_catalog
注意:上传时推送不成功,出现https相关问题,因为 Docker 默认不允许非 HTTPS 方式推送镜像:解决:
在本地 /ect/docker/daemon.json 添加
“insecure-registries”:[“192.168.40.89:5000”]
6.容器管理
-
Docker Compose
定义和运行多容器 Docker 的应用程序工具
-
k8s
Kubernetes,是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能(管理多个docker)
仅作为个人学习记录。
引用内容太多,记不住了。如有侵权请告知。