学习笔记 docker 及docker-compose
查看内核 uname -r
设置一个yum源,下面两个都可用
# 设置稳定版仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
ce社区版,ee企业版,推荐安装企业版
# 安装 Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io
启动
systemctl start docker
开机启动
systemctl enable docker
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
下载镜像 docker pull
创建一个新的容器并运行一个命令: docker run -itd –rm -p 80:80 -v /data:/data centos /bin/bash
- –name 容器名称
- -d 后台方式运行
- -it 使用交互方式运行,进入容器查看内容(例如:docker run -it centos /bin/bash)
- -p 指定容器的端口号 -p 8080:8080(主机端口:容器端口)
Docker start [参数] 启动容器
进入当前正在运行的容器
docker exec -it 容器id /bin/bash 进入容器后开启一个新的终端(常用)
查看容器日志信息
docker logs -tf –tail 10 容器id
- -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因 此我们需要交互式终端。
- –rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 –rm 可以避免浪费空间。
- centos :这是指用centos 镜像为基础来启动容器。
- bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
- -v 主机的目录/data映射到容器的/data
- -p [宿主主机端口]:[容器内部端口]
-d, –detach=false 指定容器运行于前台还是后台,默认为false
-i, –interactive=false 打开STDIN,用于控制台交互
-t, –tty=false 分配tty设备,该可以支持终端登录,默认为false
-u, –user=”” 指定容器的用户
-a, –attach=[] 登录容器(必须是以docker run -d启动的容器)
-w, –workdir=”” 指定容器的工作目录
-e, –env=[] 指定环境变量,容器中可以使用该环境变量
-m, –memory=”” 指定容器的内存上限
-P, –publish-all=false 指定容器暴露的端口
-p, –publish=[] 指定容器暴露的端口
-v, –volume=[] 给容器挂载存储卷,挂载到容器的某个目录
–volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录
–env-file=[] 指定环境变量文件,文件格式为每行一个环境变量
–expose=[] 指定容器暴露的端口,即修改镜像的暴露端口
–name=”” 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
–net=”bridge” 容器网络设置:
- bridge 使用docker daemon指定的网桥
- host //容器使用主机的网络
–restart=”no” 指定容器停止后的重启策略:
- no:容器退出时不重启
- on-failure:容器故障退出(返回值非零)时重启
- always:容器退出时总是重启
–rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)