目录
前言
前文简单说明了容器技术出现的背景,与对docker做了结构上的介绍Container容器技术简介-CSDN博客https://blog.csdn.net/qq_72569959/article/details/134814887
讲到docker的运行是由三个关键组件组成的,本文则是讲解了docker的安装方法与操作命令
1、镜像image
只读状态的,docker通过image创建container 类似于在VMwareworkstation上创建虚拟机所使用的iso文件,iso是一种光盘格式的镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 9c7a54a9a43c 7 months ago 13.3kB
镜像来源有几种:远端仓库、本地仓库、docker tar、docker file,可以通过以下几种方式进行制作,稍后会细说
docker pull #远端拉取
docker build #通过docker file构建
docker load #拉取压缩包
docker commit #通过已有container重新封装
2、容器container
3、镜像仓库registry
远端仓库:hub.docker.com,阿里云仓库等
本地仓库可以自己搭建
docker的安装
环境可以比较随意
VMwareworkstation17 pro
centos7.8.2003
NAT网络
#1、通过get.docker.com官网下载get-docker.sh,并且增加参数,跳过安全验证
curl -fskSL get.docker.com -o get-docker.sh
#2、下载安装
#从外网直接安装
sudo sh get-docker.sh
#从阿里云安装
sudo sh get-docker.sh --mirror Aliyun
#3、自启动
systemctl enable docker --now
#4、把用户添加到docker组内,使其可以使用docker
usermod -aG docker ws
id ws
#uid=1000(ws) gid=1000(ws) groups=1000(ws),982(docker)
su - ws
#5、测试
docker run hello-world
#6、查看docker守护进程
ps -ef | grep -i dockerd
root 13168 0.4 1.9 1554288 75428 ? Ssl 18:40 0:57 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
基础docker操作
查看docker版本
docker --version
docker version
#查看docker状态,可以看到docker的客户端与服务器状态、远端仓库地址等
docker info
容器管理
#容器运行
docker run httpd #直接在前台运行
docker run -d #在后台运行
docker run -p 1234:8080/tcp #端口映射,指定端口,将宿主机端口1234映射到容器8080端口,指定tcp协议
docker run -P #端口映射,随机端口
docker run --name #指定名字
docker run -it ...... /bin/bash#使其可交互,并且分配bash
docker run -v 宿主机路径:容器内地址 #指定外部挂载到容器内部,建议使用绝对路径
eg:docker run -itd --name test -p 1234:8080/tcp -v /iso:/var/tftp/boot centos /bin/bash
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#886c57251999 centos "/bin/bash" 37 seconds ago Up 36 seconds 0.0.0.0:1234->8080/tcp, :::1234->8080/tcp test
#重新进入已经后台运行的容器
docker exec -it 886c57251999 /bin/bash
exit #退出
#启动与关闭
docker start containerID #容器,启动!
docker restart containerID #重启
#查看正在运行的docker container
docker ps
#查看所有的docker container,包括没起来的
docker ps -a
#查看所有的正在运行docker的容器id
docker ps -q
#关闭容器
docker stop containerID #正常关闭
docker stop $(docker ps -aq) #全部关闭
docker kill containerID #强制关闭
#删除容器
docker rm containerID
docker rm -f containerID #强制删除
docker rm $(docker ps -aq) #全部删除
#复制文件
docker cp 宿主机⽂件路径 容器id:路径
镜像管理
#在镜像仓库中搜索镜像
docker search httpd
#从docker官网拉取镜像
#使用阿里云镜像加速,拉取镜像就会优先从远端阿里云仓库拉取,就会快很多
#https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
docker pull httpd
docker pull mysql:5.7 #指定版本拉取
#查看镜像
docker images
docker images -a #查看所有镜像
docker images -q #只查看镜像id
#给image添加tag
docker tag xxxxxxxx httpd
#删除镜像,默认删除latest版本
docker rmi httpd #指定名称
or
docker image rm httpd #同意思
docker rmi hello-world:latest #指定版本
docker rmi -f hello-world #强制删除
容器镜像封装与加载
#搭建环境
docker pull centos/httpd-24-centos7
docker run -d -p 10001:8080 --name cm01 centos/httpd-24-centos7
#容器打包#docker commit -m "描述信息" -a "作者信息" 容器ID/容器名称 ⾃定义镜像名称:⾃定义标签
docker commit -m "ws" -a "ws" cm01 wsapache:v1.0
#镜像封装
#docker save 镜像名称:标签 -o 镜像打包的⽂件名 #默认当前目录
docker save wsapache:v1.0 -o wsapache.tar
#清理环境
docker stop cm01
docker rm cm01
docker rmi wsapache:v1.0
#镜像加载与运行
docker load -i wsapache.tar
docker run -d -p 10001:8080 --name cm01 wsapache:v1.0