常用速查,不太适合新手入门,入门可以看这个
安装
直接通过脚本安装
# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud
或者键入以下命令安装:
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加软件源的 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 向 sources.list 中添加 Docker 软件源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
启动docker
sudo systemctl enable docker
sudo systemctl start docker
# 设置权限
sudo chmod 666 /var/run/docker.sock
镜像
# 拉取镜像
docker pull ubuntu:20.04
# 列出镜像
docker image ls
Dockerfile
Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
启动容器
# -d 守护态运行,让Docker在后台运行而不是直接把执行命令的结果输出在当前宿主机下
docker run -dit ubuntu:20.04
返回CONTAINER ID
,每次只需要键入这个哈希的前几位就行了
查看所有容器
docker container ls
进入容器并且分配伪终端,运行bash
(如果没bash
,可以试试sh
)
docker exec -it <CONTAINER ID> bash
exit
命令退出伪终端,但容器保持运行
删除容器
docker container rm <CONTAINER ID>
清理所有处于终止状态的容器
docker container prune
数据管理
数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UnionFS,可以提供很多有用的特性:
数据卷 可以在容器之间共享和重用
对 数据卷 的修改会立马生效
对 数据卷 的更新,不会影响镜像
数据卷 默认会一直存在,即使容器被删除
创建数据卷
docker volume create my-vol
查看所有数据卷
docker volume ls
挂载到容器
$ docker run -d -P \
--name web \
# -v my-vol:/usr/share/nginx/html \
--mount source=my-vol,target=/usr/share/nginx/html \
nginx:alpine
删除数据卷
docker volume rm my-vol
挂载主机目录
加载主机的/src/webapp
目录到容器的/usr/share/nginx/html
目录
$ docker run -d -P \
--name web \
# -v: 如果本地目录不存在`Docker`会自动为你创建一个文件夹
# -v /src/webapp:/usr/share/nginx/html \
# --mount: 如果本地目录不存在,Docker 会报错
--mount type=bind,source=/src/webapp,target=/usr/share/nginx/html \
nginx:alpine
Docker Compose
安装
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
模板文件
运行
# 启动
docker-compose up
# 启动并转入后台
docker-compose up -t
# 删除容器
docker-compose down
# 进入caddy容器中运行sh(因为没有bash)
docker-compose exec caddy sh
# 查看最近的20条log
docker-compose logs -f --tail 20 <service>
参考
本文采用知识共享署名4.0国际许可协议(CC BY 4.0)进行许可