今日份学习: Docker 和 Docker的使用
2024-10-08 13:34:30
笔记
Docker 能做什么?
- 保证开发、测试、交付、部署的环境完全一致
- 保证资源的隔离
- 启动临时的、用完即弃的环境,例如测试
- 迅速(秒级)超大规模部署和扩容
Docker 基本概念
镜像 image
预先定义好的模板文件,Docker引擎按照这个模板启动无数个容器
容器 container
独立的,默认和宿主机不发生任何交互
docker <Docker参数> <镜像名> <镜像中要运行的命令和参数>
docker pull/images
docker pull:下载指定镜像。比如:docker pull mysql:8.0.1
默认从docker的中央仓库找,也可以指定镜像仓库:镜像仓库/镜像名:tag
docker images:查看本地已有的镜像。
docker run/ps
docker run:装在镜像成为一个容器
每个容器有一个ID,支持缩写。
两种主要的运行模式:
- docker run -it <镜像名> <镜像中要运行的命令和参数>
- docker run -d <镜像名> <镜像中要运行的命令和参数>
参数 | 含义 |
---|---|
-i | 以交互模式运行容器,通常与 -t 同时使用; |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用; |
-d | 后台运行(daemon模式)容器,并返回容器ID; |
--name | 为容器指定一个名字 |
--restart=always | 遇到错误自动重启 |
-v <本地文件:<容器文件> | 文件映射(可以设置权限,比如:<容器文件>:rw) |
-p <本地端口>:<容器端口> | 端口映射 |
-e NAME=VALUE | 环境变量(environment) |
例子:比如启动一个mysql
docker run --name mysql -v e:\docker:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:8.0.18
docker start/stop
启动/停止一个容器
docker rm
删除容器
docker rm xxx
rm -f 参数:强制
docker rmi 镜像id
删除镜像
docker exec
exec: 执行
指定目标容器,进入容器执行命令,调试等。
docker exec -it <容器id> <容器内要运行的命令和参数>
例如:docker exec 容器ID bash
docker logs
docker logs <容器ID/容器名>
查看目标容器的输出
-f 跟踪实时日志(follow)
docker inspect
docker inspect <容器ID/>
查看容器的详细状态
dockerfile 和 镜像仓库
docker镜像默认分层,为了复用。
例如(ubantu的dockerfile):
#
# Ubuntu Dockerfile
#
# https://github.com/dockerfile/ubuntu
#
# Pull base image.
FROM ubuntu:14.04
# Install.
RUN \
sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
apt-get update && \
apt-get -y upgrade && \
apt-get install -y build-essential && \
apt-get install -y software-properties-common && \
apt-get install -y byobu curl git htop man unzip vim wget && \
rm -rf /var/lib/apt/lists/*
# Add files.
ADD root/.bashrc /root/.bashrc
ADD root/.gitconfig /root/.gitconfig
ADD root/.scripts /root/.scripts
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
CMD ["bash"]
Dockerfile
指定镜像如何生成。
写一个自己的Docker:
FROM centos:7
#FROM ubantu:16.04
RUN yum -y install nginx
#RUN apt-get update && apt-get -y install nginx
RUN echo "Hello" > /usr/share/nginx/html/index.html
EXPOSE 80
#暴露80端口
- 然后 docker build 写好的文件
- docker run -p 8080:80 镜像ID
- docker ps
- docker tag 镜像ID name:tag (可以指定push到哪里去,例如:docker tag 镜像ID 127.0.0.1:5000/name:tag)
- docker push (如果是127.0.0.1,前提是执行了下面的registry,部署了私服才可以)
- 可以访问一下浏览器:localhost:5000/v2/name/tags/list
- 现在可以docker pull了
记录一个好玩的:
- 部署 Docker私服
docker run -d -p 5000:5000 --restart always --name registry registry:2 - 镜像仓库设置
-- registry-mirror:指定镜像源
-- insecure-registry:使用HTTP方式(默认HTTPS)
K8s(Kubernetes)
Kubernetes(K8s)是一个开源系统,用于自动化容器化应用程序的部署,扩展和管理。
_
_
练习时遇到的问题
- Pull不下来:各种加速器
- 练习
最新文章
- Unattend.xml应答文件制作(WISM)
- [转载]卡尔曼滤波器及其基于opencv的实现
- 同级、父子级div定位
- 与你相遇好幸运,mbview的mbtiles文件分析
- Div中高度自适应增长方法
- PowerShell脚本:随机密码生成器
- Spring-RMI固定端口
- 个人分享:平时开发中感觉几款不错 IDE 、插件、工具
- JixiPix 各种图像软件,很不错的说,还有affinity designer
- vs2008 提示msdbg.dll未正确安装的解决办法
- Ubuntu + Win7 双系统 重装win7后进入不了Ubuntu
- Android 系统搜索框(有浏览记录)
- Android .mk文件语法解析
- FineUIMvc随笔 - 不能忘却的回发(__doPostBack)
- Unity-奥义技能背景变黑效果
- 第6章 Overlapped I/O, 在你身后变戏法 ---被激发的 File Handles -3
- Linux常用保护机制
- Vue-admin工作整理(十二):Vuex-插件(持久化存储)
- mmap共享内存深入总结
- QQ通信机制(转)