有了容器引擎的存在:
而Docker只是容器引擎的一种实现,除了Docker之外,容器引擎还有很多,比如podman(开源),pouch(阿里)
想要启动一个容器,首先需要找到它的镜像的。镜像相关的命令如下:
列出本机的所有镜像:
docker images
这个命令会展示镜像的信息:包括镜像的仓库源(REPOSITORY)、标签(TAG)、镜像ID(IMAGE ID)、 创建时间和大小。
从仓库当中拉取镜像到本地:
docker pull nginx:1.21.6
拉取镜像的来源地是仓库——一般使用的是公共仓库,比如默认的hub.docker.com,团队自己也可以建立私有仓库。
删除本地镜像:
docker rmi nginx:1.21.6
通过docker run命令可以从镜像当中启动容器。
docker run nginx
ctrl+c
从容器当中退出,但是同时也会停止容器。如果给容器指定附加指令,对于nginx容器而言,会直接执行该指令,随后容器就停止了。
docker run nginx echo hello
hello
使用--help
选项可以获取命令的简明帮助:
docker run --help
# -i, 以交互模式运行容器,通常与 -t 同时使用
# -t, 为容器重新分配一个伪输入终端,通常与 -i 同时使用
# -d, 后台运行容器,并返回容器ID
# --name="nginx-coo1heisenberg": 为容器指定一个名称
# -e username="coo1heisenberg": 设置环境变量参数
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
# -v: 文件挂载,映射文件
docker run -it nginx /bin/bash
上述命令执行之后,用户就可以进入容器内部,像使用一个普通的shell操作容器内部文件系统。使用ctrl+d
可以退出容器并停止容器。
-d
选项可以以守护进程的形式运行容器:docker run -d nginx
我们还可以查看容器
docker ps # 列出运行当中的容器
docker ps -a # 列出所有的容器
docker rm 容器名|ID # 删除停止状态的容器
假若一个容器已经存在并且正在运行,使用docker exec
进入容器
docker exec -it 容器名 /bin/bash
# 容器日志查看
docker logs [-f] 容器ID|容器名
当然也可以停止、启动、重启或者是删除容器
# 停止容器
docker stop 容器ID|容器名
# 启动容器
docker start 容器ID|容器名
# 重启容器
docker restart 容器ID|容器名
# 删除容器
docker rm 容器ID|容器名
使用docker run的-p
选项可以实现端口映射:
# 将宿主机的8080端口映射到容器的80
# -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
docker run -d -p 8080:80 nginx
使用docker run 的-v
可以实现数据持久化:
docker run -d -p 0.0.0.0:8081:80 -v /tmp/test:/usr/share/nginx/html nginx
/usr/share/nginx/html
和宿主系统的/tmp/test
的内容是一致,并且任何形式的修改都会在宿主系统和容器当中共享。