Docker 的使用

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

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

    492 引用 • 926 回帖

相关帖子

欢迎来到这里!

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

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