docker使用

为什么要使用docker:

  如果需要发布项目到多台机器,按照原来得方式,需要在N台服务器上进行下载安装对应得软件,执行N次相同得发布步骤,并且要进行环境兼容性得测试;一台linux上部署多个项目之间会有干扰,比如多个tomact端口不能重复,需要去改配置文件;docker是开源的应用容器引擎,可以让开发者将项目及依赖打包到成镜像,放入一个可移植的容器中

  

虚拟化和docker的区别:

  一般的虚拟化指的是:服务器硬件系统安装操作系统,系统上安装虚拟化管理软件,安装虚拟机再进行虚拟化软件项目的安装

  docker:服务器硬件系统安装操作系统,安装docker引擎,进行虚拟化安装

  docker是直接使用操作系统的资源进行虚拟化, 可以达到秒级启动应用,对资源的利用率高,可以在一台服务器上部署多个docker容器,多个项目

docker三大组件:

容器、镜像、仓库

容器是镜像的一个运行实例 ,如果说虚拟机是模拟运行的一整套操作系统和跑在上面的应用,那么docker容器就是独立运行的一个或一组应用,以及应用所必须的环境

环境:centos7、jdk8、docker

1.安装docker: yum install -y docker  

yum命令的安装参考https://www.cnblogs.com/Shawn-Liu/p/11627759.html

安装完后,docker version查看只有client,并提示Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决:开启docker服务 systemctl restart docker,再重新查看docker version正常

2.下载镜像:以redis3.0为例

https://hub.docker.com/docker仓库搜索redis,点击redis,选择tags,搜索需要的版本号,根据操作系统选择合适的

3. 下载速度比较慢,可以使用加速器:(本次使用的是阿里云的加速器)

找到镜像加速器,把下面的命令复制到命令行执行,

如图 执行完重新拉去redis3.0镜像,明显速度加快

 4.镜像查看删除

docker images --查看所有镜像

docker rmi +IMAGE ID  或者 docker rmi +REPOSITORY:TAG   --删除对应的镜像

5.创建启动、停止容器

docker create -p 16380:6379 --name redis docker.io/redis:3.0    --创建容器--docker.io/redis:3.0 表示需要创建容器的镜像名

docker ps -a 查看所有的容器(包括运行和未运行的)

docker start  + CONTAINER ID   --启动容器

启动完就可以连接redis了,redis-cli -h 192.168.138.134 -p 16380 -n root -a root

创建并启动容器(包括create和start命令):docker run -d -p 16380:6379 --name redis docker.io/redis:3.0               --命令中的-d是表示后台运行

停止容器:docker stop +容器名

6.进入容器

docker exec -it c1d91f507ebd bash    -- i表示用标准方式输出  t表示分配一个伪终端 bash:进入容器执行的命令

进入容器之后就可以连接redis 设置redis数据,并在外部连接redis查看数据

7.查看启动日志:docker logs -f c1d91f507ebd

8.仓库:存镜像

   8.1将自己的镜像上传的阿里云私服仓库

错误:

[root@localhost heqs]# docker logs b5ab709e8422
2020-08-02 06:45:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.31-1debian10 started.
find: '/var/lib/mysql/': Permission denied
chown: changing ownership of '/var/lib/mysql/': Permission denied

没权限导致的加上--privileged=true 正常启动

创建并启动容器,docker run -d  --name mysql4 -v /home/heqs/mysql3:/var/lib/mysql -p 13307:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true 8679ced16d20

--privileged=true 给容器加上特定权限

-v /home/heqs/mysql3:/var/lib/mysql    指定宿主机的文件与容器文件的对应

9.dockerfile

  内容:基础镜像,编辑者信息、镜像操作指令,容器启动时执行的命令

原文地址:https://www.cnblogs.com/hqsbrx/p/13424490.html