在Centos7上安装Docker

在Centos7上安装Docker-ce直接用yum install docker -y安装的docker版本为1.12,但是docker发展很快,现在都18.03.1了。docker-ce是指docker的社区版。1、安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源yum install -y yum-utils

2、添加Docker-CE的yum源yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

如果下不了就直接拷贝文件到 /etc/yum.repos.d/docker-ce.repo如果不能更新 显示被锁 就删除那个锁的文件rm .pid的这个文件3、更新yum源索引yum makecache fast

4、yum安装 docker-ceyum install docker-ce -y

5、启动与停止Dockersystemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。?启动docker:systemctl start?docker?停止docker:systemctl stop?docker?重启docker:systemctl restart?docker?查看docker状态:systemctl status?docker?开机启动:systemctl enable?docker

6、验证是否安装成功docker info

列出docker下的所有镜像:docker images

?REPOSITORY:镜像所在的仓库名称?TAG:镜像标签?IMAGE ID:镜像ID?CREATED:镜像的创建日期(不是获取该镜像的日期)?SIZE:镜像大小?这些镜像都是存储在Docker宿主机的/var/lib/docker目录下

3.3搜索镜像如果你需要从网络中查找需要的镜像,可以通过以下命令搜索docker search 镜像名称

?NAME:仓库名称?DESCRIPTION:镜像描述?STARS:用户评价,反应一个镜像的受欢迎程度?OFFICIAL:是否官方AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

3.4.1从Docker Hub拉取Docker镜像首页,包括官方镜像和其它公开镜像

使用命令拉取:docker pull centos:7目前国内访问docker hub速度上有点尴尬,使用docker Mirror势在必行。现有国内提供docker镜像加速服务的商家有不少,下面重点daocloud镜像加速。3.4.1.1使用Docker加速器针对Docker客户端版本大于1.8的用户注册https://www.daocloud.io

在Linux命令行下执行如下命令来使用加速器:curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8b4bf98a.m.daocloud.io

systemctl daemon-reload

systemctl restart docker

3.5删除镜像1、docker rmi $IMAGE_ID:删除指定镜像2、docker rmi docker images -q:删除所有镜像

4.Docker容器操作4.1查看容器?查看正在运行容器:docker ps?查看所有的容器(启动过的历史容器):docker ps –a

?查看最后一次运行的容器:docker ps –l

?查看停止的容器docker ps -f status=exited

4.2创建与启动容器?创建容器常用的参数说明:?创建容器命令:docker run?-i:表示运行容器?-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。?--name :为创建的容器命名。?-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。?-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。?-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

4.1.1交互式容器创建一个交互式容器并取名为mycentosdocker run -it --name=mycentos centos:7 /bin/bash这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态

使用exit命令 退出当前容器

然后用ps -a 命令查看发现该容器也随之停止:

守护式容器创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):docker run -di --name=mycentos2 centos:7?登录守护式容器方式:docker exec -it container_name (或者 container_id) /bin/bash(exit退出时,容器不会停止)

4.3停止与启动容器?停止正在运行的容器:docker stop $CONTAINER_NAME/ID

?启动已运行过的容器:docker start $CONTAINER_NAME/ID

4.4文件拷贝如果我们需要将文件拷贝到容器内可以使用cp命令docker cp 需要拷贝的文件或目录 容器名称:容器目录也可以将文件从容器内拷贝出来docker cp 容器名称:容器目录 需要拷贝的文件或目录4.5目录挂载我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。创建容器 添加-v参数 后边为 宿主机目录:容器目录docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7如果你共享的是多级的目录,可能会出现权限不足的提示。

这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数 --privileged=true 来解决挂载的目录没有权限的问题4.6查看容器IP地址我们可以通过以下命令查看容器运行的各种数据docker inspect mycentos2也可以直接执行下面的命令直接输出IP地址docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2

4.7删除容器?删除指定的容器:docker rm $CONTAINER_ID/NAME

注意,只能删除停止的容器?删除所有容器:docker rm docker ps -a -q

5.部署应用5.1 MySQL部署5.1.1拉取MySQL镜像docker pull mysql

查看镜像

5.1.2创建MySQL容器docker run -di --name=123_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql-p 代表端口映射,格式为 宿主机映射端口:容器运行端口-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码5.1.3进入MySQL容器,登陆MySQL 进入mysql容器docker exec -it 123_mysql /bin/bash登陆mysqlmysql -u root -p5.1.4远程登陆MySQL(1)我们在我们本机的电脑上去连接虚拟机Centos中的Docker容器,这里192.168.247.130是虚拟机操作系统的IP

5.1.5查看容器IP地址我们可以通过以下命令查看容器运行的各种数据docker inspect 123_mysql运行效果如下:

我们可以看到我们的数据库服务器的IP是172.17.0.2 5.2 tomcat部署5.2.1拉取tomcat镜像docker pull tomcat:8.5-jre85.2.2创建tomcat容器创建容器用于部署java web应用 -p表示地址映射docker run -di --name=123_tomcat -p 9000:8080 -v /usr/local/myhtml:/usr/local/tomcat/webapps --privileged=true tomcat:8.5-jre85.3 Nginx部署5.3.1拉取Nginx镜像docker pull nginx5.3.2创建Nginx容器docker run -di --name=123_nginx -p 80:80 nginx5.3.3测试Nginx浏览器地址栏输入: http://192.168.247.135

5.3.4配置反向代理官方的nginx镜像,nginx配置文件default.conf 在/etc/nginx/conf.d目录下。在容器内编辑配置文件不方便,我们可以先将配置文件从容器内拷贝到宿主机,编辑修改后再拷贝回去。(1)从容器拷贝配置文件到宿主机docker cp 123_nginx:/etc/nginx/conf.d/default.conf default.conf (2)编辑default.conf,添加反向代理配置upstream daili { server 172.17.0.7:8080;}server { listen 80; server_name www.test.com; location / { proxy_pass http://daili; index index.html index.htm; }}

(3)将修改后的配置文件拷贝到容器docker cp default.conf 123_nginx:/etc/nginx/conf.d/default.conf(4)重新启动容器docker restart 123_nginx(5)设置域名指向192.168.247.135 www.test.com 5.4 Redis部署5.4.1拉取Redis镜像docker pull redis5.4.2创建Redis容器 docker run -di --name=123_redis -p 6379:6379 redis

5.4.3客户端测试在你的本地电脑命令提示符下,用window版本redis客户端测试redis-cli -h 192.168.247.135

6.备份与迁移6.1容器保存为镜像我们可以通过以下命令将容器保存为镜像docker commit 123_nginx mynginx123_nginx是容器名称mynginx是新的镜像名称此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器6.2镜像备份docker save -o mynginx.tar mynginx-o 输出到的文件执行后,运行ls命令即可看到打成的tar包

<pre spellcheck="false" class="md-fences md-end-block contain-cm modeLoaded" lang="" contenteditable="false" cid="n484" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, "Liberation Mono", Courier, monospace; font-size: 0.9em; white-space: normal; display: block; break-inside: avoid; text-align: left; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(223, 226, 229); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">到此,镜像就都打包完成了,如果在一台新机器还原docker镜像,只需要使用:docker load --input centos_nginx.tar就可以了。6.3镜像恢复与迁移</pre>

首先我们先删除掉mynginx镜像然后执行此命令进行恢复docker load --i mynginx.tar-i 输入的文件执行后再次查看镜像,可以看到镜像已经恢复

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『中级篇』Dockerfile实战(19)

1353
来自专栏木制robot技术杂谈

Docker 占满 Linux 系统盘解决方案

一般情况下我们通过命令在 Linux 上安装 Docker,Docker 会将文件默认储存在 /var/lib/docker 目录下,时间久了就会占用很大空间,...

1091
来自专栏有困难要上,没有困难创造困难也要上!

Docker中YUM安装RPM包报错 Rpmdb checksum is invalid: dCDPT(pkg checksums): ...

5057
来自专栏编码前线

Docker容器进入的4种方式(推荐最后一种)

  在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器...

2543
来自专栏Angular&服务

搭建docker环境

1153
来自专栏禹都一只猫博客

docker入门:安装以及基本的命令

2155
来自专栏性能与架构

Docker中配置centos容器支持ssh

image.png 在Docker起步中,已经下载了ubuntu系统镜像,启动容器后成功执行了一个简单的系统命令 此时的容器是封闭的,下面我们就建立起和容器的沟...

4128
来自专栏散尽浮华

Docker容器学习梳理--私有仓库Registry使用

但有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。 使用私...

2348
来自专栏Java技术栈

Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。

除了可以在Docker Hub上搜索镜像外,还可以通过命令 docker search xxx 进行搜索,下面以 mysql 为例:

1422
来自专栏WebDeveloper

初学docker(win10)

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、...

2002

扫码关注云+社区

领取腾讯云代金券