Docker操作步骤
基于CentOS 7.x
# 配置好yum源--备份
mv /etc/yum.repos.d/CentOS-Base.repo \
/etc/yum.repos.d/CentOS-Base.repo.backup
# 高兴可以自己百度找阿里的yum源
运行以下指令生成缓存
yum clean all
yum makecache
接着进行安装Docker18.09(可从外部导入docker安装包)
# 也可以在nexus库进行安装 ce代表社区版
yun install -y docker-18.09.7-ce
# 启动参数配置(包括 docker 镜像代理配置) 注:debug等级的设置便于学习
cat << EOF > /etc/docker/daemon.json
{
"log-level":"debug",
"live-restore": true,
"bip": "172.17.192.1/24",
"dns": ["192.48.120.250"],
"storage-driver":"overlay2",
"registry-mirrors": ["http://dockerg.paas.x"],
"insecure-registries": ["dockergroup.paas.x",
"dockerofficial.paas.x", "dockeropen.paas.x",
"dockerg.paas.x", "dockerhubcn.paas.x",
"dockerhub.paas.x","hub.x"]
}
EOF
##刷新配置并重启 docker
systemctl daemon-reload
systemctl restart docker
解读daemon.json
文件
docker 属于 CS 架构, 如下图. 守护进程是它的核心组件, docker 所有的能力都技术以 daemon 来输出.
daemon.json
是 docker 守护进程配置文件, 它主要描述的守护进程的能力, 详见: https://docs.docker.com/engine/reference/commandline/dockerd/.
其中bip
是网桥 ip, 默认情况是可以随意设置的, 默认值为172.17.x.x
只要不冲突即可
storage-driver
的类型有很多, 官方推荐 overlay2, 详见: https://docs.docker.com/storage/storagedriver/select-storage-driver/.,每类存储驱动类型的性能和适用场景都一定差异, 作为初学者, 了解aufs
和overlay2
两种即可.
docker layer
特性就是 写时复制, 默认状态下是只读的, 容器启动后你可以去修改文件系统下的任何文件, 但是它会形成一个新的layer
. 假设原镜像为 10 层, 当容器启动后, 你在容器里修改了任意的文件, 基于 写时复制 的特性, 会临时生成一个 11.th 层. 如果没commit
, 那么这个临时的 11.th layer 将不会生效. 最终导致的结果就是容器重启后, 你写的变更的内容将还原为镜像的原始状态.
registry-mirrors
: 远程镜像库, 默认为docker 官方镜像库, 在公司环境
下一般建议使用镜像私服
insecure-registries
: docker 有自己的安全机制, 默认情况下必须使用 https 访问远程镜像库, 但是内部条件下, 大多只提供 http, 不提供 https, 因此 insecure-registries 配置的远程库, 就可以以 http 访问.
执行docker info查看docker是否安装成功
docker version
#显示以下信息表示安装成功
Server: Docker Engine - Community
Engine:
Version: 18.09.7
API version: 1.39 (minimum version 1.12)
Go version: go1.10.8
Git commit: 2d0083d
Built: Thu Jun 27 17:26:28 2019
OS/Arch: linux/amd64
Experimental: false
查看docker镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
向中心拉取或者在官网拉去Tomcat8的镜像
docker pull tomcat:8.5-jre8
重命名tomcat镜像的名字
# username为自行填写的用户名
docker tag tomcat:8.5-jre8 dokeropen.paas.x/username/tomcat:8.5-jre8
登录并推去中心的镜像仓库
# 登录docker,用的是中心的镜像仓库
$ docker login dockeropen.paas.x
Username (denghm): denghm #你的用户名
Password: #你的密码
Login Succeeded
# 推镜像
$ docker push dockeropen.paas.x/denghm/tomcat
# 结果:提示推送成功
The push refers to repository [dockeropen.paas.x/denghm/tomcat]
1a9d06dd524f: Layer already exists
de6d5c01d209: Layer already exists
4c67d93ae2ce: Layer already exists
blob upload invalid: blob upload invalid
查看Tomcat镜像暴露在外的默认端口
通过 docker history
也可以查看端口, 因为 Dockerfile 里 EXPOSE 是单独一行
# 查看该镜像的内部信息
docker inspect tomcat:8.5.5-jre8
其中在内会发现
"ExposedPorts": {
"8080/tcp": {}
}
查看守护进程的日志
sudo journalctl -u docker
守护进程日志会记录你的所有关于docker的操作
docker运行Tomcat镜像
#####有多种方式运行docker
# 普通运行
docker run tomcat:8.5.5jre-8
# 带有交互模式【-it】/守护模式【-d】和 映射其他端口【-p source:target】
docker docker run -d -p 8081:8080 tomcat:8.5.5-jre8
# 查看docker进程,判断是否启动
docker ps
# 查看docker所有进程
docker ps -a
# 查看日志(容器id通过ps获取)
docker logs -f 容器id
# 进入docker容器
docker exec -ti 容器id /bin/bash
困难:以原来的方式去进入镜像内去修改tomcat的文件,需要在镜像内安装所需的插件,非常麻烦
在容器内执行vim会发现,没有这个插件,需要自行下载
ls
RELEASE-NOTES.txt asf-logo-wide.svg bg-middle.png bg-nav.png favicon.ico tomcat-power.gif tomcat.gif tomcat.svg
WEB-INF bg-button.png bg-nav-item.png bg-upper.png index.jsp tomcat.css tomcat.png
vim index.jsp
bash: vim: command not found
可通过数据卷volume的方式,把某些目录挂载出来,在外部进行修改,方便操作
# 创建数据卷
docker volume create my-vol
# 查看自己创建数据卷的信息,发现挂载后会放在/var/lib/docker/volumes/my-vol/_data目录下
docker volume inspect my-vol
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
"Name": "my-vol",
"Options": {},
"Scope": "local"
}
]
#此时可以通过这个指令把对应的容器内部的/usr/local/tomcat/webapps/ROOT/目录挂载出来
docker container run -d --volume my-vol:/usr/local/tomcat/webapps/ROOT/ -p 8081:8080 tomcat:8.5-jre8
#挂载后运行后,到/var/lib/docker/volumes/my-vol/_data目录下,会发现已经挂载出来
ls
asf-logo-wide.svg bg-middle.png bg-nav.png favicon.ico RELEASE-NOTES.txt tomcat.gif tomcat-power.gif WEB-INF
bg-button.png bg-nav-item.png bg-upper.png index.jsp tomcat.css tomcat.png tomcat.svg