Docker实用笔记

71次阅读
没有评论

共计 2871 个字符,预计需要花费 8 分钟才能阅读完成。

Windows 环境

Docker Desktop for Windows:https://docs.docker.com/desktop/setup/install/windows-install/

设置镜像源:Settings → Docker Engine:

"registry-mirrors": [
    "https://mirrors.ustc.edu.cn",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "https://mirror.azure.cn",
    "https://dockerpull.org"
  ],

环境初始化 (CentOS)

# 安装 wget,参数 - y 会自动选择 y,全自动
yum -y install wget

# 下载阿里云源,- O 选项以其他名称保存下载的文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 基础仓库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 额外仓库

# 清空本地缓存
yum clean all
# 生成新的缓存
yum makecache

# 清空现有规则来暂时停止防火墙 (警告:这只适合在没有配置防火墙的环境中,如果已经配置过默认规则为 deny 的环境,此步骤将使系统的所有网络访问中断)
iptables -F
# 查看是否开启了 SELinux,确保是 disabled 的状态
getenforce
# 临时关闭 SELinux
setenforce 0
# 永久关闭 SELinux,SELINUX=enforcing 改为 SELINUX=disabled 即可
vi /etc/selinux/config
# reboot 使配置生效
reboot

# 关闭防火墙,开机自动关闭
systemctl disable firewalld
# 关闭防火墙
systemctl stop firewalld

安装 Docker

开启 Linux 内核的流量转发

# 内核版本不能低于 3.10
uname -r
# 查看发行版本
cat /etc/redhat-release

# 开启 Linux 内核的流量转发
cat <<EOF > /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.ip_forward = 1
EOF

# 加载修改内核的参数,配置文件
modprobe br_netfilter # 加载 br_netfilter 模块
sysctl -p /etc/sysctl.d/docker.conf # 重新加载内核 

利用 yum 快速安装 docker

# 下载阿里源 repo 文件
wget -O /etc/yum.repos.d/docker.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新 yum 缓存
yum clean all && yum makecache

# 查看源中可用版本
yum list docker-ce --showduplicates | sort -r

# yum 安装 docker
yum install docker-ce-20.10.9 -y
# 卸载
yum remove docker-ce-20.10.9 -y

配置 Docker 加速器

mkdir -p /etc/docker
vi /etc/docker/daemon.json

写入如下内容:

{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"]}
systemctl daemon-reload
# 开机启动 docker

systemctl enable docker
# 重新启动 docker
systemctl restart docker
# 查看版本,验证 docker 是否正确启动
docker version
# 查看 docker 信息
docker info
# docker 数据存放路径
docker info | grep Root

用 Docker 使用各种操作系统

使用 docker 来切换不同的发行版,内核使用的都是宿主机的内核。

# 获取 ubuntu 镜像
docker pull ubuntu
# 运行容器且进入容器内,- i 交互式命令操作,- t 开启一个终端
# bash 进入容器后,执行的命令
docker run -it ubuntu bash
# --rm 容器退出时删除该容器
docker run -it --rm ubuntu bash

# 查看容器内的发行版本
cat /etc/lsb-release
# 退出容器
exit

# 进入到正在运行的容器内
docker exec -it 容器 id bash

镜像操作

拉取镜像

docker pull busybox

busybox 是一个集成了数百个 Linux 命令的精简工具箱,只有几兆大小,被誉为 Linux 系统的瑞击军刀。

搜索镜像:docker search nginx

查看镜像

# 查看本地所有镜像
docker images
# 查看具体镜像
docker images nginx
# 可以指定具体 tag
docker images nginx:latest
# 只列出镜像 id,--quiet
docker images -q
# 格式化显示镜像
docker images --format "{{.ID}} -- {{.Repository}}"
# 以表格形式显示
docker images --format "table {{.ID}} t {{.Repository}}"

删除镜像

docker rmi busybox

容器操作

创建并启动容器

# 创建容器
docker create -it --name=busybox busybox
# 启动容器
docker start busybox
# 查看容器是否在运行
docker ps
# 查看停止状态的容器
docker ps -a
# 停止容器
docker stop busybox

# 创建并启动容器
docker run -it --name=busybox2 busybox
# - d 后台运行容器,-p 80:80 端口映射 (宿主机端口: 容器内端口)
docker run -d -p 80:80 nginx

上述命令中,- t 参数是分配一个伪终端,- i 参数从终端 STDIN 打开,同时使用 -it 参数可以进入交互模式。

在交互模式下,可以通过所创建的终端来输入命令,例如:ps aux,容器 1 号进程为 sh 命令,在容器内部并不能看到主机上的进程信息,因为容器内部和主机是完全隔离的。同时由于 sh 是 1 号进程,意味着如果通过 exit 退出 sh,那么容器也会退出。

删除容器

docker rm busybox2
# 要删除正在运行的容器,须加 -f(--force)参数
docker rm -f busybox

正文完
 0
三毛笔记
版权声明:本站原创文章,由 三毛笔记 于2023-08-15发表,共计2871字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)