Docker 的使用

本贴最后更新于 2109 天前,其中的信息可能已经时移世改

Docker 容器技术

Docker 安装与启动

注意:因为 docker 需要联网操作,所以需要将虚拟机配置成 NAT 网络模式。Docker 必须安装在 centos7.0 以上

  1. 挂载资料中提供好的 docker-test 镜像 可以通过 ip addr 命令查看 Linux 系统 ip 地址
  2. 安装 docker yum install docker 通过 docker -v 查看安装的 docker 版本
  3. docker 启动与停止
启动docker:systemctl start docker 停止docker:systemctl stop docker 重启docker:systemctl restart docker 查看docker状态:systemctl status docker 开机启动:systemctl enable docker

Docker 镜像操作

  1. 列出镜像 docker images

  2. 配置使用镜像加速器提交拉取速度。修改/daemon.json 文件,vi /etc/docker/daemon.json

    { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
  3. 重启 docker systemctl restart docker

  4. 拉取 centos 镜像

    docker pull centos:7
  5. 搜索镜像 搜索网络上镜像

    //例如搜索tomcat docker search tomcat
  6. 删除镜像 **注意:**包起 docker images -q 命令的符合是~,是键盘上数字 1 左侧的符合。

    1、 docker rmi IMAGE_ID:删除指定镜像 2、 docker rmi `docker images -q`:删除所有镜像

Docker 容器操作

-i:运行容器 -t:启动后进入命令行 --name=为创建的容器命名 -d:后台启动 -v:目录映射关系 -p:端口映射
  1. 创建交互式容器启动

    // 当前版本 进入后需要执行的解释器 docker run -it --name=mycentos centos:7 /bin/bash 执行完该命令后,直接进入容器内部,退出通过exit,容器不能重名,一旦退出,容器也处于停止状态
  2. 创建守护式容器启动 命令:。 执行完该命令后,。。

    //不进入容器内部 docker run -di --name=mycentos2 centos:7 //进入容器的命令:(exit退出时,容器不会停止) docker exec -it container_name (或者 container_id) /bin/bash
  3. 查看容器

    //查看正在运行的容器:docker ps //查看所有的容器:docker ps -a
  4. 停止与启动容器

    //停止容器:docker stop container_name/ID //启动容器:docker start container_name/id
  5. 删除容器 注意:只能删除停止的容器,正在运行的容器不能被删除

    删除指定的容器:docker rm $CONTAINER_ID/NAME 删除所有容器:docker rm `docker ps -a -q`

部署应用

mysql 部署

  1. 拉取 mysql 镜像

    docker pull mysql
  2. 创建 mysql 容器 (守护式)

// 宿主机端口:容器端口 容器mysql密码 镜像名 docker run -di --name=pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
  1. 进入 mysql 容器
docker exec -it pinyougou_mysql /bin/bash
  1. 在容器中登陆 mysql

    进入命令:mysql -u root -p 退出mysql 命令:quit
  2. 远程登录 mysql **注意:**在 navicat 链接 mysql8 以后的版本时,会出现 2059 的错误,这个错误出现的原因是在 mysql8 之前的版本中加密规则为 mysql_native_password,而在 mysql8 以后的加密规则为 caching_sha2_password。解决此问题有两种方法,一种是更新 navicat 驱动来解决此问题,一种是将 mysql 用户登录的加密规则修改为 mysql_native_password。本文采用第二种方式。

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';#更新一下用户的密码 FLUSH PRIVILEGES;#刷新权限
  1. 在 Navicat 中运行品优购建表语句的 sql 脚本文件,生成品优购数据库、表以及插入测试数据
  2. 查看容器 ip **注意:**在宿主机中查看,因为后续需要容器连接容器数据库
我们可以通过以下命令查看容器运行的各种数据 docker inspect pinyougou_mysql 也可以直接执行下面的命令直接输出IP地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' pinyougou_mysql

tomcat 部署

  1. 拉取 tomcat 镜像

    //版本和tomcat中的环境 docker pull tomcat:7-jre7
  2. 运行 tomcat 容器

    docker run -di --name pinyougou_tomcat -p 9000:8080 tomcat:7-jre7 //也可以用如下方式进行创建 这样将宿主机的/usr/local/myhtml文件夹映射到容器内的/usr/local/tomcat/webapps目录中,privilege是为了修改一些如/etc/sys里面的文件的时候才需要 docker run -di --name=pinyougou_tomcat -v /usr/local/myhtml:/usr/local/tomcat/webapps --privileged=true -p 9000:8080 tomcat:7-jre7
  3. 部署 web 应用 CAS 单点登录部署

    1.修改 cas 系统的配置文件,修改数据库连接的 url

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://172.17.0.3:3306/pinyougoudb?characterEncoding=utf8" p:user="root" p:password="123456" />

    2.将 cas 文件夹上传至宿主机 通过 alt+p 进入上传窗口,上传 cas 文件夹

    // -r 递归上传 put -r E:\item\pinyougou306\apache-tomcat-cas\webapps\cas

    3.从宿主机中,将 cas 文件夹拷贝到到容器/usr/local/tomcat/webapps 目录

    docker cp cas pinyougou_tomcat:/usr/local/tomcat/webapps

    4.测试:地址栏输入:http://192.168.25.143:9000/cas/login 宿主机的 ip 地址

Nginx 部署

  1. 拉取 Nginx 镜像

    docker pull nginx
  2. 创建 Nginx 容器

docker run -di --name=pinyougou_nginx -p 80:80 nginx
  1. 测试 Nginx 访问:http://192.168.25.143

  2. 配置反向代理 从容器拷贝配置文件到宿主机

    //从容器拷贝反向代理文件到本地,修改后再拷贝回容器 默认挂载html目录: /usr/share/nginx/html docker cp pinyougou_nginx:/etc/nginx/nginx.conf nginx.conf

    配置反向代理

upstream tomcat-cas { server 172.17.0.6:8080; } server { listen 80; server_name passport.pinyougou.com; location / { proxy_pass http://tomcat-cas; index index.html index.htm; } }

将修改后的配置文件拷贝到容器

docker cp nginx.conf pinyougou_nginx:/etc/nginx/nginx.conf

重启容器

docker restart pinyougou_nginx

通过 SwitchHosts 新增 ip 地址和域名绑定

192.168.184.88 passport.pinyougou.com

重新启动容器

docker restart pinyougou_nginx

Redis 部署

  1. 拉取 Redis 镜像

    //拉取镜像 docker pull redis
  2. 创建 Redis 容器

docker run -di --name=pinyougou_redis -p 6379:6379 redis
  1. 在你的本地电脑命令提示符下,用 window 版本 redis 测试
redis-cli -h 192.168.247.135

备份与迁移

容器保存为镜像

容器名 保存的镜像名 docker commit pinyougou_nginx mynginx

镜像备份

文件名 容器名 docker save -o mynginx.tar mynginx

镜像恢复与迁移

测试删掉 docker rmi myniginx //恢复加载镜像 docker load -i mynginx.tar

修改 ip 地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33

查看版本

cat /etc/os-release

rpm -qa|grep docker -查看 docker

yum -y remove docker --删除 docker

rm -rf /var/lib/docker

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 928 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...