这是我参与「第四届青训营 」笔记创作活动的第4天
Docker理论
Docker安装
操作系统要求
- Ubuntu 18.04
查看版本号
$ cat /proc/version
卸载旧版本
$ sudo apt-get remove docker docker-engine docker.io containerd runc
可能会出现锁的情况。然后提示上面的都未安装
使用存储库安装
设置存储库
-
更新apt包索引并安装包以允许apt通过HTTPS使用存储库
$ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg lsb-release -
添加Docker的官方GPG密钥
$ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg -
使用以下命令设置存储库
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装Docker引擎
-
更新apt包索引,安装最新版本的Docker Engine、containerd 和 Docker Compose
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -
两种方法验证Docker引擎是否正确安装
$ sudo docker run hello-world$ docker version
配置阿里云镜像
登录阿里云 —— 点击控制台 —— 选择容器镜像服务 —— 选择镜像工具/镜像加速器 —— 获取地址
https://*.mirror.aliyuncs.com
$ mkdir -p /etc/docker
$ vim /etc/docker/daemon.json
# 阿里云
{
"registry-mirrors" : ["https://*.mirror.aliyuncs.com"]
}
重启服务器
$ systemctl daemon-reload
$ systemctl restart docker
docker取消sudo
$ sudo gpasswd jmh docker
$ sudo chmod a+rw /var/run/docker.sock
Docker常用命令
帮助启动类命令
# 启动docker
systemctl start docker
# 停止docker
systemctl stop docker
# 查看docker状态
systemctl status docker
# 重启docker
systemctl restart docker
# 开机启动
systemctl enable docker
# 查看
docker info
docker --help
docker cp --help
镜像命令
列出本地主机上的镜像
docker images
# --all
docker images -a
# 只显示镜像ID
docker images -q
搜索镜像
docker search flink
# 只列出几个
docker search --limit 5 flink
下载镜像
docker pull flink[:TAG]
# 没有就是默认latest
查看镜像/容器/数据卷所占的空间
docker system df
删除镜像
docker rmi -f 镜像ID
## 删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG
## 删除全部
docker rmi -f $(docker images -qa)
虚悬镜像是什么? 仓库名、标签都是的镜像
容器命令
有镜像才能创建容器。
新建并启动容器
docker run [Options] Iamge [Command] [ARG...]
| --names="new name" | 容器新名字 |
|---|---|
| -d | 后台运行容器并返回容器ID |
| -i | 以交互模式运行容器 |
| -t | 为容器重新分配一个伪输入终端 |
| -P | 随机端口映射 |
| -p | 指定端口映射 |
列出当前所有正在运行的容器
docker ps [Options]
-a -l -n -q
退出容器
第一种退出方式
run进去容器,exit退出,容器停止
第二种退出方式
ctrl + p + q
run进去容器,ctrl + p + q退出,容器不停止
启动已停止运行的容器
docker start 容器ID 或 容器名
重启容器
docker restart 容器ID 或 容器名
停止容器
docker stop 容器ID 或 容器名
强制停止容器
docker kill 容器ID 或 容器名
删除已停止的容器
docker rm 容器ID 或 容器名
# 一次性删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q |xargs docker rm
查看容器日志
docker logs 容器ID
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell
exec是在容器中打开新的终端,并且可以启动新的进程。用exit退出,不会导致容器的终止
重新进入容器
docker attach 容器ID
attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器的停止。
从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
导入和导出容器
docker export 容器ID -> 文件名.tar
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
Docker镜像
需要理解原理