15分钟入门Docker

15分钟入门Docker

  • 安装Docker
    • 我的环境
    • 安装步骤
    • 配置 Docker 加速镜像
    • Docker 常用命令
    • Docker 入门实战: 安装tomcat
      • 抓取镜像
      • 创建容器
      • 查看运行日志
      • 进入容器控制台
      • 复制宿主机文件到 docker 容器中
      • 挂载宿主机目录(数据卷)

安装Docker

参考链接: https://mp.weixin.qq.com/s/_sL-xGoxT_i2_zJiJkV7Yw

我的环境

​ 系统环境: CentOS 7.6

安装步骤

  1. 安装需要的软件包

    yum install -y yum-utils device-mapper-persistent-data lvm2
    # device-mapper-persistent-data lvm2是干嘛的?
     # docker要想数据存储就必须要安装这两个,这两个是为了docker做数据存储用的。
    
  2. 添加国内镜像

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    sudo yum makecache fast
    
  3. 更新安装Docker-CE

    # Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月, 此处我们安装社区版本
    sudo yum -y install docker-ce
    
  4. 验证是否安装成功

    sudo service docker start
    docker version
    
  5. 安装docker版hello world 尝试

    docker pull hello-world
    docker run hello-world
    

配置 Docker 加速镜像

  1. 打开网站

    https://www.aliyun.com/

  2. 搜索“容器镜像服务 控制台”

    img

  3. 点击“镜像加速器”

    img

  4. 最下方操作文档切换到centos, 复制操作命令执行

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  5. 大功告成

    上面1-5步骤执行完成后就大功告成了,就可以用docker pull xxx来测试下了,速度贼拉快。

Docker 常用命令

docker -h		# docker 帮助说明
docker images	# 查看当前所有镜像
docker ps 		# 查看当前正在运行中的容器
docker run 		# 根据镜像生成一个新的容器
# 镜像与容器间的关系: 从服务器抓取的是镜像, 每次运行docker run 都将产生新的容器, 一对多的关系, 我们运行的所有东西都在容器中, 各容器之间互不干扰. 删除镜像前, 需将所有依据镜像生成的容器删除
docker rm xxx	# 根据 容器id/name 删除对应容器
docker rmi xxx	# 根据 镜像id/name 删除对应镜像

Docker 入门实战: 安装tomcat

抓取镜像

docker pull tomcat

创建容器

docker run -p 10000:8080 -d tomcat
# docker run tomcat 表示用 tomcat 的镜像创建一个容器, 后续我们所有操作均为容器操作
# 其中 -p 10000:8080 -d 为启动参数
# -p 10000:8080 代表将容器内部端口 8080 映射到服务器 10000 端口, 后续我们即可通过访问服务器的 10000 端口访问到容器内的 8080 端口
# -d 表示在后台启动容器, 如果没有这句话, 我们的控制台将打印如下语句, 使用 ctrl + c 将关闭该容器

15分钟入门Docker_第1张图片

浏览器访问宿主机Ip:10000 (宿主机: 运行docker的电脑即为宿主机)

http://xxx.xxx.xxx.xxx:10000

15分钟入门Docker_第2张图片

404?那是因为新版本tomcat将webapps下面的内容都删了,所以找不到了原来的index.jsp文件了。这又有问题了,我怎么进入我容器里的tomcat目录?比如看个log,找到webapps给他添加文件等操作。

查看运行日志

doceker ps		# 查看当前正在运行的容器
docker logs CONTAINER_ID	# 根据查到的容器 id, 查看日志 

15分钟入门Docker_第3张图片

进入容器控制台

# 使用上一步获取的 CONTAINER_ID 进入容器内部
docker exec -it CONTAINER_ID /bin/bash
ls -l	# 进入容器后会默认进入 tomcat 目录下, 使用该命令查看当前目录下所有文件
# 可以看到 webapps 和 webapps.dist 两个文件夹, webapps 空空如也, webapps.dist 这个文件夹是原有 tomcat 的主页面
# 将 webapps 删除, webapps.dist 重命名为 webapps
rm -rf webapps	# 删除 webapps 文件夹
mv webapps.dist webapps # 重命名
exit # 退出当前容器

等待一会, tomcat 将会自动重新部署 webapps, 我们重新打开 http://xxx.xxx.xxx.xxx:10000 即可看到熟悉的tomcat画面

停止和重新启动容器

docker stop CONTAINER_ID	# 根据 容器ID 停止容器
docker ps -a				# 查询全部容器, 包括已停止的容器
docker start CONTAINER_ID	# 根据 容器ID 启动现有容器
# 也可以直接使用 docker restart CONTAINER_ID 命令进行重启容器

那我们怎么让他运行我们自己的jar包呢?

复制宿主机文件到 docker 容器中

宿主机的 war 包路径在 /usr/local/war/demo.war

docker cp /usr/local/war/demo.war CONTAINER_ID:/usr/local/tomcat/webapps
docker restart CONTAINER_ID

浏览器访问宿主机Ip:10000/demo, 即可看到对应war包已启动

http://xxx.xxx.xxx.xxx:10000/demo

挂载宿主机目录(数据卷)

即让容器内的 文件夹映射到宿主机文件夹

# 挂载目录需要新建一个容器
docker run -p 10001:8080 -d -v /usr/local/war:/usr/local/tomcat/webapps tomcat

数据卷是挂载目录的一个高级用法

# 挂载目录需要新建一个容器, 与上面相比, 这里只多了一个 --name tomcatVol 
# 数据卷其实就是启动一个特殊容器时可以指定 name, 其他容器可通过 name 引用这次的挂载配置
docker run -p 10002:8080 -d -v /usr/local/war:/usr/local/tomcat/webapps --name tomcatVol tomcat
docker run -p 10003:8080 -d --volumes-from tomcatVol tomcat
docker run -p 10004:8080 -d --volumes-from tomcatVol tomcat

下次我们再说说 Dockerfiledocker-compose 的使用, end~

你可能感兴趣的:(Linux服务器)