docker
docker

简介

Docker 是一个开源的应用容器引擎,基于 GO语言并遵从 Apache2.0 协议开源。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

  1. DockerClient客户端
  2. Docker Daemon守护进程
  3. Docker Image镜像
  4. DockerContainer容器 

更多的解释可以看这里菜鸟或者百度百科
Docker 官网:https://www.docker.com
Github Docker 源码:https://github.com/docker/docker-ce
Hub Docker 地址:https://hub.docker.com

安装

这里介绍MacOS Docker 安装 为桌面版本:其他安装方式点这里

使用 Homebrew 安装

在终端命令行中输入以下命令: brew cask install docker
安装过程会 询问你的 macOS 登陆密码,你输入即可。
安装成功后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标(docker图标

手动下载安装

如果需要手动下载,请点击以下链接下载 Stable 或 Edge 版本的 Docker for Mac。
由于国外资源下载可能缓慢,可以使用加速器或者科学上网Google获取

如同 macOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将鲸鱼图标拖拽到 Application 文件夹即可。

docker 安装图

从应用中找到 Docker 图标并点击运行。其主页面如下可点击对应按钮快速操作对容器进行管理

也可以点击顶部状态栏小鲸鱼图标会弹出快捷操作菜单

通过终端命令行使用,打开命令行 输入: docker -v显示版本号表示安装成功

lisi@lxmacpro dockerPro % docker -v
Docker version 19.03.8, build afacb8b

使用

第一个示例

我们在命令行中可以直接输入:
docker run -d -p 2000:80 docker/getting-started

lisi@lxmacpro dockerPro % docker run -d -p 2000:80 docker/getting-started
3ff0cdedffe326d456de65d857b116d4ea0edf2729bcb218cdf75ade50c3aca6

在浏览器地址栏中输入 127.0.0.1:2000,看到以下docker快速引导,使用说明网页说明我们第一个容器构建成功,可详细看完指引以便更快的掌握docker操作

doucker向导

常用操作命令

命令选项说明
docker run-d:后台运行并返回容器id
-p:端口映射 宿主机:容器内端口
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
创建新容器,并运行
docker ps-a :显示所有的容器,包括未运行的。
-l :显示最近创建的容器。
展示容器列表
docker inspect 容器/镜像id-s :显示总的文件大小。显示容器 信息
docker rm 容器名-f :通过 SIGKILL 信号强制删除一个运行中的容器。
-l :移除容器间的网络连接,而非容器本身。
-v :删除与容器关联的卷
删除一个或多个容器
docker exe 容器名或者id-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
在运行的容器中执行命令 示例:docker exec -it nginx /bin/sh
docker stop /start/restart 容器名或者id-t:等待多少秒后停止停止/开始/重启运行容器

更多的操作命令

我们可以在终端命令行中输入:
docker –help 查看所支持的命令及用途
docker COMMAND –help 查看具体命令详情信息
例如查看 ps 命令详情

lisi@lxmacpro dockerPro % docker ps –help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, –all Show all containers (default shows just running)
-f, –filter filter Filter output based on conditions provided
–format string Pretty-print containers using a Go template
-n, –last int Show n last created containers (includes all states) (default -1)
-l, –latest Show the latest created container (includes all states)
–no-trunc Don’t truncate output
-q, –quiet Only display numeric IDs
-s, –size Display total file sizes

镜像

容器是基于镜像构建的,当容器运行时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
由于部分资源在国外我们可以使用镜像加速

列出本机所有镜像 :docker images

lisi@lxmacpro dockerPro % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ulnpf 1.9 c75749c5e9bc 11 hours ago 302MB
ulnpf 1.8 5d4764205a31 11 hours ago 302MB
ubuntu latest adafef2e596e 29 hours ago 73.9MB
ubuntu 18.04 d27b9ffc5667 29 hours ago 64.2MB
docker/getting-started latest 73f5385a001d 8 days ago 25.1MB

选项说明
REPOSITORY镜像的仓库
TAG镜像标签
IMAGE ID镜像id
CREATED镜像创建时间
SIZE镜像大小

同一个仓库源可以有多个TAG,用来表示同意仓库源的不同版本,如果我们运行容器时不指定TAG将使用latest最新版本

查找镜像 :docker search redis

lisi@lxmacpro dockerPro % docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 8357 [OK]
bitnami/redis Bitnami Redis Docker Image 151 [OK]
sameersbn/redis 80 [OK]
grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0 68

选项说明
NAME仓库源
DESCRIPTION描述,说明
START喜欢程度,受欢迎,类似于打分,点赞
OFFICIALdocker 官方发布
AUTOMATED自动构建

还可以访问 https://hub.docker.com 网站可视化搜索

拉取新镜像:docker pull 上面搜索出的镜像仓库名

lisi@lxmacpro dockerPro % docker pull redis
Using default tag: latest
latest: Pulling from library/redis
8559a31e96f4: Pull complete
85a6a5c53ff0: Pull complete
b69876b7abed: Pull complete
a72d84b9df6a: Pull complete
5ce7b314b19c: Pull complete
04c4bfb0b023: Pull complete
Digest: sha256:800f2587bf3376cb01e6307afe599ddce9439deafbd4fb8562829da96085c9c5
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

docker images 查看已经成功拉取 redis 镜像

lisi@lxmacpro dockerPro % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ulnpf 1.9 c75749c5e9bc 12 hours ago 302MB
ulnpf 1.8 5d4764205a31 12 hours ago 302MB
ubuntu latest adafef2e596e 29 hours ago 73.9MB
ubuntu 18.04 d27b9ffc5667 29 hours ago 64.2MB
docker/getting-started latest 73f5385a001d 8 days ago 25.1MB
redis latest 235592615444 3 weeks ago 104MB

删除镜像:docker rmi 镜像名称:TAG 删除指定版本

lisi@lxmacpro dockerPro % docker rmi ulnpf:1.8
Untagged: ulnpf:1.8
Deleted: sha256:5d4764205a312cd030efb6560ee44e9532af080e32418a884c882e059ec33cba
Deleted: sha256:03ca0179a4f5ef612db116e6218e055c10d1f87d812014033e37f72bbf97bf03
Deleted: sha256:d2c2171604ae6e058d38a65485a763790080fac07bb1dce421d3a1ecddd09b2f
Deleted: sha256:a35d9300ab14e27369493c462e17eb58eac4445ba39883ae8175ddd85af516e0
Deleted: sha256:445575c328f70d8fcf0e4e4ca3994d2197d20cd4c0acddd72709bec1db2a8373

构建镜像 docker build  点击这里查看
基本语法:docker build -t ulnpf:20 .
-t:创建的镜像名及版本号
. Dockerfile 文件所在目录,.代表默认地址

设置镜像标签 docker tag 镜像id 新标签名

lisi@lxmacpro dockerPro % docker tag c75749c5e9bc bornfree/ulnpf:1.0
lisi@lxmacpro dockerPro % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bornfree/ulnpf 1.0 c75749c5e9bc 12 hours ago 302MB
ulnpf 1.9 c75749c5e9bc 12 hours ago 302MB

可以看到我们本地多出来一个以我们TAG命名的标签镜像

推送本地镜像到远端 docker push [OPTIONS] NAME[:TAG]

lisi@lxmacpro dockerPro % docker push bornfree/ulnpf
The push refers to repository [docker.io/bornfree/ulnpf]
203d283c643c: Pushed
ce2399f2fca3: Pushed
c64011c824ab: Pushed
2e547d3c1ed2: Pushed
26a559441911: Pushed
7c6706a6a5d3: Pushed
ab262ac3066d: Pushed
7cbda6661011: Pushed
544a70a875fc: Mounted from library/ubuntu
cf0f3facc4a3: Mounted from library/ubuntu
132bcd1e0eb5: Mounted from library/ubuntu
d22cfd6a8b16: Mounted from library/ubuntu
1.0: digest: sha256:8e8ce378f1c543edaec8b7b090648b837f9d7e892e47ca2c1356ba8bd674d9a6 size: 2823

推送完成可以在 https://hub.docker.com查看别人使用情况,也可以推到自己搭建的私有仓库供项目取用

最后修改日期:2020-07-08

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。