CentosOS Docker安装
Docker支持以下的64位centos安装:
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
可以通过命令**docker command --help**更深入的了解指定的 Docker 命令使用方法。
例如我们要查看**docker stats**指令的具体使用方法:
~~~
runoob@runoob:~# docker stats --help
~~~
~~~
docker run -it ubuntu /bin/bash
~~~
* **\-i**: 交互式操作。
* **\-t**: 终端。
* **ubuntu**: ubuntu 镜像。
* **/bin/bash**:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
~~~
docker start b750bbbcfd88
~~~
~~~
docker run -itd --name ubuntu-test ubuntu /bin/bash
~~~
加了-d参数默认不会进入容器,想要进入容器需要使用指令**docker exec**(下面会介绍到)。
停止一个容器
~~~
docker stop <容器 ID>
~~~
### 进入容器
在使用\*\*-d\*\*参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
* **docker attach**
* **docker exec**:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
### 导出和导入容器
如果要导出本地某个容器,可以使用**docker export**命令。
~~~
docker export 1e560fca3906 > ubuntu.tar
~~~
~~~
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
~~~
此外,也可以通过指定 URL 或者某个目录来导入,例如:
~~~
docker import http://example.com/exampleimage.tgz example/imagerepo
~~~
### 删除容器
删除容器使用**docker rm**命令:
~~~
docker rm -f 1e560fca3906
~~~
下面的命令可以清理掉所有处于终止状态的容器。
$ docker container prune
我们可以使用 **docker images** 来列出本地主机上的镜像。
我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:
~~~
runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
~~~
~~~
docker search httpd
~~~
~~~
docker run httpd
~~~
~~~
docker rmi hello-world
~~~
我们可以通过命令 docker commit 来提交容器副本。
~~~
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
~~~
**docker images**
使用我们的新镜像**runoob/ubuntu**来启动一个容器
~~~
runoob@runoob:~$ docker run -t -i runoob/ubuntu:v2 /bin/bash
~~~
### 构建镜像
我们使用命令**docker build** , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像
通过 docker build 命令来构建一个镜像。
~~~
docker build -t runoob/centos:6.7 .
~~~
* **\-t**:指定要创建的目标镜像名
* **.**:Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射。
我们使用\*\*-P**参数创建一个容器,使用**docker ps\*\*可以看到容器端口 5000 绑定主机端口 32768。
* **\-P :是容器内部端口随机**映射到主机的高端口。
* **\-p :是容器内部端口绑定到指定**的主机端口。
外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。
~~~
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
~~~
默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上\*\*/udp\*\*。
**docker port**命令可以让我们快捷地查看端口的绑定情况。
当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用\*\*--name\*\*标识来命名容器,例如:
~~~
docker run -d -P --name runoob training/webapp python app.py
~~~
下面先创建一个新的 Docker 网络。
~~~
docker network create -d bridge test-net
~~~
**\-d**:参数指定 Docker 网络类型,有 bridge、overlay。
通过network选项加入带指定网络。
下面先创建一个新的 Docker 网络。
~~~
docker network create -d bridge test-net
~~~
运行一个容器并连接到新建的 test-net 网络:
~~~
docker run -itd --name test1 --network test-net ubuntu /bin/bash
~~~
给已有镜像制作新tag
~~~
docker tag ubuntu:18.04 username/ubuntu:18.04
~~~
~~~
docker image ls
~~~
~~~
docker push username/ubuntu:18.04
~~~
~~~
docker search username/ubuntu
~~~
### 什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
### 使用 Dockerfile 定制镜像
Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:
**## Docker Compose**
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
<br/><br/>
## **dockerfile**
FROM指定基础镜像,即当前镜像是基于哪个镜像的
MAINTAINER指定作者
RUN指定构建过程中需要运行的命令
ENV设置环境变量
WORKDIR指定默认的工作目录,即进入容器后默认进入的目录
VOLUME创建挂载点,也称容器数据卷,用于数据共享和持久化
CMD指定容器启动时要运行的命令,与RUN不同的是,这些命令不是在镜像构建过程中执行的
ENTRYPOINT指定容器启动时要运行的命令,与CMD有区别
COPY拷贝文件/目录到镜像中
ADD拷贝文件到镜像中,且会自动解压缩
EXPOSE指定对外暴露的端口
COPY与ADD的区别,COPY只能是本地文件且不会自动解压文件,不能访问网络资源,add可以访问网络资源,类似wget。
Dockerfile其实可以看做一个命令集。每行均为一条命令。每行的第一个单词,就是命令command。后面的字符串是该命令所要接收的参数。比如ENTRYPOINT /bin/bash。ENTRYPOINT命令的作用就是将后面的参数设置为镜像的entrypoint。
https://www.cnblogs.com/ExMan/p/12982618.html
放个链接在这里,要是又忘了的话。
- 文章翻译
- Large-scale cluster management at Google with Borg
- Borg Omega and kubernetes
- scaling kubernetes to 7500 nodes
- bpf 的过去,未来与现在
- Demystifying Istio Circuit Breaking
- 知识图谱
- skill level up graph
- 一、运维常用技能
- 1.0 Vim (编辑器)
- 1.1 Nginx & Tengine(Web服务)
- 基础
- 1.2 zabbix
- 定义
- 登录和配置用户
- 1.3 RabbitMQ(消息队列)
- 原理
- RabbitMQ(安装)
- 1.4虚拟化技术
- KVM
- 1.5 Tomcat(Web中间件)
- 1.6Jenkins
- pipline
- 1.7 Docker
- network
- 1.8 Keepalived(负载均衡高可用)
- 1.9 Memcache(分布式缓存)
- 1.10 Zookeeper(分布式协调系统)
- 1.11 GitLab(版本控制)
- 1.12 Jenkins(运维自动化)
- 1.13 WAF(Web防火墙)
- 1.14 HAproxy负载均衡
- 1.15 NFS(文件传输)
- 1.16 Vim(编辑器)
- 1.17 Cobbler(自动化部署)
- 二、常用数据库
- 2.1 MySQL(关系型数据库)
- mysql主从复制
- 2.2 Mongodb(数据分析)
- 2.3 Redis(非关系数据库)
- 三、自动化运维工具
- 3.1 Cobbler(系统自动化部署)
- 3.2 Ansible(自动化部署)
- 3.3 Puppet(自动化部署)
- 3.4 SaltStack(自动化运维)
- 四、存储
- 4.1 GFS(文件型存储)
- 4.2 Ceph(后端存储)
- 五、运维监控工具
- 5.1 云镜
- 5.2 ELK
- 六、运维云平台
- 6.1 Kubernetes
- 6.2 OpenStack
- 介绍
- 安装
- 七、Devops运维
- 7.1 理念
- 7.2 Devops运维实战
- 八、编程语言
- 8.1 Shell
- 书籍《Wicked Cool Shell Scripts》
- 8.2 Python
- 8.3 C
- 8.4 Java
- leecode算法与数据结构
- 九、杂记
- 高优先级技能
- 知识点
- JD搜集
- 明显的短板
- 1.0 Python
- 1.1 Kubernetes
- 1.18.2 《kubernetes in action》
- 遗漏知识点
- 1.18.3 GCP、azure、aliyun
- Azure文档
- 1.18.5 《program with kubernetes》
- Istio
- HELM
- 《Kubernetes best practice》
- Kubernetes源码学习
- Scheduler源码
- 调度器入口
- 调度器框架
- Node筛选算法
- Node优先级算法
- pod抢占调度
- 入口
- 主要代码结构
- new
- 文章翻译
- Flannel
- 从二进制集群搭建
- 信息收集
- docker优化
- 1.2 shell
- 面试题
- grep awk sed 常见用法
- shell实践
- 1.3 Data structure(数据结构)
- Calico
- Aliyun文档以及重点模块
- git
- 大数据组件
- 前端,后端,web框架
- cgroup,namespace
- 内核
- Linux搜集
- crontab
- centos7常用优化配置
- centos Mariadb
- eBPF
- ebpf的前世今生
- Linux性能问题排查与分析
- 性能分析搜集
- 性能分析常用10条
- 网络性能优化
- 文本处理命令
- sql
- Iptables
- python面试题
- iptables
- iptables详细
- zabbix面试题,proj
- prometheus
- web中间件
- nginx
- Haproxy
- grep sed awk
- Linux常用命令
- 云平台
- 书籍Linux应用技巧
- kafka
- kafka面试题
- ETCD
- Jenkins
- 3天补充的点
- K8s源码
- K8s
- k8s实操
- etcd
- test
- BPF
- PSFTP使用
- StackOverflow问答精选
- 问题
- 我对于学习思考
- 修改ssh超时时间
- 课程目录
- 运维与运维开发
- The Person
- 个人杂谈
- mysql主从复制
- 对于工作的认识与思考