镜像
只读 :依赖的文件系统、依赖库、环境变量、启动参数等
核心解决的问题:应用分发
应用容器化
应用不再直接与 OS 打交道,而是封装成镜像,再交给容器环境去运行
常用命令 镜像
命令
作用
docker pull
从远端仓库拉取镜像
docker images
列出当前本地已有的镜像
docker rmi
删除不再使用的镜像
容器 1 2 $ docker run -h srv --rm alpine hostname srv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 $ docker run -d nginx:alpine 6376e2649ef2d4a6073b977fcc4408f7a3f21b6f32775b42be85711b989dd6ce $ docker run -d --name redis_srv redis 2a79d491ecb3108b07df7d369dfe8abc6ac314efc2054951ef7b77e0deba0584 $ docker run -it --name ubuntu ubuntu sh # cat /etc/os-releasePRETTY_NAME="Ubuntu 22.04.1 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.1 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy
1 2 3 4 5 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5c90257e989c ubuntu "sh" About a minute ago Up About a minute ubuntu 2a79d491ecb3 redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp redis_srv 6376e2649ef2 nginx:alpine "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp trusting_blackwell
1 2 3 4 5 6 7 8 9 10 11 $ docker exec -it redis_srv sh # cat /etc/os-releasePRETTY_NAME="Debian GNU/Linux 11 (bullseye)" NAME="Debian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
1 2 3 4 5 6 7 8 9 $ docker stop 5c 2a 63 5c 2a 63 $ docker rm 5c 2a 63 5c 2a 63
命令
作用
参数
docker run
从镜像启动容器
-it
:开启一个交互式操作的 Shell
-d
:让容器在后台运行
--name
:为容器起一个名字
--rm
:不保存容器,运行完毕后自动清除
docker ps
列出正在运行的容器
-a
:列出所有容器,包括已经停止的容器
docker exec
在容器内执行另一个程序
docker stop
强制停止容器
docker start
再次启动已经停止的容器
docker rm
彻底删除容器