美文网首页
关于docker实战

关于docker实战

作者: e5bda6e7a596 | 来源:发表于2019-12-11 09:41 被阅读0次

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/.,每类存储驱动类型的性能和适用场景都一定差异, 作为初学者, 了解 aufsoverlay2 两种即可.
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

相关文章

网友评论

      本文标题:关于docker实战

      本文链接:https://www.haomeiwen.com/subject/qhvzhctx.html