Docker笔记(一) Docker基础概述
Docker学习
Docker概述
Docker为什么会出现?
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
Docker技术优点
- 更快速的交付和部署
- 更便捷的升级和扩缩容
- 更简单的系统运维
- 更高效的计算资源利用
- 一致的运行环境
- 更轻松的迁移
Docker安装
Docker基本组成
镜像(image)
容器(container)
仓库(repository)
安装Docker
环境准备
安装
1.0 卸载旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.0 需要的安装包
sudo yum install -y yum-utils
3.0 设置镜像仓库
国外
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
阿里云(推荐使用,快!快!快!)
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.0安装docker相关内容
docker-ce 社区版
docker-ee 企业版(需要授权)
更新索引
yum makecache fast
安装docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io
5.0启动docker
sudo systemctl start docker
查看docker版本
sudo docker version
6.0测试hello-world
sudo docker run hello-world
7.0 查看下载镜像
sudo docker images
阿里云镜像加速
Docker常用命令
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器的数量
docker --help # 帮助命令
帮助文档Reference documentation | Docker Documentation
镜像命令
[root@node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 3 weeks ago 13.3kB
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像的大小
docker search搜索镜像
docker search mysql
docker pull 下载镜像
docker pull mysql
docker rmi删除镜像
docker rmi -f 容器id
容器命令
注:先有镜像测才能创建容器,下载centos镜像
docker pull centos
新建容器并启动
docker run [可选参数] image
# 参数说明
--name="Name" 容器名
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机指定端口
启动并进入容器
[root@node1 ~]# docker run -it centos /bin/bash
[root@40153b62f4de /]#
退出容器
# 直接容器停止并退出
[root@40153b62f4de /]# exit
exit
# 退后容器不停止
Ctrl+P+Q
查看容器
# docker ps 命令
-a # 运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
# 运行的
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 运行过的
[root@node1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40153b62f4de centos "/bin/bash" 2 minutes ago Exited (0) 35 seconds ago optimistic_kalam
6509d33ff71c hello-world "/hello" About an hour ago Exited (0) About an hour ago nice_lewin
4e86a9fd5dd8 hello-world "/hello" About an hour ago Exited (0) About an hour ago great_carson
[root@node1 ~]#
删除容器
docker rm 容器id
启动和停止容器
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止容器
docker kill 容器id # 强制停止容器
常用其他命令
后台启动容器
# 后台启动容器
docker run -d 镜像名
# 常见的坑: docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止。
查看日志命令
# 查看日志命令
docker logs [参数] [容器id]
# -tf 显示日志
# --tail [日志条数]
docker logs -tf [容器id]
docker logs -tf --tail 10 [容器id]
查看容器内部进程信息
# 查看容器内部的进程信息
docker top [容器id]
查看镜像元数据
docker inspect [容器id]
进入当前正在运行的容器
#通常容器都是使用后台运行
#方式一,进入容器开启一个新的终端,可以在里面操作(常用)
docker exec -it [容器id] /bin/bash
#方式二,进入正在执行的终端,不会启动新的进程
docker attach [容器id]
从容器内拷贝文件到主机
docker cp [容器id]:容器源文件 主机目标文件
#示例
docker cp [容器id]:/home/test.java test.java
Docker实操练习
部署nginx
搜索镜像
docker search nginx
下载镜像
docker pull nginx
查看镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 87a94228f133 9 days ago 133MB
hello-world latest feb5d9fea6a5 3 weeks ago 13.3kB
centos latest 5d0da3dc9764 5 weeks ago 231MB
启动镜像
# -d 后台运行
# --name 宿主名字
# -p 宿主机端口:容器内端口
docker run -d --name nginx01 -p 3344:80 nginx
运行测试
[root@node1 ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@node1 ~]#
进入容器
[root@node1 ~]# docker exec -it nginx01 /bin/bash
root@649edc671df1:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@649edc671df1:/#
本篇内容是参考网络教程学习过程中的笔记
开发工作着,生活快乐着,留下总结,相互交流,共同进步
开发工作着,生活快乐着,留下总结,相互交流,共同进步