一.环境准备

1.utuntu操作系统已安装,x86架构,版本24.04 LTS

#查看系统信息
uname -a
#查看系统版本
cat /etc/os-release

2.安装相关命令

#apt与apt-get的区别,apt命令输出简洁,apt-get命令输出详细
sudo apt install docker.ce
#deb软件包安装命令
sudo dpkg -i dockce-ce.deb

二.安装

0.已安装旧版卸载

#若已安装docker,移除旧版本docker,docker.io企业版  docker.ce社区版本
sudo apt-get remove docker docker.ce docker.io docker-engine runc containerd

1.通过utuntu软件仓库apt安装

#更新apt软件包索引
sudo apt-get update
#安装docker
sudo install docker.ce
#版本查看
docker version
#服务启停
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
#安装docker-compose
sudo apt-get install docker-compose

2.通过docker软件仓库安装

#更新软件包索引
sudo apt-get update
#允许APT使用HTTPS
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
#或添加docker官方GPG秘钥,国内阿里源,可以访问
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#添加Docker的稳定版本仓库,国内阿里源,可以访问
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#更新软件包索引
sudo apt-get update
#安装docker及相关组件
sudo apt-get install docker-ce  docker-ce-cli  containerd.io docker-buildx-plugin docker-compose-plugin
#版本查看
docker version
docker-compose version
#服务启停
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
#配置阿里云docker镜像加速
sudo cat >/etc/docker/daemon.json<<'EOF'
{
    "registry-mirrors": ["https://4hmfxnwg.mirror.aliyuncs.com"]
}
EOF
#重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
#拉取测试镜像
sudo docker run hello-world
sudo docker images

3.离线deb软件包安装,国内无法访问官方,未安装。

https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/

三.docker基本管理

1.镜像管理

#查看镜像
sudo docker images 
#查找镜像,以mysql为例
sudo docker search mysql
#拉取镜像,以mysql为例
sudo docker pull mysql:latest
#查看镜像详情,以mysql为例
sudo docker inspect mysql:latest
#构建镜像,需要配合dockerfile
sudo docker build
#镜像打标签,打mysql:8.0为例
sudo docker tag  mysql:latest mysql:8.0
#删除镜像
sudo docker rmi -f 镜像ID

2.容器管理

#查看运行中的容器
sudo docker ps 
#查看所有容器
sudo docker ps -a
#创建容器
#创建后容器停止状态,以centos为例
sudo docker create centos
#或 创建后容器运行,以centos为例
sudo docker run -itd --name cetnos1 centos
#进入容器
sudo docker exec -it 容器ID bash
#启动/停止/重启容器
sudo docker start/stop/restart centos 容器ID
#删除容器
sudo docker rm -f 容器ID

3.网络管理

#查看网络类型,三种网络类型,默认bridge,宿主机共享host,只有lo网卡的none
sudo docker network ls
#网卡查看,可看到docker0和veth的虚拟网卡,veth一端连着容器的eth0一端连接宿主机docker0
sudo ip link
#查看归属docker0的虚拟网卡
sudo brctl show
#创建自定义网络类型,以lnmp为例,类型还是属于bridge
sudo docker network create lnmp
#查看容器的IP地址
sudo docker exec 容器ID  ip  a
#容器之间通信
sudo docker exec 源容器ID ping 目的容器IP
#容器与外部互联
sudo docker exec 源容器ID ping 223.5.5.5

4.数据卷管理 本地持久化

#数据卷常用类型volumes和mount,另外tmpfs临时只存在内存中
#数据卷查看
sudo docker volume ls
#创建本地数据卷,以mysql-vol为例,数据卷存放路径/var/lib/docker/volumes/
sudo docker volume create mysql-vol
#数据卷详细查看,以mysql-vol为例
sudo docker volume inspect mysql-vol
#删除数据卷
sudo docker volume rm mysql-vol
#数据卷源目录与目的目录两种指定方式--mount和-v
#volumes类型,示例
#创建容器过程中挂载,--mount指定
sudo docker run -itd --name web_mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --mount src=mysql-vol,dst=/var/lib/mysql mysql
#或
sudo docker run -itd --name web_mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --mount source=mysql-vol,target=/var/lib/mysql mysql
#创建容器过程中挂载,-v指定
sudo docker run -itd --name web_mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql-vol:/var/lib/mysql mysql
#mount bind类型,绑定到宿主机已存在的目录
sudo mkdir -p /data/mysql
#创建容器过程中挂载,自定义挂载点/data/mysql
sudo docker run -itd --name web_mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --mount type=bind,src=/data/mysql,dst=/var/lib/mysql mysql