概述
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现 虚拟化 。
docker的配图很形象。一只鲸鱼(容器)上面装载着货物(应用)。
docker安装
debian/ubuntu等系统可以直接下载deb进行安装
docker repo
sudo dpkg -i package-name.deb
其他平台参照 docker官网 docker hello world
安装好docker之后,执行下面语句确认docker是否安装成功
sudo docker info
如果docker没有启动,则执行
sudo /etc/init.d/docker start 或 sudo service docker start
执行下面的语句启动一个docker容器
sudo docker run -i -t ubuntu:14.04 /bin/bash
docker run ,运行容器的命令 -i -t , 执行docker以交互(将执行的过程显示到shell中)的形式启动容器 ubuntu:14.04 , ubuntu表示镜像名,14.04表示镜像的标签 /bin/bash , 表示要让启动的容器执行/bin/bash语句
首次执行这段代码时,docker会下载ubuntu:14.04对应的镜像。
docker镜像和容器
镜像和容器,是docker中最最重要的两个概念。
镜像:在某一操作系统(一般是linux)的基础上,添加某个服务(如mysql服务),所构成的一个处于静态的系统镜像,可以理解为某系统的iso镜像文件。(我自己的理解[捂脸])
容器:根据镜像安装之后的状态
sudo docker images
上面语句列出本电脑(宿主机)上的镜像
sudo docker pull redis:3
上面语句可以从docker官方hub中获取一个镜像名为redis且标签为3的镜像。看它的名字可以知道是安装了redis 3 版本的镜像
镜像的自定义 创建一个安装好redis服务器的镜像
1 . 创建目录和Dockerfile
2. 下载163的源文件到redis文件夹下,和Dockfile同一目录下(由于ubuntu原来的软件源贼慢,所以将其替换)
3. 编写Dockfile,Dockfile中的内容如下
FROM ubuntu:14.04 MAINTAINER dkpaulwen "wen229267643@gmail.com" ADD $PWD/sources.list.trusty /etc/apt/sources.list RUN ["apt-get","-y","update"] RUN ["apt-get","-y","install","redis-server","redis-tools"] EXPOSE 6379 CMD ["/usr/bin/redis-server"]
FROM ubuntu:14.04 : 表明我们所构建的镜像是基于ubuntu:14.04镜像的 MAINTAINER name email : 构建人的名字和邮箱 ADD path1 path2 : 将宿主机中的path1文件/目录 复制到 docker中 RUN ["command","option",...] : 表示执行command命令 , 也可以写作 RUN command option parameter 这样的形式。上面执行的两个语句更新了源,安装了redis EXPOSE 6379 : 表示docker机会将6379端口暴露给宿主机,可以将宿主机的某个端口与这个端口连接,这样就可以在外部使用这个容器中运行的应用 CMD ["command","option",...] : 表示启动容器时若不指定执行的命令,就执行这个命令指定的命令
4 . 构建镜像
在redis目录下执行命令
sudo docker build -t dkpaulwen/redis .
-t 选项用来告诉docker daemon要构建的镜像的仓库名和镜像名为dkpaulwen/redis,其中dkpaulwen为仓库名,redis为镜像名
sudo docker images
查看镜像
root@iZm5ejdk51ejf0nkzwz3koZ:~/dockers/redis# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE dkpaulwen/redis latest eb4b76ccb49c 18 minutes ago 213.4 MB
5. 用自定义的镜像创建容器
执行下面的命令
sudo docker run -d -p 6379 --name myredis dkpaulwen/redis
-d 选项告诉docker以后台的形式启动容器 -p 6379 告诉docker将docker机的6379端口与宿主机的随机端口(随机分配一个大端口号)相关联,也可以这样 -p 6666:6379,前者是宿主机,后者docker机 --name myredis 指定容器名 dkpaulwen/redis 是镜像名 这里没有指定要执行的命令,默认执行Dockerfile中的CMD指定的命令
6. 查看创建的docker容器
docker ps 命令
root@iZm5ejdk51ejf0nkzwz3koZ:~/dockers/redis# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e1366140973 dkpaulwen/redis "/usr/bin/redis-serve" 23 minutes ago Up 23 minutes 0.0.0.0:32788->6379/tcp myredis
这里包含容器的一些属性,其中一个是ports——端口,可以看到,0.0.0.0:32788 -> 6379/tcp ,32788是宿主机端口,6379是被关联的docker容器端口,类型是tcp
7. 连接这个容器
redis-cli -h localhost -p 32788
root@iZm5ejdk51ejf0nkzwz3koZ:~/dockers/redis# redis-cli -h localhost -p 32788 localhost:32788> get username "glen" localhost:32788>
因为我在我的服务器上安装的docker,所以我也可以在自己的电脑上连接服务器上的docker容器
paul@paul-Inspiron-5420:~$ redis-cli -h www.wenjingyi.top -p 32788 www.wenjingyi.top:32788> get username "glen" www.wenjingyi.top:32788>
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 老头杯第二届规则是什么 英雄联盟老头杯第二届规则介绍
- 王崴-爵士听堂.蓝色波萨(HQCD)[WAV+CUE]
- 群星《欧美动听情歌·柔情第5季》2CD【DTS-WAV分轨】
- [极品珍藏]德意志进行曲集卡拉扬SACD[WAV+CUE]
- 前暴雪制作人呼吁反击DEI 玩家:夺回文化!
- 腾讯证实子公司Sharkmob大规模裁员:整个市场很低迷
- 荣耀加冕 问鼎冠军 中国代表队获第四届东亚电竞锦标赛团体总冠军
- 污甩乐队.2024-Let.the.dirt.left【摩登天空】【FLAC分轨】
- 杜德伟.1994-ALL.FOR.YOU(英)【滚石】【WAV+CUE】
- 群星.2013-百代好声音ADMSCD1【EMI百代】【WAV+CUE】
- 群星《私人音乐精选示范碟》PRIVATEMUSIC 发烧唱片名碟[WAV+CUE][1.1G]
- 山口百惠《あなたへの子守唄》日本索尼钢刻字首版[WAV分轨][1.1G]
- 群星《宝丽金20周年特别发烧版》1:1母盘直刻限量编号[低速原抓WAV+CUE][1G]
- 凤飞飞.1984-仲夏(夏艳)[WAV]
- 常安《民歌红·江南燕》DTS-ES6.1[WAV]