Docker容器

docker 入门

本文主要是介绍docker 入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前言

实践出真知,话不多说,直接开干!

环境:

centos # 1、vmare自己搭一个 2、阿里云或者腾讯云买一个,新用户很便宜的
docker 
复制代码

docker 安装

# 在线安装
yum install docker
复制代码

Dockerfile

在home/demo目录创建一个Dockerfile

# An example Dockerfile for installing Git on Ubuntu
FROM ubuntu:latest
LABEL maintainer="dia@allingeek.com"
RUN apt-get update && apt-get install -y git
ENTRYPOINT ["git"]
复制代码

构建镜像

命令最后有个. 注意看!!!

# -t 指定镜像名称 
# -f 制定Dockerfile所在的目录
# . 代表指定镜像构建过程中的上下文环境的目录
docker build -t test/myapp -f /home/demo/Dockerfile .
复制代码

查看镜像是否构建成功

docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
test/myapp                               latest              ce7b2e1448f3        39 hours ago        198 MB
复制代码

运行容器

docker run myapp
# 成功输出git命令 就表示ok了
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]
复制代码

docker ps -a 代表曾经来过

docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                      PORTS               NAMES
3c87b12a5334        test/myapp                     "git"                    3 minutes ago       Exited (1) 3 minutes ago                        silly_lichterman
复制代码

恭喜你!完成了第一关的考验!come on!

docker 简介

Docker是一个用于开发、交付和运行应用程序的开放平台。Docker能够将应用程序从基础设施中分离出来,可以快速交付软件。使用Docker就可以像管理应用程序一样管理基础设施。通过利用Docker技术快速交付测试部署代码的优势,可以显著减少编写代码和在生产环境中运行代码之间的时间

镜像(images)与容器(container)

镜像就像一个安装包 容器就是安装好之后的软件,你可以启动、停止、删除它

容器与虚拟机

容器在宿主机上运行,并与其他容器共享主机的内核。本质上是一个运行的进程,不占用比任何其他可执行文件更多的内存,这使得它是轻量级的。

相对的,虚拟机(VM)运行一个完整的操作系统,通过管理程序虚拟访问主机资源。通常,虚拟机会产生比应用程序所消耗的更多的开销。

容器启动流程

Docker Engine

Docker Engine是一个客户端-服务器应用程序,具有以下主要组件:

1.一个长期运行的后台服务,称为守护进程(dockerd命令)。

2.一个REST API,应用程序与守护进程对话并指示它做什么的接口。

3.一个命令行工具(CLI,docker命令)。

Docker Registries

docker registry是存储镜像的仓库。Docker Hub是任何人都可以使用的公共镜像仓库,默认情况下docker会从Docker Hub里面去查找镜像。同时用户可以自定义私有的仓库。 当使用docker pull或者docker run命令的时候,会从配置好的镜像仓库去拉取指定镜像。docker push命令则会将镜像推送到配置的仓库。

Docker 使用

镜像操作

# 镜像搜索 不实用,没法获取镜像tag。推荐直接去Docker Hub上查找
docker search

# 拉取镜像 docker pull centos
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

# 镜像列表
docker images

# 删除镜像 docker rmi hello-world
docker rmi

# 设置新的版本号 docker tag hello-world:latest hello-world:1.0.0
docker tag 

# 导出镜像 
docker save
-- docker save命令只能打包镜像,没有压缩
-- 可以使用gzip -c压缩(会延长加载时间)# docker save hello-world:latest | gzip -c > hello_v3.tar.gz
-- save时最好指定版本/tag

# 导入镜像 docker image load -i hello_v3.tar.gz
docker load -i

# 推送镜像 docker push host:port/hello-world:1.0.0
docker push 
-- push可以将本机镜像推送到特定镜像仓库
-- 比如公共Docker Hub(需要docker login)或者私有仓库(Docker Registry,指定host和port)

# 清除所有tag为 <none> 的镜像
docker rmi $(docker images | grep "<none>"  | awk -F' ' '{print $3}')
或者
docker images|grep "<none>" | awk '{print $3 }'| xargs docker rmi --force

# 删除未使用镜像
docker image prune

复制代码

容器操作

# 查看镜像列表
docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos                         latest              831691599b88        5 weeks ago         215 MB

# 运行容器
docker run docker.io/centos
或者 docker run 831691599b88

# 查看正在运行的容器
docker ps 

# 停止容器
docker stop 

# 重启容器
docker restart

# 查看容器日志
docker logs

# 查看容器详细信息
docker inspect

# 移除容器,如果正在运行,先暂停容器
docker rm 

# 移除所有不在运行的容器
docker container prune

# 停止所有容器
docker ps -aq | xargs docker stop

# 移除所有容器
docker ps -aq | xargs docker rm

# 移除所有已退出容器
docker ps -a | grep "Exited" | awk '{print $1 }'| xargs docker rm

# 备份容器到镜像,生成一个容器的快照
docker commit -p 831691599b88 container-backup

复制代码

参考

https://poleljy.gitee.io/iCoding/

https://docs.docker.com/engine/reference/run/

本文使用 mdnice 排版

这篇关于docker 入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!