Docker 基础

镜像概念

解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

在这里插入图片描述

Docker 本身就是一个容器运载体,我们把应用程序和配置依赖打包形成一个可交付的运行环境,这个打包好的运行环境就是 image 镜像文件,只有通过这个文件才能形成 docker 容器, image 文件可以看成容器的模板、

镜像就是类,容器就是实例。

在这里插入图片描述

docker牛逼就是因为把 Hypervisor给干掉了。

docker常用命令

docker版本信息查看

 `docker --help` 查看 docker 的常用命令
 `docker version` 查看 docker 版本
 `docker info` 比docker version功能更全

docker对镜像的操作

 `docker images` 列出所有的 镜像
 `docker images -q` 列出所有镜像的 id
 `docker images --digests` 显示详细信息
 `docker search mysql` 在 dockerhub 上查找
 `docker pull ubuntu:18.04` 拉取某个特定的镜像
 `docker rmi ***` 删除某个镜像
 `docker rm ***` 删除某个容器

docker 对容器的操作

 `docker ps`  容器内的进程
 `docker ps -a` 正在运行的和历史上运行的
 `exit` 容器停止退出
 `ctrl + P + Q` 容器不停止退出
 ` docker rm -f $(docker ps -a -q)` 按照筛选条件删除
 `docker stop **` 停掉容器
 `docker kill **` 杀死容器
`docker inspect be`  查看容器内部的信息
`docker attach **` 重新进入刚刚使用 ctrl + P + Q 关掉的容器
`docker exec -t ID ls` 相当于在宿主机上运行的程序
`docker cp be10a66b9f6a:/bin  /tmp`  把docker里的东西,持久化到主机里
`docker run -it -p 5000:8080 tomcat` 做端口映射
`docker run -itd -p 6388:6379 redis` 将容器内部的 6379 映射成 6388

docker commit

提交容器副本,使之成为一个新的镜像

一般运行后的镜像改名,就是自己的文件名/镜像名

docker commit -a="zhaodepeng" -m="add mytest01.txt" 3c pengzhao/centos1.0

起个别名,再运行一下,这个就能运行了,而且是你更改后的结果

docker run -itd --name mycentos  129 

数据卷

相当于是镜像和宿主机之间的主从复制

下面这句话的意思,就是把主机里的 /tmp/zhaodocker里的 /tmp/peng 文件建立映射关系。使用:ro 命令,表示容器内只读。

docker run -it -v /tmp/zhao:/tmp/peng:ro d644

使用 inspect 命令查一下

docker inspect cf

在这里插入图片描述
从上边信息可以看到,已经挂载成功;

dockerFile

用来构建镜像的文本文件。文本内容包含一条条的构建镜像所需要的指令和说明。

  1. tpt 目录下建立一个文件夹,内容如下:
# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,----------success1"
CMD /bin/bash
  1. 执行 build 命令,将某个文件,命名为 zzzyyy/cnetos
docker build -f /tmp/mydocker/dockerfile  -t zzyy/cnetos

直接指定当前文件夹下的 dockerfile 文件,不要忘记后面的点

docker build -t runoob/ubuntu:v1 . 
  1. 运行这个镜像,里面有两个数据卷。

数据卷容器

容器之间配置信息的传递,数据卷的声明周期会一直持续到没有容器使用它为止。

docker run -it --name dc01 zzyy/cnetos
docker run -it --name dc02 --volumes-from dc01 zzyy/cnetos

DockerFile 体系结构(保留字指令)

在这里插入图片描述

将go程序托管到docker里

在window下开发托管到docker中

  1. 先再window 下执行打包命令,没有问题后再切换到linux中
go build    //打包命令
  1. 在 main.go所在的目录,执行如下命令,注意:必须使用cmd
set GOARCH=amd64   //设置目标可执行程序操作系统构架,包括 386,amd64,arm
set GOOS=linux     //设置可执行程序运行操作系统,支持 darwin,freebsd,linux,windows
go build           //打包
  1. 把生成的文件放到虚拟机 tmp 文件夹下,赋予可执行权限
chmod 777 main
  1. 运行改文件即可
./main

在linux下开发,托管到docker 中

目录结构

image

main.go 内的内容

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "成功登录了",
		})
	})
	r.Run(":5001") // listen and serve on 0.0.0.0:8080
}

Dokkerfile 内的内容

## 引入最新的golan ,不设置版本即为最新版本

FROM golang

## 在docker的根目录下创建相应的使用目录

RUN mkdir -p /www/webapp

## 设置工作目录

WORKDIR /www/webapp

## 把当前(宿主机上)目录下的文件都复制到docker上刚创建的目录下

COPY . /www/webapp

## 编译

RUN go build .

## 设置docker要开发的哪个端口

EXPOSE 8080

## 启动docker需要执行的文件

CMD go run main.go
posted @ 2021-07-04 21:24  沧海一声笑rush  阅读(71)  评论(0编辑  收藏  举报