docker基础学习

147 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

docker、镜像、容器的简要关系

docker 是操作镜像和容器的一个工具; 镜像 是一个文件系统,镜像可以用来创建、传输、拷贝等,镜像本身是静态的,必须通过实例化来创建和运行容器; 容器 是运行镜像的一个环境,是一个进程,同一个镜像可以实例化并运行多个容器。

一、查看docker

查看docker版本信息

$ docker version

查看docker状态

$ sudo docker info

二、docker镜像

查看本地docker镜像列表

$ sudo docker images docker images ls

$ sudo docker images
REPOSITORY   TAG              IMAGE ID       CREATED       SIZE
kmre2        v2.0-220121.10   e7401f6cf406   8 weeks ago   1.55GB

搜索docker远程仓库上的镜像列表

$ docker search [镜像名称]

$ sudo docker search ubuntu
NAME(名称)                   DESCRIPTION(基本功能描述)                  STARS(下载次数)  OFFICIAL(官方)   AUTOMATED(自动运行)
ubuntu                      Ubuntu is a Debian-based Linux operati…   13901          [OK]       
...省略输出... 

更多docker命令

查看 docker --help 命令

获取/下载docker远程仓库上的镜像

语法:docker pull [镜像名称]

如我们可以从远程仓库下载mysql镜像来直接进行数据库的管理

$ sudo docker pull mysql
$ sudo docker images   #可以发现,本地镜像增加了mysql
REPOSITORY   TAG              IMAGE ID       CREATED        SIZE
mysql        latest           562c9bc24a08   3 days ago     521MB
kmre2        v2.0-220121.10   e7401f6cf406   2 months ago   1.55GB

查看镜像的详细信息

sudo docker image inspect 容器名:TAG 或者 sudo docker image inspect 容器ID

$ sudo docker image inspect kmre2:v2.0-220121.10 
$ sudo docker image inspect e7401f6cf406 

导出镜像

当我们经过使用和操作使得某个镜像变得稳定时,可以将镜像导出,方便今后再次导入和处理,也避免了重复操作。

$ sudo docker save mysql >  mysql_latest.tar.gz

删除镜像

$ sudo docker rmi mysql
$ sudo docker images
REPOSITORY   TAG              IMAGE ID       CREATED        SIZE
kmre2        v2.0-220121.10   e7401f6cf406   2 months ago   1.55GB

导入本地镜像

$ sudo docker image load -i mysql_latest.tar.gz 

更多镜像管理命令

查看 docker image --help 命令

三、docker容器

创建并启动(运行)容器

$ sudo docker run [选项] 镜像名

选项含义
-i以交互模式运行容器,通常与 -t 同时使用;
-t分配一个伪输入终端,通常与 -i 同时使用;
-d后台运行容器,并返回容器ID;
-p定端口映射,格式为:主机(宿主)端口:容器端口;
-P随机端口映射,容器内部端口随机映射到主机的端口;
--name="XXX"为容器指定一个名称;
$ sudo docker run -it mysql bash
root@f551663fe0f8:/# exit       
exit
  • 每执行一次docker run命令都将创建和启动(运行)一个新的容器,并具有不同的容器ID和容器名。
  • 在当前终端执行run创建一个容器后,执行exit命令会退出并关闭(停止运行,而不是删除)容器,而在其他终端进入容器后执行exit命令只会退出而不关闭容器。
  • 当执行docker run命令后容器无法正常运行时,一般可以考虑是没有启用交互模式造成的。
  • docker run命令比较重要,但要想掌握,需要吸收更多知识才行。

查看系统中的容器列表

$ sudo docker ps [选项] -a 选项,可以列出所有容器 -l 选项,可以列出最后一次运行的容器

$ sudo docker ps -a 
CONTAINER ID   IMAGE                  COMMAND        CREATED      STATUS       PORTS     NAMES
74c766c91227   kmre2:v2.0-220121.10   "/init.kmre"   9 days ago   Up 5 hours             kmre-1000-hollowman

开启(运行)一个关闭(停止运行)的容器

$ sudo docker start 容器ID  

关闭(停止运行)容器

$ sudo docker stop 容器ID  

进入(登录)一个已经运行的容器

$ sudo docker exec -it 容器ID bash 

删除容器

$ sudo docker rm 容器ID

默认只能删除关闭(停止运行)的容器,如要强制删除需用-f选项 批量删除多个已经关闭的容器可用sudo docker rm $(sudo docker ps -a)命令