Docker 基础
文章目录
1.Docker概述
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
- 传统:开发jar,运维来做。
- 现在:开发打包部署,一套流程。
2.Docker安装
环境准备:
- 需要会一点Linux的基础
- CentOS 7
- 使用Xshell连接远程服务器
Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
1.卸载旧的版本
sudo 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.设置镜像的仓库(阿里云)
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新软件包索引
yum makecache fast
4.安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
5.启动docker
sudo systemctl start docker
6.查看是否安装成功
docker version
7.验证是否正确安装
docker run hello-world
8.查看一下下载的hello-world镜像
docker images
9.卸载docker
# 1.卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2.删除资源
rm -rf /var/lib/docker
10.配置阿里云镜像加速器
登录阿里云,找到容器镜像服务,点击镜像加速器,然后依次执行命令即可。
# 应该只能使用自己的
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://i2902kmw.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3.Docker与虚拟机VM
docker Run的流程
docker底层原理
Docker是一个 Client-Server 结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。
docker与虚拟机区别
Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。
虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。
4.Docker命令
1.帮助命令
# 查看基本信息
docker version
# 系统信息,包括镜像和容器数
docker info
# 万能命令
docker 命令 --help
2.镜像命令
1.images
# 列出本地镜像
docker images
# 具体使用方法可以输入命令 docker images --help
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Format output using a custom template:
'table': Print output in table format with column headers (default)
'table TEMPLATE': Print output in table format using the given Go template
'json': Print in JSON format
'TEMPLATE': Print output using the given Go template.
Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates
--no-trunc Don't truncate output
-q, --quiet Only show image IDs
2.search
# 从Docker Hub查找镜像
docker search [OPTIONS] TERM
OPTIONS说明:
- -f <过滤条件>:列出收藏数不小于指定值的镜像。
参数说明:
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否 docker 官方发布
- stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED: 自动构建。
3.pull
# 从镜像仓库中拉取或者更新指定镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 不写tag,默认就是最新版本
# 拉取最新的java镜像
docker pull java
# 从Docker Hub下载REPOSITORY为java的所有镜像
docker pull -a java
# 拉取指定版本
docker pull mysql:5.7
4.rmi
# 删除本地一个或多个镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 举例
# 删除单个
docker rmi -f 容器id
# 删除多个
docker rmi -f 容器id 容器id 容器id...
# 删除全部容器
docker rmi -f $(docker images -aq)
OPTION说明:
- -f :强制删除
3.容器命令
说明:我们有了镜像才可以创建容器,下载一个centos镜像。
docker pull centos
1.run
新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" # 容器名字,区分容器
-d # 后台方式运行
-it # 使用交互方式允许,进入容器查看内容
-p # 指定容器的端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P # 随机指定端口
# 测试,启动并进入容器
[root@iZ0jl2pjllvr5lfp1bkua1Z ~]# docker run -it centos /bin/bash
[root@f1a9e93b0ff6 /]#
# 查看内部
[root@f1a9e93b0ff6 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# 从容器退回主机
exit
exit # 直接退出容器并关闭
Ctrl + P + Q # 容器不关闭退出
2.ps
# 列出容器
docker ps [OPTIONS]
# 列出当前加历史允许过的容器
docker ps -a
OPTIONS说明:
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- -n :列出最近创建的n个容器。
- -l :显示最近创建的容器。
参数说明:
- CONTAINER ID: 容器 ID
- IMAGE: 使用的镜像
- COMMAND: 启动容器时运行的命令
- CREATED: 容器的创建时间
- STATUS: 容器状态
- PORTS: 容器的端口信息和使用的连接类型(tcp\udp)
- NAMES: 自动分配的容器名称
3.rm
# 删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 删除指定容器,不能删除正确允许的容器,如果强制删除rm -f
docker rm 容器id
# 删除所有的容器
docker rm -f $(docker ps -aq)
4.start
# 启动一个或多个已经被停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
# 启动
docker start 容器id
5.stop
# 停止一个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
# 停止
docker stop 容器id
6.restart
# 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 重启
docker restart 容器id
7.kill
# 杀掉一个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
# 杀掉
docker kill 容器id
4.常用其他命令
1.后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos
# 问题docker ps 发现 centos停止
# 常见的坑, docker 容器使用后台运行, 就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序
2.查看日志(logs)
# 获取容器的日志
docker logs [OPTIONS] CONTAINER
# 显示容器10条日志
docker logs -tf --tail 10 f272a950b815
OPTIONS说明:
- -f : 跟踪日志输出
- –since :显示某个开始时间的所有日志
- -t : 显示时间戳
- –tail :仅列出最新N条容器日志
3.查看进程信息(top)
# 查看容器中运行的进程信息,支持 ps 命令参数
docker top [OPTIONS] CONTAINER [ps OPTIONS]
# 举例
docker top f272a950b815
4.查看镜像源数据(inspect)
# 获取容器/镜像的元数据
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
# 举例
docker inspect f272a950b815
5.进入当前运行容器(exec)
# 在运行的容器中执行命令
# 进入容器后开启一个新的终端,可以在里面操作
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 举例
docker exec -it f272a950b815 /bin/bash
6.连接运行中容器(attach)
# 连接到正在运行中的容器
# 进入容器正在执行的终端,不会启动新的进程
docker attach [OPTIONS] CONTAINER
# 举例
docker attach f272a950b815
7.数据拷贝(cp)
# 用于容器与主机之间的数据拷贝
docker cp 容器id:容器内路径 目的地主机路径
docker cp 3ff49a3c1032:/home/test.java /home
5.小结
学习docker过程中,搞不清镜像与容器的关系,把它们搞混淆分不清。
简单点理解:docker容器是由docker镜像创建的运行实例。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!