docker入门和tomcat部署

宿主机环境

centos7.0

安装docker

删除旧的版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装docker CE

安装docker CE有以下方式:

  • 大量用户通过设置docker repositories来安装
  • 通过RPM安装包的方式安装
  • 在测试和开发环境,还可以通过convenience scripts脚本来安装 我使用docker repositories安装。

设置docker repositories
1.先安装需要的软件包,yum-utils、yum-config-manager、device-mapper-persistent-data和lvm2

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

2.设置源

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3.安装docker ce

sudo yum install docker-ce docker-ce-cli containerd.io

上面命令默认安装最新的latest版本。如果不想安装最新的版本,可以安装特定的版本。
查看线上docker版本

yum list docker-ce --showduplicates | sort -r

安装特定版本

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

4.启动docker

sudo systemctl start docker

docker默认从国外镜像下载文件,网速非常慢,可以更换成国内的镜像,对于使用systemd的系统,请在 /etc/docker/daemon.json 中写入如下内容,如果文件不存在可以新建该文件

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com"
  ]
}

安装部署tomcat

1.查看本地镜像

docker image ls

可以看到本地没有tomcat镜像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        5 months ago        1.84kB

2.下载tomcat镜像

docker pull tomcat

再次查看本地镜像

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              5377fd8533c3        3 days ago          506MB
hello-world         latest              fce289e99eb9        5 months ago        1.84kB

3.通过镜像运行容器

docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat
  • --name tomcat 容器名称
  • -p 8080:8080 将容器的8080端口映射到宿主机的8080
  • -v $PWD/test:/usr/local/tomcat/webapps/test 将容器的一个目录映射到宿主机的一个目录
  • -d tomcat 通过镜像名称指定哪个镜像

4.查看当前运行的容器

$ docker ps  

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
c588a96d275e        tomcat              "catalina.sh run"   6 seconds ago       Up 4 seconds        0.0.0.0:8080->8080/tcp   tomcat

5.修改tomcat配置
如果要修改tomcat的配置,有多种方式,我通过进入容器里面像一般linux服务器一样修改配置文件在将当前容器重新生成一个新的镜像来实现。

docker exec -it c588a96d275e bash

docker容器的操作系统是ubuntu版本的linux,运行apt-get update和apt-get install来安装没有的命令。
比如已经进入容器通过修改tomcat的server.xml文件修改tomcat的请求端口为8090,退出容器后,再次查看当前运行的容器。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
c588a96d275e        tomcat              "catalina.sh run"   29 minutes ago      Up 29 minutes       0.0.0.0:8080->8080/tcp   tomcat

使用 commit 命令重新生成新的镜像

docker commit -a "linjinzhi" -m "change tomcat port to 8090" 896c8f3abf78 tomcat_8090:v1.0

查看当前的本地镜像

docker images

如下

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat_8090         v1.0                4826f527e496        5 seconds ago       554MB
tomcat              latest              5377fd8533c3        3 days ago          506MB
hello-world         latest              fce289e99eb9        5 months ago        1.84kB

运行新的容器

docker run --name tomcat_8090 -p 8090:8090 -v $PWD/test:/usr/local/tomcat_8090/webapps/test -d tomcat_8090:v1.0

如下打印信息并请求8090端口说明新的tomcat已经运行

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                              NAMES
be03c552cad2        tomcat_8090:v1.0    "catalina.sh run"   10 seconds ago      Up 9 seconds        8080/tcp, 0.0.0.0:8090->8090/tcp   tomcat_8090
896c8f3abf78        tomcat              "catalina.sh run"   32 minutes ago      Up 32 minutes       0.0.0.0:8080->8080/tcp             tomcat

备注

1.删除本地镜像

docker rmi <IMAGE ID>

2.kill掉一个容器

docker kill <CONTAINER ID>

当重新run一个容器时却爆如下异常

$ docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat
docker: Error response from daemon: Conflict. The container name "/tomcat" is already in use by container "c588a96d275eb010480029011d05023796012f8bf2735e2fa9590958084b9b62". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.

查看全部运行种的容器发现容器实际上还存在

docker ps -l

打印出

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
c588a96d275e        tomcat              "catalina.sh run"   About an hour ago   Exited (137) 14 minutes ago                       tomcat

删除这个容器

docker rm c588a96d275e

再次run的时候就可以了。

参考

参考

docker官网:https://docs.docker.com/install/linux/docker-ce/centos/
docker教程:https://www.runoob.com/docker/docker-tutorial.html https://yeasy.gitbooks.io/docker_practice/kubernetes/
docker hub:https://hub.docker.com/
docker常用命令:https://docs.docker.com/engine/reference/run/

转载于:https://my.oschina.net/ChiLin/blog/3063814

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值