37_docker
docker命令
https://www.cnblogs.com/DeepInThought/p/10896790.html
:安装::
官方建议在Ubuntu中安装 因为docker是在ubuntu中发布的 我用的是centos 建议在centos 7.x版本以上
1:安装的前提是先下载虚拟机VMware Workstation Pro
2:下载好centos 7.x 点击CentOS7.vmx 关联到VMware Workstation Pro
(因为我自己弄得CentOS7已经包含下面这些了 所以一下步骤我没弄)
===============以参考以下三个链接
https://www.cnblogs.com/cs294639693/p/10164258.html
https://blog.csdn.net/ZT0518/article/details/88050663
https://blog.csdn.net/hylaking/article/details/87978819
https://www.cnblogs.com/tylerzhou/p/10969072.html(我参考这个成功了)
https://www.runoob.com/docker/centos-docker-install.html(第二次安装)
sudo yum install docker-ce-17.12.0.ce
==========================
1;yum update
2:卸载旧版本docker
yum -y remove docker docker-common docker-selinux docker-engine
3;设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#阿里云yum源
4:查看所有仓库中所有docker版本,并选择特定版本安装
yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0yum install -y <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
5:启动docker并加入开机自动启动
systemctl start docker
systemctl enable docker
6:配置阿里云镜像加速
mkdir -p /etc/docker
vi /etc/docker/daemon.json
添加以下内容
{"registry-mirrors":
["https://5f2jam6c.mirror.aliyuncs.com", "http://hub-mirror.c.163.com"]
}
7:重新加载配置文件
systemctl reload docker
8:重启docker
systemctl restart docker
如果启动报错可以参考:http://www.pianshen.com/article/6992279516/
()3设置ustc镜像
4:Docker启动和停止
开启:systemctl start docker
=========
启动docker容器时报错:
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.18.0.4:5000 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit status 1)
解决方案:重启docker
systemctl restart docker
————————————————
版权声明:本文为CSDN博主「冰山上的来客_胡杨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42273374/article/details/82223640
=========
停止:systemctl stop docker
重启::systemctl restart docker
启动状态: systemctl status docker
开机自己启动: systemctl enalbe docker
=====常用命令;
1镜像相关:
查看镜像:
搜索镜像
拉取镜像; docker pull 镜像名称 例如: docker pull centos:7
删除镜像:docker rmi 镜像id
删除所有镜像:docker rmi `docker iamges -q` 这个2个引号是 Esc键 下面的引号
查看运行容器:docker ps
看所有容器: docker ps -a
查看最后一次 运行的容器: docker ps -l
========创建与启动容器:
=============应用部署
docker search 镜像名称 eg:docker search mysql
1:mysql部署
1.1拉取mysq镜像
docker pull centos/mysql-57-centos7
1.2创建容器
docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.23
docker run -di --name=mysqltest -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
33306:是宿主机端口
:3306 容器端口
-p 代表端口映射
-e 代表 添加环境变量 MYSQL_ROOT_PASSWORD 是root用户登录密码
1.2.1: 创建成功之后可以使用sqlyog测试一下
1.3:进去mysql容器 (我运行成功 所以我使用了远程连接 sqlyog)
如果 连接不上就关闭防火墙
docker exec -it tensquare_mysql /bin/bash
1.4:登录mysql
mysql -u root -p
============tomcat部署
1:l拉取镜像
docker pull tomcat:7
2:创建容器
-p :端口映射
-v 目录挂载
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
: 后面的路径是容器内的路径
测试: 上传一个war包(我使用的是FileZilla-3.7.3 这个工具上传的)
1:先给webapps 目录下上传一个war包
2:在浏览器中输入:http://192.168.206.131:9000/你war包的访问路径
==============nginx部署
1:拉取
docker pull nginx
2:创建容器
docker run -di --name=mynginx -p 80:80 nginx
3:测试
浏览器 输入http://192.168.206.131/ 可以看到nginx 欢迎页面
查看nginx 默认配置默认的文件
1:进入容器 docker exec -it mynginx /bin/bash
2:将文件夹上传到远程服务器 (就是你的虚拟机中) 我上传到usr目录下了
3: 将你上传文件夹 放入到 nginx的 /usr/share/nginx/
4;在浏览器中输入 http://192.168.206.131/a.html
========redis部署
1拉取
docker pull redis
2:创建容器
docker run -di --name=myredis -p 6379:6379 redis
测试:通过redis 客户端 连接 redis-cli -h 远程地址 el: redis-cli -h 192.168.xxx.xxx
===========迁移与备份
1:将容器 保存为对象
docker commit mynginux mynginux_1
查看 是否成功 docker images:
基于新创建的镜像在创建一个容器
docker run -di --name=mynginx2 -p 81:80 mynginux_1
测试: 浏览器输入 http://192.168.206.131:81
2:镜像备份
-o 后面是文件名称 mynginux.tar
docker save -o mynginux.tar mynginux_1
测试:输入 dir 可以 看到 当前文件多了一个 mynginux.tar
3:镜像恢复与迁移
先删除mynginux_1镜像 然后执行命令 进项恢复 如果mynginux_1的 容器 mynginx2正在运行 需要关闭
停止容器: docker stop mynginx2
删除容器 : docker rm mynginx2
删除镜像: docker rmi mynginux_1
看看是否删除成功: docker images
镜像恢复
i:输入的文件
docker load -i mynginux.tar
看看是否 成功: docker images
===========DockerFile 常用命令
DockerFile 是由一系列命令和参数构成的脚本 这些命令应用于基础镜像并最终创建一个新的 镜像
1:对于开发人员可以 提供一个完全一致的的开发环境
2:对于测试人员可以直接拿开发时所构建的镜像或者通过dockerfile文件构建一个新的镜像开始工作
3:对于运维人员 部署时可以实现应用的无缝移植
常用命令:
使用脚本创建镜像
案例 构件jdk8
步骤:
1:创建目录
mkdir -p /usr/local/dockerjks8
2:上传jkd
可以使用我之前说的FileZilla-3.7.3 这个工具 也可以使用sftp命令 Alt+p
3:移动到刚才创建 的目录
mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjks8
4进入该目录 构件DockerFile 依次输入命令
vi Dockerfile
FROM centos:7
MAINTAINER:lww
WORKDIR /usr
RUN mkdir /usr.local/java
ADD jdk-8u171-linux-x64.tar.gz /usr.local/java/
ENV JAVA_HOME /usr/java/jdk1.8.0_171-amd64
ENV JRE_HOME usr/java/jdk1.8.0_171-amd64/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$JRE_HOME/bin:$PATH
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
xie写完之后保存: 先按Esc 然后输入:wq
4:构件
-t:镜像名称
. 指定文件夹 这里的. 代表当前目录
docker build -t='jdk1.8' .
查看是否构件成功: docker images 会发现多了一个 jdk1.8的镜像
===========私有仓库搭建
企业内部所使用的 仓库
私有仓库的创建与配置
1:拉取私有仓库对象
docker pull registry
2:启动私有仓库容器
docker run -di --name=myregistry -p 5000:5000 registry
测试 浏览器输入: http://192.168.206.131:5000/v2/_catalog
或者在命令行中:curl http://192.168.206.131:5000/v2/_catalog
看到 {"repositories":[]} 表示私有仓库创建成功 并且内容为空
我的在浏览器没出现 {"repositories":[]} 但是让我下载daemon.json 下载完成 打开展示的也是{"repositories":[]}
3: 修改deamon.josn
vi /etc/docker/daemon.json
添加以下内容
{“insecure-registries”:["192.168.206.131:5000"]}
{
"graph": "/mnt/docker-data",
"storage-driver": "overlay",
“insecure-registries”:"192.168.227.128:5000"
}
此操作用于让docker信任私有仓库地址
为了让配置生效 重启docker
=====私有仓库上传镜像
:1:打标签 比如给jdk1.8 打标签 192.168.206.131:5000 私服地址
docker tag jdk1.8 192.168.206.131:5000/jdk1.8
查看 docker images 会发现多了一个 192.168.206.131:5000/jdk1.8
2:上传
docker push 192.168.206.131:5000/jdk1.8
============错误
[root@mastersysconfig]# docker push 192.168.1.100:5000/registry:2.4.1Thepush refers to a repository [192.168.1.100:5000/registry]Gethttps://192.168.1.100:5000/v1/_ping:https:server gaveHTTPresponse toHTTPSclient
解决:
在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:
{ "insecure-registries":["你自己虚拟机的ip:5000"]}
重启docker。 systemctl restart docker
==============
3;测试
http://192.168.206.131:5000/v2/_catalog
会出现 {"repositories":["jdk1.8"]}
我们现在可以将本地的 jdk和打标签的jdk 删除 然后从私有库中下载
docker rmi jdk1.8
docker rmi 192.168.227.128:5000/jdk1.8
查看是否删除:docker images
docker pull 192.168.227.128/jdk1.8