Docker创建容器时目录挂载
简介在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以实现宿主机和容器目录的双向自动同步
作用Docker可以使用cp命令来实现数据传递,这种方式非常麻烦,通过容器目录挂载,能够轻松实现代码上传,配置修改,日志同步等需求
命令单个目录拥有全部权限
1docker run -it -v /宿主机目录:/容器目录 镜像名
挂载目录只读
1docker run -it -v /宿主机目录:/容器目录:ro 镜像名
多个目录拥有全部权限
1docker run -it -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
挂载目录只读
1docker run -it -v /宿主机目录:/容器目录:ro -v /宿主机目录2:/容器目录2:ro 镜像名
注意同步的是多级目录,可能会出现权限不足的提示,这是因为Centos7中的安全模块selinux把权限禁掉了,我们需要在命令的后面添加--privileged=true来解决挂载的目录没有权限的问题
PS.一般来说,都是创建容器时进行目录挂载,对于已经创建好的容器如果忘了挂载目录但是又想 ...
Docker推送镜像到阿里云
进入阿里云镜像控制台控制台地址:https://cr.console.aliyun.com ,登录
创建命令空间
创建镜像仓库创建仓库
填写仓库信息
选择本地仓库
阿里云提供的命令
推送镜像登录
1docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com
创建一个阿里云专用镜像
1docker tag 要推送的镜像id registry.cn-hangzhou.aliyuncs.com/ledao/tomcat:[镜像版本号]
下图中版本号为1.1的就是刚刚创建的
推送
1docker push registry.cn-hangzhou.aliyuncs.com/ledao/tomcat:[镜像版本号]
查看阿里云的镜像仓库中成功推送的镜像
拉取镜像1docker pull registry.cn-hangzhou.aliyuncs.com/ledao/tomcat:[阿里云的镜像版本号]
Docker推送镜像到hub服务器
注册Docker账号在Docker的hub官网注册,官网地址为:https://hub.docker.com/ ,注册后记住用户名和密码
登录输入登录命令,在输入自己的用户名和密码即可
1docker login
推送镜像推送命令:
1docker push Docker用户名/新镜像名称:版本号
查看在Docker的hub官网登录后即可看到刚刚推送的镜像
拉取镜像查看镜像时有个拉取命令,如下图所示
Docker提交运行时容器为镜像
命令:
1docker commit -a='作者' -m='备注' 运行时容器ID Docker用户名/新镜像名称:版本号
下图中划红线的镜像就是刚刚提交的镜像
Docker映射端口6666时无法访问
问题描述在创建Docker的Tomcat容器时使用了端口映射,我映射的端口号是6666,外部使用谷歌浏览器却无法访问
原因6666端口使用谷歌浏览器、火狐浏览器、新版Edge浏览器是无法访问的,被我们遗忘的IE浏览器却可以访问!!
上述浏览器我都亲自验证过,其它浏览器不清楚情况
更多无法访问的端口号如下:
端口
原因
1
tcpmux
7
echo
9
discard
11
systat
13
daytime
15
netstat
17
qotd
19
chargen
20
ftp data
21
ftp access
22
ssh
23
telnet
25
smtp
37
time
42
name
43
nicname
53
domain
77
priv-rjs
79
finger
87
ttylink
95
supdup
101
hostriame
102
iso-tsap
103
gppitnp
104
acr-nema
109
pop2
110
pop3
11 ...
Docker启动Tomcat成功后外部却无法访问
问题描述在创建Docker的Tomcat容器时使用了端口映射,外部无法通过 http://虚拟机IP:映射的端口号 来访问
原因Docker某些Tomcat版本的webapps是空的,直接访问是访问不到的,但是这些Tomcat有一个webapps.dist目录,这个目录就是原来的webapps目录
解决办法第一种办法使用webapps目录不为空的Tomcat版本,webapps目录不为空的Tomcat版本有:8.0.52、8.5.28,直接使用这两个版本即可
第二种办法使用webapps目录为空的Tomcat版本,删除掉webapps空目录,再将webapps.dist目录命名为webapps
Docker常用命令
Docker命令启动Docker1systemctl start docker
停止Docker1systemctl stop docker
重启Docker1systemctl restart docker
设置开机启动1systemctl enable docker
查看Docker概要信息1docker info
查看Docker帮助文档1docker --help
查看Docker版本信息1docker version
镜像命令查看所有镜像1docker images
目录名称
含义
REPOSITORY
镜像的仓库源
TAG
镜像的标签(版本)同一个仓库有多个TAG的镜像,多个版本;我们用REPOSITORY:TAG来定义不同的镜像;
IMAGE ID
镜像ID,镜像的唯一标识
CREATE
镜像创建时间
SIZE
镜像大小
搜索镜像1docker search 镜像名称
下载镜像下载最新版
1docker pull 镜像名称
下载指定版本
1docker pull 镜像名称:版本号
删除镜像不加版本号就删除最新版
普 ...
Docker使用pull命令时报错
问题描述使用pull命令安装容器时报错:Error response from daemon: Get “https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
解决办法配置国内镜像查看博客:Docker配置阿里云镜像仓库
添加DNS地址如果配置了国内镜像地址还是报错,就添加DNS地址,在/etc/resolv.conf中添加两行代码:
12nameserver 8.8.8.8nameserver 8.8.4.4
重启一下Docker
1systemctl restart docker
Docker配置阿里云镜像仓库
问题描述Docker默认远程仓库是 https://hub.docker.com/ ,下载速度会很慢,所以要配置一下国内镜像
配置过程获取镜像地址进入阿里云容器镜像服务地址:点这里快速进入,登录后复制镜像仓库地址
新建配置文件在/etc/docker文件夹下新建一个名为 daemon.json 的配置文件,内容如下:(链接填自己的)
123{ "registry-mirrors": ["https://*********.mirror.aliyuncs.com"]}
重启daemon1systemctl daemon-reload
重启docker服务1systemctl restart docker
测试下载一个tomcat,命令为:
1docker pull tomcat
发现速度快了很多
CentOS7安装Docker
登录身份使用root身份登录,一般默认都是用root身份
查看系统内核Docker要求CentOS系统的内核版本高于3.10,安装前先查看自己的CentOS系统能否安装Docker
1uname -r
更新yum包1yum update
卸载旧版本如果安装过旧版本的话,没有就跳过此步骤
1yum remove docker docker-common docker-selinux docker-engine
安装软件包安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
1yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源1yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装新版本1yum install docker-ce docker-ce-cli containerd.io
...