一起养成写作习惯!这是我参与「掘金日新计划 · 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)命令