Docker安装
Docker官网:
https://www.docker.com/
Github Docker 源码:
https://github.com/docker/docker-ce
Windows版Docker安装
在安装之前
- windows必须是10和64位版本
- 需要启用Windows操作系统中的Hyper-V和容器特性
步骤
- 开启BIOS设置中的硬件虚拟化支持
- 右键单击Windows开始按钮并选择“应用和功能”页面
- 单击“程序和功能”链接
- 单击“启用或关闭Windows功能”
- 确认Hyper-V和容器复选框已经被勾选,并单击确认按钮
- 参考网址
Linux上安装Docker
纵观Docker
[sudo] docker version: 用来检查客户端和服务端是否都已经成功运行
sudo docker image ls: 查看拉取的镜像
sudo docker container run: 从镜像来启动容器
在Linux中启动容器的命令:sudo docker container run -it ubuntu:latest /bin/bash
在Windows中启动容器的命令:sudo docker container run -it microsoft/powershell:nanoserver pwsh.exe
注意:其中 -it 参数会将Shell切换到容器终端——现在已经定位到容器内部了
sudo docker container ls: 查看系统内全部处于运行状态的容器
sudo docker container exec: 可以将Shell连接到一个运行中的容器终端
在Linux中:sudo docker container exec -it vigilant_borg bash
vigilant_borg是示例的容器名,需要改成自己的名称
在Windows中: sudo docker container exec -it pensive_hamilton pwsh.exe
pensive_hamilton是示例的容器名,需要改成自己的名称
sudo docker container stop: 停止并杀死容器
sudo docker container stop vigilant_borg
其中vigilant_borg是示例容器,需要改为自己的名称
sudo docker container rm: 停止并杀死容器
sudo docker container ls -a: 让docker容器列出所有的容器,甚至包括哪些处于停止状态的
sudo docker image build: 根据Dockerfile中的指令来创建新的镜像
新建的Docker镜像名为test:latest
docker image build -t test:latest
容器内部运行命令
- ps:查看当前正在运行的全部进程
- ctrl -PQ组合键:可以在退出容器的同时还保持容器运行
Docker镜像
将镜像拉取到本地
sudo docker image pull ubuntu:latest
sudo docker image pull alpine:latest
检查Docker主机的本地仓库中是否包含镜像
sudo docker image ls
镜像命名和标签
需要给出镜像的名字和标签,就能在官方仓库中定位一个镜像(采用“:”分隔)
- 注意如果没有指定具体的镜像标签,则Docker会假设用户希望拉取标签为latest的镜像
镜像仓库拉取镜像
sudo docker image pull <repository>:<tag>
参数 -a 拉取仓库中的全部镜像
sudo docker image pull -a <repository>
从非官方仓库拉取镜像也是类似,只需要在仓库名称前加上Docker Hub的用户名或者组织名称
使用者必须登录第三方账号
sudo docker image pull nigelpoulton/tu-demo:v2
过滤docker image ls 输出内容
返回悬虚镜像(没有标签的镜像)
sudo docker image ls --filter dangling=true
通过cli方式搜索docker hub
最多返回25行
sudo docker search nigelpoulton
镜像和分层
sudo docker image pull ubuntu:latest
- pull complete分层
sudo docker image inspect ubuntu:latest
- sha256散列值识别镜像层
删除镜像
sudo docker image rm alpine:latest
Docker容器
检查容器是否正常运行
sudo docker version
输出client 和 server
启动一个简单容器
sudo docker container run -it ubuntu:latest /bin/bash
ctrl +pq组合键可以退出容器,但并不终止容器运行
观察当前系统正在运行的容器列表
sudo docker container ls
重新连接到Docker
sudo docker container exec -it <image ID> bash
删除容器
sudo docker container stop <容器id>
sudo docker container rm <容器id>
容器生命周期
容器不能持久化数据
检查常见错误
- server出现错误码,这说明docker daemon很可能没有运行或者当前用户没有权限访问
- 没有权限 usermod -aG docker <user>
- 没有运行 service docker status
- systemctl is-active docker
Docker容器化
完整的应用容器化过程主要分为以下几个步骤
- 编写应用代码
- 创建一个Dockerfile,其中包括当前应用的描述、依赖以及该如何运行这个应用
- 对该Dockerfile执行docker image build命令
- 等待Docker将应用程序构建到Docker镜像中
一旦应用容器化(即应用被打包为一个Docker镜像),就能以镜像的形式交付并以容器的方式运行了。
容器化当前应用/构建具体的镜像
sudo docker image build -t web:latest .
<< don't forget the period(.)
推送镜像到仓库
1. 首先登录Docker Hub
docker login
Username:
password
2. 为当前镜像重新打一个标签
nigelpoulton换成自己的DockerID
docker image tag web:latest nigelpoulton/web:latest
3. 将该镜像推送到DockerHub
docker image push nigelpoulton/web:latest
4. 运行应用程序
docker container run -d --name c1 \
-p 80:8080 \
web:latest
5. app测试
地址栏输入网址:80端口
ubuntu得到ip方法:
sudo nano /etc/resolv.conf
nameserver
Docker Compose部署应用
Docker Compose,它能够在Docker节点上,以单引擎模式进行多容器应用的部署和管理。
Linux上安装Docker Compose
- 在github上查看Docker Compose版本
- 参考网址
- https://blog.csdn.net/qq_20402911/article/details/108975233
- 注意:只是安装了,并没有具体使用,后面如果用到,就会继续添加说明。
切换到管理员账号
sudo -i
安装docker compose
sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m`> /usr/local/bin/docker-compose
下载docker-compose二进制文件后,使用如下命令使其执行
sudo chmod +x /usr/local/bin/docker-compose
检查版本
sudo docker-compose --version
Docker Swarm
swarm有两个核心组件
- 安全集群
- 编排引擎
- 后面会根据课程的东西更新