标签:linux
Docker是一个容器,安装在宿主机(比如一个安装好的centos7虚拟机)上,一个宿主机可以装多个docker,每个docker的环境互不干扰。
Docker镜像相当于linux虚拟机的一个镜像,但linux虚拟机镜像安装好了只是一个linux环境,没有任何已安装好的 应用或者软件包;而docker的镜像可以包含有安装好的 应用或者软件包。
比如:用一个含有centos+nginx+mysql+php的docker镜像新建一个docker,那么新建好的docker就是一个 centos+nginx+mysql+php 的环境,这个docker新建好,进入docker就可以用这个lnmp环境,就不再动手安装lnmp了,挺棒的!
思路:
1. yum 安装docker
2. 启动docker服务
3. 下载docker镜像
4. 安装docker镜像
5. 进入,退出docker
6. 重点讲解
一. yum 安装docker
执行命令 yum install –y docker-io
二.启动docker服务
systemctl start docker.service (启动docker服务)
systemctl enable docker.service (设置为开机启动)
systemctl start docker.service (停止docker服务)
三. 获取docker镜像
方法一下载:
官网下载:
docker pull centos:latest (官网下载centos镜像,最新版)
docker pull ubuntu (官网下载ubuntu 的docker镜像 所有版本)
其他网站下载
#阿里云
docker pull registry.cn-hangzhou.aliyuncs.com/acs-sample/redis-sameersbn
#时速云
docker pull index.tenxcloud.com/tenxcloud/ubuntu
#网易蜂巢
docker pull hub.c.163.com/xbingo/jdk8:latest
方法二复制:
#先看看有没有想要的镜像
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest 9baab0af79c4 6 weeks ago 196.8 MB
#导出到tar文件
docker save 9baab0af79c4 > /home/mycentos-save-1204.tar
#拷贝到目的机器文件夹
#进入目的机器文件夹
cd /opt
#把docker镜像导入目标机器
docker load <centos-dockerimages.tar
#看看镜像导成功没有
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
centos latest 9baab0af79c4 6 weeks ago 196.8 MB
附:删除docker镜像方法: docker rmi 镜像id (镜像id 可用docker images 查看)
四. 安装docker镜像
a. 简单安装一个docker
docker run --rm -ti centos:latest /bin/bash
这条命令如果没有centos:latest 镜像,会在官网自动下载完后再安装) 意思是通过镜像centos:latest创建了一个未命名的容器,run就是运行并创建容器,--rm是当容器退出就直接删除容器的意思,-ti的意思是创建了容器之后立刻进入交互模式,/bin/bash则是指定在容器内执行什么操作,一般来说,视乎镜像包含了什么软件和环境,你的容器就有什么软件和环境.
b. 完整命令安装一个docker
docker run -ti -e "TZ=Asia/Shanghai" --name testweb1 --restart=on-failure:3 -c 250 -m 1g --memory-swap=-1 -p 8001:80 -p 22222:22 -v /data/webdata:/data/htdocs/www centos/test:webdemo1 /bin/bash
意思就是创建一个容器,用镜像centos/test:webdemo1来做模板,设置时区是Asia/Shanghai,名字叫testweb1,分配了250份cpu和1G内存,把母机8001端口映射到容器的80端口,把22222端口映射给22端口,把目录/data/webdata挂载到/data/htdocs/www,在容器内运行初始化脚本/bin/bash,这样你想要的容器就搭建完成了,你用web访问母机IP加8001端口就能访问了,想ssh登录就用22222端口.
附:删除已创建docker 方法:
docker rm 容器名(或者容器ID)删除没有运行的容器:
docker rm –f 容器名(或者容器ID)删除运行的容器:
docker rm -f `docker ps -a -q` 删除所有容器
docker rm `docker ps -a -q` 删除非运行的容器
docker rm `docker ps -a | grep Exited | awk‘{print $1}‘` 删除异常退出的容器
五. 进入,退出docker
a 查看已经安装docker :命令docker ps –a
b. 进入名为yzt_newips_core 的docker :docker exec –ti yzt_newips_core bash
c. 退出docker:命令 exit
先来看看常用命令和参数解析:
docker images: 查看本地已经存在的镜像,-a 列出所有(默认不包括中间镜像);
docker rmi IMAGE: 删除指定的镜像,-f 强制删除;
docker ps: 查看运行中的 Docker 容器,-a 列出所有(默认不包括未运行的容器);
docker rm CONTAINER: 删除指定的容器,-f 强制删除;
docker attach containerID: 进入指定ID的容器内,不过要慎用,有隐患,建议用docker exec -it containerID/containerNAME bash来替代
docker inspect containerID: 查看指定ID的容器配置
docker commit containerID 镜像名: 将指定ID的容器制作成镜像,方便以后复用,可以重新提交来更新镜像
-d : 后台运行容器,并返回容器ID;
-i : 以交互模式运行容器,通常与 -t 同时使用;
-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-c: 分配cpu资源,并不是按核数区分,可以分配1-1024任何一个数字,默认是1024,只是一个对比值,比如A和B两个容器,A配置的是1024,B配置的是512,那么A最大可以使用的CPU资源是B的两倍,如果A容器一直闲着,那B容器还是可以使用空闲资源的。
-m: 分配内存,支持k/m/g/t/p单位,例如分配1G内存:-m 1g
--memory-swap: 分配多少(非负数值)swap资源,-1即完全不分配
-p: 映射母机端口到容器端口,例如:将母机的8001端口映射给容器的80端口:-p 8001:80,将母机内网44444端口映射到容器的22端口:192.168.1.10:44444:22,甚至可以把tcp协议换成udp(我是不太建议):192.168.0.225:300:3000/udp
-v: 把母机的文件夹挂载到容器内的文件夹,例如将母机的/data/soft挂载到容器内的/soft文件夹:-v /data/soft:/soft
--name="nginx-lb" : 为容器指定一个名称(和计算机名不是一回事);
--dns 8.8.8.8 : 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com : 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname(和容器名不是一回事);
-e username="ritchie" : 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--net="bridge" : 指定容器的网络连接类型,支持 bridge /host / none
--restart=on-failure:3 : 容器意外停止后的操作方式,这里是尝试重启3次的意思
本文出自 “13193181” 博客,请务必保留此出处http://13203181.blog.51cto.com/13193181/1969515
标签:linux
原文地址:http://13203181.blog.51cto.com/13193181/1969515