前文已经介绍了Docker容器化历史以及架构,本文就开始着手安装Docker以及使用指令做常见操作,非常简单和快捷
文章目录
Docker安装
ubuntu安装方式
docker官方安装Docker指南介绍了除了支持windows和mac系统,还支持的系统信息。
所以安装Docker时先了解自己的系统,不同的系统有不同的安装方式,由于我使用的是ubuntu系统,所以我参考的ubuntu的安装文档
1.查看系统是否满足要求
要安装 Docker 引擎,咱们系统需要满足以下 Ubuntu 版本之一的 64 位版本:
Ubuntu Noble 24.04 (LTS)
Ubuntu Mantic 23.10 (EOL: July 12, 2024)
Ubuntu Jammy 22.04 (LTS)
Ubuntu Focal 20.04 (LTS)
登录ubuntu系统,查看ubuntu的版本号和内核版本号:
-- ubuntu的版本号
ubuntu@ip-172-31-18-208:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
-- 内核版本号
ubuntu@ip-172-31-18-208:~$ uname -a
SMP Fri Nov 17 21:07:13 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
2.卸载旧版本
在安装 Docker Engine 之前,需要卸载所有冲突的软件包。apt 中也许存在 了Docker 软件包的非官方发行版。必须先卸载这些软件包,然后才能安装正式版的 Docker Engine
一共7个:docker.io,docker-doc,docker-compose,docker-compose-v2,podman-docker,containerd,runc
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
3.apt 存储库设置Docker引擎
-- 添加Docker官方GPG密钥:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
--将存储库添加到 Apt 源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
4.安装 Docker 软件包最新版
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5.验证 Docker 引擎安装是否成功
通过运行hello-world 映像来验证 Docker 引擎安装是否成功
sudo docker run hello-world
其它常见系统安装方式
Docker常用指令
镜像命令
docker images-查看镜像
作用:查看本地所有镜像
使用:sudo docker images
repository:表示镜像的厂库源
tag:镜像版本号
image id:镜像ID
created:镜像创建时间
size:镜像大小
同一个仓库源可以有多个tag版本(如mysql 有5.7;8.0版本)。一般我们使用repository:tag 来定义不同镜像,如果不指定tag版本,默认最新版本。(例如使用ubuntu,docker默认使用ubuntu:latest镜像)
docker search -搜索镜像
作用:查看远程仓库镜像
使用:sudo docker search [镜像名称]
--limit [数量]:列出前几个
sudo docker search hello-word --limit 1
name:镜像名称
description:镜像说明
stars:点赞数
official:是否官方发布的
automated:是否自动构建
docker pull-拉取镜像
作用:从远程仓库下载镜像到本地
使用:docker pull [镜像名称]:[tag版本号]
没有tag默认拉取最新的
sudo docker pull mysql
docker system df-查看镜像、容器占用空间
作用:查看镜像/容器/数据卷所占用空间
使用:docker system df
sudo docker system df
docker rmi -删除镜像
作用:删除镜像
使用:
删除单个:docker rmi -f [镜像ID]
删除多个:docker rmi -f [镜像ID1] [镜像ID2]
删除全部:docker rmi -f $(docker images -qa)
慎用
sudo docker rmi -f d2c94e258dcb
容器命令
docker run-启动容器
作用:新建、启动容器
语法:docker run [options] image [command][arg...]
options 常用说明:
--name=
:给容器指定一个名称,不使用则会随机分配一个名称
-d
:后台运行容器并返回一个容器ID (后台守护式容器,部分容器会在启动后自杀,也就是启动未成功,如:ubuntu)
-i
:以交互模式运行容器,通常和-t同时使用(前台交互式容器)
-t
:为容器重新分配一伪输入终端,通常和-i同时使用(前台交互式容器)
-P
:随机端口映射,大写P
-p
:指定端口映射,小写p
-v
:指定容器卷
启动交互式容器:
这里举例用mysql镜像,在它的官方文档中也说明如何启动
sudo docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql
docker ps -查看正在运行的容器
作用:列出当前所有正在运行的容器
语法:docker ps [options]
options常用说明:
-a
:列出当前所有正在运行的容器 + 历史上运行过得容器
-l
:显示最近创建的容器
-n
:显示最近n个创建的容器
-q
:静默模式,只显示容器编号
sudo docker ps -n 2
sudo docker ps -l
sudo docker ps -lq
sudo docker ps -a
exit -退出容器
两种方式:
exit
:run进去容器,exit退出,容器停止
ctrl+p+q
:run进去容器,ctrl+p+q退出,容器不停止
dockr exec 进入容器
进入正在运行的容器并以命令行进行交互:
命令1:docker exec -it [容器ID] bash
命令2:docker attach [容器ID]
(推荐使用docker exec命令,因为docker attach命令使用exit退出,会导致容器停止,而docker exec命令不会)
sudo docker exec -it 577d57ee7276 bash
docker stop -停止正在运行的容器
docker stop [容器ID]
:停止正在运行的容器
sudo docker stop 577d57ee7276
docker start/restart -启动容器
docker start [容器ID]
:启动已经停止运行的容器
sudo docker start 577d57ee7276
docker restart [容器ID]
:重启容器
sudo docker restart 577d57ee7276
docker kill -强制停止正在运行容器
docker kill [容器ID]
:强制停止正在运行的容器
sudo docker kill 577d57ee7276
docker rm -删除容器
docker rm [容器ID]
:删除已经停止的容器
docker rm -f [容器ID]
:强制删除容器[不区分是否停止]
docker rm -f $(docker ps -aq)
:一次性删除多个容器(谨慎使用)
sudo docker rm 577d57ee7276
sudo docker rm -f 577d57ee7276
### docker cp -文件拷贝
文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝文件或目录 容器名称:容器目录
sudo docker cp test.txt mysql-01:test
文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
sudo docker cp mysql-01:test test-01.txt