docker学习记录0

docker(version:2.2.0.5)配置镜像仓库

右上docker小图标 -> preference -> Docker Engine


在 "registry-mirrors":[] 里面写上镜像仓库地址(图中是网易的,也有阿里云的,网搜自行配置)-> apply&restart

docker简介

(正规简介网上有,简单说说个人理解,有误请指正,感谢)
它运行的时候是一个与其他进程隔离的容器,不运行的时候就是一个模板文件,可以发送到别的地方,再运行成为新的容器。把代码打包成一个镜像发送给别人,就可以无视运行代码环境配置不当的尴尬境地。比虚拟机好的地方是,我们有的时候运行程序并不需要一整个操作系统的环境功能,所以我们只用把我们需要的东西打包成镜像,十分轻量。docker 是 k8s 容器的一小部分,go语言编写。

常用基本命令

// 从镜像仓库拉取镜像到本地
docker pull 镜像名称

// 查看镜像列表
docker image ls 显示顶层镜像 -a 显示顶层镜像及中间层镜像
docker image ls 列表中的镜像体积总和并非是所有镜像实际硬盘消耗。由于 Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。由于 Docker 使用 Union FS,相同的层只需要保存一份即可,因此实际镜像硬盘占用空间很可能要比这个列表镜像大小的总和要小的多。 你可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。

docker system df
虚悬镜像(dangling image) 显示虚悬镜像:
docker image ls -f dangling=true
清除虚悬镜像:
docker image prune

// 删除一个镜像
docker rmi 镜像name

// 更新一个镜像
先从镜像运行一个容器,进行修改,之后
docker commit -m="更新描述" -a="镜像作者" 容器ID 要创建的目标镜像名

// 启动容器,以命令行方式进行交互
docker run -it 镜像名称
exit 或者 ctrl+d 退出容器
-d 后台启动,进去后台启动的容器:

  • docker attach 从这个容器退出,会导致容器的停止
  • docker exec 从这个容器退出,不会导致容器的停止

// 查看所有的容器状态(CONTAINER ID ,IMAGE, COMMAND,CREATED,STATUS,PORTS,NAMES)
docker ps -a
// 查看正在运行中的容器
docker ps

// 停止一个容器
docker stop 容器ID (对比kill,stop不会需要花一定时间才能结束,因此stop 完的容器立即查看容器状态有时还是up)

// 启动一个已经停止的容器
docker start 容器ID
docker restart 容器ID

// 删除一个容器
docker rm 容器name

使用docker进行开发部署流程

以打包一个小httpserver程序为例

  1. 新建文件
  • .dockerignore
    里面写上不需要被打包进docker的目录,本例没有

  • dockerfile
    内容如下,含义参见#后

FROM golang:1.14.2 #这个image文件继承自golang:1.14.2这个镜像
COPY . /go #将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/go目录。
WORKDIR /go #指定接下来的工作路径为/go
RUN go build httpserver.go #在/go目录下,运行go build httpserver.go命令,把运行完的所有东西打包进镜像
EXPOSE 8081 #将容器 8081 端口暴露出来, 允许外部连接这个端口

注:没有设置ENV,因为事先去容器里看了一下 GOPATH ,这个设置后续碰到再补,大多数工程貌似都需要,比如设置时间之类

  1. 创建镜像(通过 dockerfile)
    docker image build -t nie-demo:0.0.1 .
  1. 运行容器
    docker container run -p 8081:8081 -it nie-demo:0.0.1
    -p(本机端口:容器开放端口)

  2. 发布 image 文件
    (在登录的状态下才可以操作)
    docker image push [username]/[repository]:[tag]

列出完整镜像摘要
docker image ls --digests

docker文件复制
docker cp 源地址 目标地址 (容器地址为 容器ID:XXX)

参考:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
https://zhuanlan.zhihu.com/p/128472825

你可能感兴趣的:(docker学习记录0)