Docker基础 | 青训营笔记

181 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第4天

Docker理论

Docker官网

Docker Hub官网

Docker安装

ubuntu安装

操作系统要求

  • Ubuntu 18.04

查看版本号

$ cat /proc/version

卸载旧版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

可能会出现锁的情况。然后提示上面的都未安装

使用存储库安装

设置存储库

  1. 更新apt包索引并安装包以允许apt通过HTTPS使用存储库

    $ sudo apt-get update
    $ sudo apt-get install ca-certificates curl gnupg lsb-release
    
  2. 添加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
    
  3. 使用以下命令设置存储库

    $ 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引擎

  1. 更新apt包索引,安装最新版本的Docker Engine、containerd 和 Docker Compose

    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. 两种方法验证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镜像

需要理解原理

本地镜像发布到阿里云

本地镜像发布到私有库

Docker容器数据卷