注:笔记是随便做的,没有注重排版和美化
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装docker地址:https://docs.docker.com/engine/install/centos/
1.docker daenon
2.rest api
3.docker client 客户端命令行使用
公开镜像:https://hub.docker.com/search?q=UBUNTU&type=image
//docker images
//运行镜像
docker run -it image_name
//摘取镜像
docker pull ubuntu:18.04
//构建镜像
docker build -t image_name
//查看镜像分层
docker history image_id
//查看镜像列表
docker images
docker image ls
//创建容器
docker create -it image_name:image_tag
//启动容器
docker start container_name
//查询镜像
docker images | grep registry
//挂载镜像
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry:2.7
//管理私有仓库
docker tag ubuntu 127.0.0.1:5000/private_registry
//docker run -d 得时候会从后台运行容器
docker ps //正在运行得容器
查看指定容器端口映射
docker container port container_name
attach
//进入一个正在运行得容器 通过attach进入的容器 exit 退出后会关闭整个容器
docker attach container_name
//exec在运行得容器内执行任意命令
docker exec -it container_name /bin/bash
删除容器
docker rm container_id/container_name -f 强制删除
导入容器
docker import -m"描述" thomas.tar image_name:0.0.1
导出容器
导出一个已经创建好得容器到一个文件 不管这个容器是否处于运行状态都可以
docker export -o thomas.tar container_name
查看容器
1.查看容器详情
docker container inspect container_name
2.查看容器内得进程
只能查看处于运行中得容器
docker container top container_name
3.//查看容器得统计
docker container stats container_name
4.//查看隐射端口
docker container port container_name
5.//清理容器
docker container prune 清理处于停止得容器
6.//查看容器日志
docker logs container_id -f
概述:仓库表示存储镜像得地方
分类:
docker 官方镜像仓库
第三方镜像仓库
通过docker官方提供的registry镜像来搭建本地私有仓库
//1.拉取公共镜像
docker pull registry
docker images
//2.创建目录 存储镜像用
cd /usr/local
mkdir docker_registry
//3.启动镜像
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry:2
docker run -d -p 5000:5000 --name=jackspeedregistry --restart=always --privileged=true -v /usr/local/docker_registry:/var/lib/registry docker.io/registry
-p 5000:5000 端口
--name=jackspeedregistry 运行的容器名称
--restart=always 自动重启
--privileged=true centos7中的安全模块selinux把权限禁止了,加上这行是给容器增加执
//4.创建一个docker tag 镜像名字:镜像版本 仓库地址/镜像名称:镜像版本
docker tag ubuntu 127.0.0.1:5000/ubuntu:1.1.1
//5.推送到私有仓库 docker push 镜像服务器地址/镜像名称:版本号
docker push 127.0.0.1:5000/ubuntu:1.1.1
//6.查看私有仓库中有哪些镜像
curl 127.0.0.1:5000/v2/_catalog
//7.获取某个镜像的标签列表:
curl -XGET http://192.168.1.8:5000/v2/thomas_mysql/tags/list
//8.拉取私有仓库镜像
docker pull 127.0.0.1:5000/thomas_mysql:bast
//9.创建容器
docker create -it 127.0.0.1:5000/thomas_mysql:bast /bin/bash
docker start 3000dc61be96
概念:
dockerfile 是一个用来构建镜像的文件,
构建镜像的基本步骤
1.编写dockerfile
2.通过dockerfile构建镜像
3.通过镜像产生容器
docker书写规则
1.#表示注释
2.每个指令都是大写字母
3.指令是从上到下的顺序执行
docker执行dockerfile的流程
1.docker从基础镜像运行一个容器
2.执行一条命令并对容器进行修改
3.执行类似docker commit的操作提交一个新的镜像层
4.docker在基于刚提交的下一条指令运行一个 新的容器
5.直到所有指令执行完成
流程介绍
1.建立私有仓库
2.打包我们的项目代码
3.把打包后的代码制作成镜像
4.推送到私有仓库
5.服务器pull 镜像
6.服务器运行镜像
我仓库是在服务器上centos7
拉取镜像:
docker pull docker.io/registry
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry docker.io/registry:latest
场景介绍:
golang 打包好的gin项目 生成了 linux可执行文件。将该文件写入alpine 镜像中
FROM alpine as builder
# 容器环境变量添加
# 设置工作区
WORKDIR /go/web
ADD ./ .
# 开启端口
EXPOSE 3001
# 运行程序
CMD ["./t6"]
Dockerfile文件写完后开始构建镜像:
docker images
由于当前构建的 项目还在我们的本地 所以我们要把项目推送到前面自己建立的私有云仓库上去
1.添加标签
docker tag app ip:5000/app:/latest
docker push ip:5000/app:latest
推送遇到异常情况参考:
http: server gave HTTP response to HTTPS client
linux修改:
vi /etc/docker/daemon.json
写入
{"insecure-registries":["仓库ip:port"]}
systemctl daemon-reload
systemctl restart docker
mac上解决办法
Preferences ->Docker Engine
"insecure-registries":["仓库ip:port"]
在服务器上拉取镜像
docker pull localhost:5000/app:latest
在服务里面运行镜像
docker run -it --restart always -d --name app -p 3001:3001 docker_imge
docker ps
docker logs app -f
祝你成功!