docker官网
安装
卸载旧版本(如有)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装依赖和配置仓库
#安装工具
yum install -y yum-utils device-mapper-persistent-data lvm2
#配置仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast
安装docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动docker
systemctl start docker #启动服务
systemctl enable docker #设置开机自启动
docker version #查看docker版本
配置镜像加速器
加速器地址需要从阿里云控制台获取:阿里云控制台
需要登录阿里云官网
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://umoath5o.mirror.aliyuncs.com"]
}
EOF
#重启服务
systemctl daemon-reload
systemctl restart docker
常用命令
镜像操作
docker images #查看所有本地的主机上的镜像
# -a 列出所有镜像
# -q 只显示镜像的id
# -f 强制删除
docker search [镜像名] #搜索镜像
docker pull [镜像名] #下载镜像,默认下载最新版,也可指定版本 例如:nginx:[版本号]
docker rmi [镜像名] #删除镜像
docker rmi $(docker images -qa) #删除所有镜像
docker run [镜像] #运行镜像,创建容器,如果本地没有指定的镜像,则会自动下载指定镜像
#-d 后台运行
#--name 指定生成的容器名
#-p 90:80 将外部主机端口90映射到容器内nginx的80端口
#此处注意:主机端口不可重复映射,容器端口可以,因为每个容器是互相隔离的,不相关
#示例:后台运行nginx镜像,指定容器名为mynginx,并将外部主机端口90映射到容器内nginx的80端口
docker run -d --name mynginx -p 90:80 nginx
docker inspect [镜像名] #查看镜像信息
docker save -o [保存的tar包名] [镜像名] #将这个镜像保存为一个tar的压缩包
docker load -i [压缩包名] #使用这个压缩包,将压缩包加载为一个镜像
# -i 指定压缩包路径
docker tag [新名字] [原镜像名字] #修改镜像名字
容器操作
docker ps #查看运行中的应用容器
# -a 查看所有的容器,包括停止的
#CONTAINER ID 容器ID
#IMAGE 运行的镜像
#CREATED 容器创建时间
#STATUS 容器状态
#PORTS 占用的端口号
#NAMES 容器名
docker stop [容器或容器ID] #停止容器
docker kill [容器名或容器ID] #强制停止容器
docker start [容器名或容器ID] #启动容器
docker restart [容器名或容器ID] #重启容器
docker stats [容器名或容器ID] #查看容器的状态、CPU、内存、网络IO等信息
docker logs [容器名或容器ID] #查看容器运行日志
docker rm [容器名] #删除容器,删除前要先停止运行
#-f 强制删除,不停止也可以删除
docker commit [容器名或ID] [镜像名] #将一个容器提交为一个镜像
# -a 指定作者
# -m 写提交信息
# -p 设置可以中途暂停
docker exec #进入容器
docker exec -it [容器名或容器ID] /bin/bash #参数it代表以交互模式 /bin/bash代表以控制台的方式进行交互
docker cp <源路径> <目标路径> #宿主机和容器之间复制文件或目录
推送镜像
我们除了可以从镜像仓库拉取镜像之外,还可以将本地镜像推送到镜像仓库
拉取nginx镜像
docker pull registry.cn-shenzhen.aliyuncs.com/amgs/nginx:latest
运行镜像生成容器
docker run --name mynginx -d -p 90:80 registry.cn-shenzhen.aliyuncs.com/amgs/nginx
#这时候可以浏览器访问宿主机的ip+90端口看nginx的欢迎界面
修改nginx的主页面
#nginx默认主页面index.html,在本地写一个index.html
cat >index.html <<EOF
<h1>Hello,JZRW<h1>
EOF
#将index.html复制到容器内
docker cp index.html mynginx:/usr/share/nginx/html/
#这时候再刷新浏览器页面就可以看到页面修改了
将修改的容器提交为一个新的镜像
#新的镜像名为nginx,不过版本是v1
docker commit -a jzrw -m "修改index.html" mynginx nginx:v1
登录到镜像仓库
#推送镜像前需要先登录想要推送的镜像仓库账号,我这里是自己的阿里云镜像仓库
docker login --username=JZRW_FTX crpi-jlaq68uynffvz29r.cn-shanghai.personal.cr.aliyuncs.com
给镜像打标签
#在推送镜像之前,需要为本地镜像打上目标仓库的标签。
#标签格式为:<your-registry-domain>/<your-namespace>/<image-name>:<tag>
docker tag nginx:v1 crpi-jlaq68uynffvz29r.cn-shanghai.personal.cr.aliyuncs.com/jzrw/nginx:v1
#如果是推送到Docker Hub,tag标签为
<Docker Hub账号用户名>/<镜像名>:<版本号>
#示例:jzrw/nginx:v1
#如果是我个人的阿里云镜像仓库,tag标签就是:
#<个人的镜像地址>/<命名空间>/<镜像名>:<版本号>
#示例:crpi-jlaq68uynffvz29r.cn-shanghai.personal.cr.aliyuncs.com/jzrw/nginx:v1
推送
#推送镜像
docker push crpi-jlaq68uynffvz29r.cn-shanghai.personal.cr.aliyuncs.com/jzrw/nginx:v1
验证
可以把刚刚本地的镜像删除掉,然后再从刚刚登录的镜像仓库拉取刚刚推送的镜像,运行后就可以看到自己修改的index.html页面,这里不再演示
卸载docker
yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
rm -rf /etc/docker