Docker 是一个应用打包、分发、部署的工具。你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。
Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。
启动,停止,删除,基本命令!
目前就可以把这个容器理解为就是一个简易的linux系统
仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库!
Docker Hub(默认是国外的)阿里云.…都有容器服务器(配置镜像加速!)
docker要求系统内核是3.10以上,可以使用uname -r命令来查看系统内核发行版本号。
1.卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.需要的安装包
yum install -y yum-utils
3.设置镜像的仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装容器之前,更新yum软件包索引。
yum makecache fast
4.安装容器相关的。docker-ce(社区版)docker-ee(企业版)
yum install docker-ce docker-ce-cli containerd.io
5.启动docker
systemctl start docker
6.使用docker version查看是否安装成功
docker version
1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
2.删除资源
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
- sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]//中国科学技术大学镜像
}
EOF
- sudo systemctl daemon-reload
- sudo systemctl restart docker
docker 命令 --help # 帮助命令
#查看所有本地的主机上的镜像
dokcer images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 10 months ago 13.3kB解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小命令参数可选项
-a, --all # 显示所有镜像 (docker images -a)
-q, --quiet # 仅显示镜像id (docker images -q)
搜索镜像
docker search 镜像名
下载镜像
docker pull 镜像名[:版本号]
可以指定版本,不指定默认下载最新版,docker下载是分层下载,可以实现层级复用
删除镜像
docker rmi -f 镜像id # 删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id # 删除多个镜像(空格分隔)
docker rmi -f $(docker images -aq) # 删除全部的镜像
新建容器并启动
docker run [可选参数] image
-d 后台启动
常见的坑:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止。
比如:nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
–name 指定容器名字
-it 使用交互方式运行:进入容器内查看内容
exit 关闭容器并从容器中退出
ctrl+P+Q 不关闭容器退出容器
-p 指定容器的端口(小写p)
-P 随机指定端口(大写p)
列出当前正在运行的容器
docker ps
-a # 列出当前正在运行的容器+历史运行过的容器
-q # 只显示容器的编号
-n=? # 显示最近创建的容器(可以指定显示几条,比如-n=1)
删除容器
docker rm 容器id # 不能删除正在运行的容器
docker rm -f 容器id # 强制删除,包括正在运行的容器
docker rm -f $(docker ps -aq) #删除所有容器
docker rm -f -q|xargs docker rm #删除所有容器
启动和停止容器
docker start 容器id #启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机的路径
docker pull nginx 下载nginx镜像
docker run -d --name=“nginx-1” -p 3344:80 nginx 启动nginx
# -d 后台运行
# --name=“nginx01” 给容器命名
# -p 宿主机端口:容器内部端口
测试访问 : 访问宿主机公网ip:宿主机端口
出现以下页面即为成功!
失败可能的原因,云服务器未暴露3344端口(以我容器端口号为例)。