Docker常见用法

1. 简介

作者工作时,在Windows系统下开发运行于Linux系统的程序。在Windows系统上安装Docker Desktop软件,使用基于Ubuntu系统的镜像来进行代码编译。本文所述均基于此前提。

本文只对作者工作中常用功能进行了描述,并未对Docker用法进行详述,仅供个人参考。

在Windows系统上使用Docker前请自行安装Docker Desktop软件。

软件安装成功之后,可通过命令行(docker --help或docker COMMAND --help)自行学习Docker用法:

> docker --help
> docker build --help

2. 基础知识

2.1. 镜像

Docker镜像(image)是一个只读的模板,通常基于Ubuntu等系统的基础镜像制作而成。

镜像可以用来创建Docker容器,一个镜像可以创建多个Docker容器。

2.2. 镜像仓库

用于存储Docker镜像,并提供下载和管理等功能。

仓库中镜像有多个版本,通过标签和摘要来区分。
比如ubuntu系统基础镜像有ubuntu:20.04和ubuntu:16.04等多个版本(其中20.04、16.04为标签名称)。
ubuntu:16.04版本又包含了多个用于不同架构(linux/386、linux/amd64等)的版本,相同标签下的版本可以通过版本的摘要信息来区分。

可在 Docker Hub 上查找常用的基础镜像。

2.3. 容器

使用镜像创建的运行实体,容器之间相互隔离,一个镜像可以创建多个容器。

3. 常见用法

3.1. 下载镜像

作者初入公司,第一件事儿就是搭建开发环境。编译环境已由前辈们制作成了docker镜像,无需从头搭建,不得不说确实很方便。安装好Docker Desktop后就可以下载镜像了。

【例1】下载默认版本镜像:

> docker pull ubuntu

【例2】下载指定标签版本镜像:

> docker pull ubuntu:14.04

【例3】下载指定标签指定摘要镜像:

> docker pull ubuntu:14.04@sha256:c97d63976268e6c2f3764be91e59f82009b2883d22c3dc6ff1f63e3ad6abdb05

【例4】下载指定用户名下的镜像(用户名/镜像名):

> docker pull maikebing/docker_minigui

3.2. 查看镜像列表

可通过images命令查看镜像列表:

> docker images -a

3.3. 使用Dockerfile制作镜像

除了手动基于基础镜像制作自己的镜像,还可以通过编写Dockerfile的方式来自动制作镜像。
新建一个文件夹,在文件夹下新建一个Dockerfile文件并完成编辑(Dockerfile编写方法不在此赘述),在该文件夹下执行build命令即可制作镜像,例:

> docker build -t test:1.0.0 .

其中test为镜像名,1.0.0为标签名。

3.4. 推送镜像到镜像仓库

为了让其他人能够使用你制作的镜像或者为自己的镜像做一个备份,需要将镜像推送到镜像仓库。

此处以推送到Docker Hub为例。

推送镜像之前需要登录Docker Desktop,镜像只能推送到自己有权限的仓库中,默认只对自己的仓库有推送权限。

因此需要将镜像仓库名修改为自己名下的仓库,可使用tag命令,例:

> docker tag test:1.0.0 dockerhub_account/test:1.0.0

其中dockerhub_account需要替换为Docker Hub账户,test:1.0.0需要替换为对应的镜像名和标签名。

注意:普通用户可以推送镜像到Docker Hub,不过却没有删除镜像的权限,因此如果镜像中含有敏感信息(代码或者账号密码等)推送前请先清空!!!

然后就可以使用push命令将指定镜像推送到Docker Hub:

> docker push dockerhub_account/test:1.0.0

或者将镜像所有标签版本一起推送:

> docker push -a dockerhub_account/test

3.5. 保存和加载镜像文件

从镜像仓库下载镜像速度较慢,那下载完成之后能通过内网或者U盘分享给其他人吗?

可使用save命令保存镜像到本地文件中:

> docker save -o test.tar dockerhub_account/test:1.0.0

将镜像文件分享给其他人后,可通过load命令加载镜像文件:

> docker load -i test.tar

3.6. 使用镜像运行容器

当镜像下载或者制作完成之后,就可以使用镜像来运行容器了。

可以通过Docker Desktop软件界面来运行容器(可能由于软件版本原因导致运行失败),也可以使用run命令来启动:

> docker run -p 50022:22 -itd --name=test dockerhub_account/test:1.0.0

通过-p参数映射容器端口,通过–name参数指定容器名称。

3.7. 容器管理

3.7.1. 查看容器列表

可通过container ls命令查看正在运行的容器:

> docker container ls

或者查看所有容器:

> docker container ls -a

3.7.2. 启动容器

容器停止运行之后,其中的数据会自动保存在容器中,如果需要重新启动容器,不应该从镜像运行容器,而应该在Docker Desktop软件界面启动容器,或者使用start命令:

> docker container ls -a
> docker start test

3.7.3. 打开容器终端

需要通过终端操作容器时,可在Docker Desktop软件界面打开与容器交互的终端,也可以通过attach命令打开容器终端:

> docker attach test

3.7.4. 停止容器

当使用完容器之后,需要停止容器,可在Docker Desktop软件界面操作,也可以通过stop命令:

> docker stop test

3.8. 将容器打包成镜像

为了让他人可以使用我们的容器,我们需要将容器打包成镜像,通过保存为镜像文件或者推送到镜像仓库的方式分享给他人。

通过commit命令将容器打包成镜像:

> docker commit -m 'Build compile environment.' test dockerhub_account/test:2.0.0

3.9. 文件拷贝

经常需要在容器和本地计算机之间拷贝文件,可通过cp命令来进行。

【例1】将本地计算机中的 D:\test.txt 文件拷贝到名为 test 的容器中的 /home/ 目录下:

> docker cp D:\test.txt test:/home/

【例2】将名为 test 的容器中的 /home/test.txt 文件拷贝到本地计算机中的 D:\ 目录下:

> docker cp test:/home/test.txt D:\
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值