在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 输入的文件执行后再次查看镜像,可以看到镜像已经恢复