首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Docker系列】镜像and容器基本操作

【Docker系列】镜像and容器基本操作

作者头像
用户9913368
发布2022-08-13 15:28:24
发布2022-08-13 15:28:24
7190
举报
文章被收录于专栏:嘎嘎软件测试嘎嘎软件测试

1 前言

上篇讲了我入门Docker的一个经历,以及Docker是什么和如何搭建Docker,那么这篇来讲讲Docker的镜像和容器一些基本操作。

带着“容器与镜像的关系类似于面向对象编程中的对象与类”去理解,相信对于初学者而言是非常好理解的。

2 镜像

1、镜像的基本操作

安装好Docker和Harbor之后,我们来练习一下登录Harbor,并且拉取镜像,和把本地镜像提交上去,这就和从github上面pull和push代码一个道理。

代码语言:javascript
复制
#1、docker login:登陆到Docker Hub
docker login -u 用户名 -p 密码

#docker logout:登出Docker Hub
docker logout

#2、docker pull:从Docker Hub下载java最新版镜像
docker pull java

#从Docker Hub下载REPOSITORY为java的所有镜像
docker pull -a java

#3、docker push:将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker push myapache:v1

#4、docker search:从Docker Hub查找镜像
#从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像
docker search -f stars=10 java

#5、docker images:列出本地镜像
#列出本地镜像中REPOSITORY为ubuntu的镜像列表
docker images ubuntu

#6、docker rmi:删除本地一个或多少镜像
docker rmi -f nginx:latest

#7、docker tag:标记本地镜像,将其归入某一仓库
docker tag redis:alpine redis:v1

#8、docker history:查看指定镜像的创建历史
docker history redis:alpine

#9、docker save:将指定镜像保存成tar归档文件。
docker save -o redis_latest.tar redis:alpine

#10、docker load:导入使用 docker save 命令导出的镜像。
docker load < redis_latest.tar

2、如何制作镜像

前面说到拉镜像,那么镜像又是如何制作的呢?以下有两种实现方式。

方式一:基于已有镜像创建

将已有镜像run一个实例,在这个实例修改内容后,commit为一个新镜像。

代码语言:javascript
复制
-a, --author="": 作者信息;
-c, --change=[]: 可以在提交的时候执行 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORIR 等;
-m, --message="": 提交信息;
-p, --pause=true: 提交时,暂停容器运行。

docker run -it registry.cn-qingdao.aliyuncs.com/metersphere/kafka:2 /bin/bash

docker container commit -m "new a image" -a "wmh" <容器Id> new_kafka:0.1

方式二:基于 Dockerfile 来创建镜像

Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成映像。

Dockerfile的基础结构包括:#开头的表示注释行,说明dockerfile中的指令、维护者的信息、镜像操作指令、容器操作指令、基础镜像信息。

以下是一个简单Dockfile例子。

代码语言:javascript
复制
touch Dockerfile
vim Dockerfile,添加如下信息:

FROM centos:latest
LABEL version="1.0" maintainer="wmh"
RUN yum update && yum install -y python3

注意:命令的最后有个点,如果不加的话,会构建不成功 !
docker image build -t python:3 .    其中.表示在当前目录下搜索Dockerfile文件

3 容器

把镜像拉下来之后,运行起来的实例就叫容器,也可以理解为把一个项目跑起来,对这个实例我们可以重启、停止、删除等操作。

代码语言:javascript
复制
#1、docker run:启动容器
docker run -d \
--name mysql \
-p 3306:3306 \
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /usr/local/docker/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

#2、docker start <容器名称>:启动容器
docker start mysql

#3、docker stop <容器名称>:停止容器
docker stop mysql

#4、docker restart <容器名称>:重启容器
docker restart mysql

#5、docker kill <容器名称>:杀掉运行中的容器
docker kill -s KILL mysql

#6、docker rm :删除一个或多个容器rm -f <容器名称>
#强制删除容器 db01、db02:
docker rm -f db01 db02

#移除容器nginx01对容器db01的连接,连接名db:
docker rm -l db

#删除容器nginx01,并删除容器挂载的数据卷:
docker rm -v nginx01

#删除所有已经停止的容器(-q:只展示容器ID):
docker rm $(docker ps -a -q)

#7、docker pause/unpause:暂停/恢复容器
#暂停数据库容器db01提供服务:
docker pause db01

#恢复数据库容器db01提供服务:
docker unpause db01

#8、docker create:创建容器但是不启动
docker create --name demo01 nginx:latest 

#9、docker exec:在运行的容器中执行命令 (查看容器ID:docker ps -a)
docker exec -it <容器ID> /bin/bash

4 总结

以上就是Docker的镜像和容器基本操作的总结啦,带着类比的思维去学习一门新技术,你就会发现万物相通,上手多操作几遍,就能实现入门了。

当然要实现熟练掌握,得在项目中实战才行,在项目来临之前 ,夯实基础才是硬道理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嘎嘎软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 前言
  • 2 镜像
  • 3 容器
  • 4 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档