环境查看 系统内核 3.10 以上 :uname -r Cat /etc/os-release
安装docker社区版:yum install docker-ce
启动docker:systemctl start docker
基本命令:
docker version #显示 docker 版本信息
docker info #显示 docker 的系统信息,包括镜像和容器数量 、查看仓库地址
docker comm --help #帮助命令
用doker部署一个软件,如部署nginx:
1)搜索镜像:docker search nginx \or https://hub.docker.com/_/nginx )
docker search mysql --filter=STARS=500 #搜索出来的镜像 STARS 大于 500
2)拉取镜像(下载):docker pull nginx == docker.io/library/mysql:latest
Docker pull mysql:5.7 #下载指定版本
3)查看本机是否有此镜像:docker images
4)启动容器
5)验证nginx是否安装成功:curl localhost:3344
查看镜像元数据:docker inspect 容器id
删除镜像:
docker rmi -f 87eca374c0ed #删除镜像-f 指定 id
docker rmi -f $(docker images -q) #删除所有查询到的 id,删除全部容器
docker rmi -f 镜像 id 镜像 id 镜像 id #删除多个镜像
新建并启动容器:
docker run [可选参数] image
#参数说明
--name="Name" 容器名字 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口: -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root用户的密码
--network=huicenetwork:设置专属网络环境
可以 docker run 可直接下载镜像并启动容器:
默认容器启动之后是在后台运行,停止了容器之后,容器还存在,还可以查到,加上--rm 停止后直接删除,可以查看 docker run --help
# docker run --help|grep rm
docker run -it --rm tomcat:9.0
运行容器:docker run -d -p 3355:8080 --name tomcat01 tomcat(--name是将tomcat镜像对应的容器名改为tomcat01)
docker run -d --name nginx01 -p 3344:80 nginx (3344是主机防火墙,80是docker里的nginx防火墙)
验证nginx是否安装成功:curl localhost:3344
新建并启动容器:
docker run -d centos
#后台启动 centos,docker ps,发现 centos 停止了 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker 发现没有应用,就会自动停止
docker run -it centos /bin/bash(可先下载centos镜像,若没下载此命令会自动下载,然后启动容器,执行完此命令后也会进入此容器)
查看容器下的目录文件:ls(先进入容器,再输入ls / 可看centos的根目录)
备注:可以先不映射本地ip端口、文件,先启动运行容器,然后映射容器中文件到本地文件夹,再删除容器 后,重新启动并运行容器(这次运行时加上映射的端口和文件等)
1、启动 docker run --name perfree -d -p 8080:8080 perfree/perfree:v2.3.0
//映射docker项目的resources文件夹和config文件夹到刚刚创建的文件夹中
2、将/config从perfree容器下拷贝到宿主机/data/prefree目录下
docker cp perfree:/resources/ /data/prefree
docker cp perfree:/config/ /data/prefree
3、停止并删除容器
docker stop perfree
docker rm perfree
4、
挂载资源启动(这样后期更新所有的数据都会在宿主机内,不会造成文件丢失)
docker run -v /data/perfree/config:/config -v /data/perfree/resources:/resources --name perfree -d -p 7080:8080 perfree/perfree:v3.1.1
命令解析:docker run -v [宿主机目录]/config:/config -v [宿主机目录]/resources:/resources --name perfree -d -p 宿主机端口:8080 perfree/perfree
查看容器:
docker ps #列出当前正在运行的容器
docker ps -a #列出当前正在运行的容器和历史运行过的容器
docker ps -n=9 #列出最近运行的容器
docker ps -a #只显示容器的编号
启动和停止容器的操作:
docker start 容器 id
docker restart 容器 id
docker stop 容器 id
docker kill 容器 id
进入容器:docker exec -it tomcat01 /bin/bash(进入容器后开启一个新的终端,可以在里面操作,注:要先确定容器已启动)
docker attach 容器 id((进入的是正在运行的容器,而不是开启新的窗口)
退出容器:
1、容器里面关闭容器,这种情况退出方式多样,存在着是否保存他的运行情况,Ctrl+P和Ctrl+Q分别按,可以退出容器,让容器仍运行,
快捷键Ctrl+D和命令exist退出容器,不运行
1.docker run :只有在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器的时候,只需要使用命令 docker start 就可以。 docker run 相当于执行了两步操作:将镜像(Image)放到容器(Container)中,这一步过程叫做 docker create,然后将容器启动, 使之变成运行时容器(docker start)。
2.docker start作用是:重新启动已经存在的容器。也就是说,如果使用这个命令,我们必须先要知道这个容器的 ID、或者这个容器的 名字,我们可以使用 docker ps -a命令找到这个容器的信息
docker run :根据镜像创建一个容器并运行一个命令,操作的对象是 镜像;
docker exec :在运行的容器中执行命令,操作的对象是 容器。
删除容器:
docker rm 容器 id #删除指定的容器,不能删除正在运行的容器,强制删除 rm -f
docker rm -f $(docker ps -aq) #删除指定容器
docker ps -a -q|xargs docker rm #删除所有容器
看日志(在容器外面,本机上执行):
docker logs -ftn 10
docker logs
docker logs -f -t --tail 10 a3e3706e3210
docker logs -f -t -n 10 a3e3706e3210
从容器内拷贝文件到主机上(在主机上执行命令):
docker cp read escape sequence容器 id:容器内路径 目的主机路径
docker cp asdihfwle1:z.python /
从主机拷贝程序到 alfresco 容器:docker cp mysql-bin.jar \alfresco:/usr/local/tomcat/lib/
#自己编写 shell 脚本,让他一直运行,“while true;do echo test zsw;sleep 1;done”
[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo zswdtest;sleep 1;done" 注意要是小写的
查看应用 cpu 和内存网络 IO 使用率:docker stats(在容器外面,本机上执行)
[CONTAINER]:以短格式显示容器的 ID。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。
查看容器中进程信息 ps: docker top 容器 id
挂载(容器数据卷):
Docker 容器中产生的数据,同步到本地! 这就是卷技术!目录的挂载,将我们容器内的目录,挂载到 Linux 上面!
容器关闭的时候,在主机创建的文件,也会同步到容器 好处:以后修改只需要在本地修改即可,容器内会自动同步!
1、指定路径挂载
直接使用命令来挂载 -v: docker run -it -v 主机目录:容器内目录 -p 主机端口:容器内端口 镜像名 /bin/bash
举例: docker run -it -v /home/test:/home centos /bin/bash #把虚拟机 home 目录,挂载到当前主机/home/test 目录下,此时改动一个目录, 另一个目录内容也跟着改动
查看挂载是否成功:docker inspect 容器 id
将tomcat02镜像挂载后,1容器名称怎么是个id,2容器里怎么和镜像原来里面的目录不一样呢。?()
挂载到本地路径下:
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
关闭防火墙和 selinux
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config 修改配置文件 SELINUX=disabled 删除 mysql 后挂载内容仍然存在
2、匿名挂载:
-v 只写了容器内的路径:docker run -d -P --name nginx01 -v /etc/nginx nginx
查看所有卷的情况 docker volume ls
3、具名挂载
-v 卷名:容器内路径
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
查看挂载路径 docker volume inspect juming-nginx
所有docker容器内的卷没有指定目录的情况下都在:/var/lib/docker/volumes/xxx/_data
多个容器之间数据共享(--volumes-from):
启动 3 个容器,通过我们刚才自己写的镜像启动(docker01父容器)
docker run -it --name docker01 zsw/centos
docker run -it --name docker02 --volumes-from docker01 zsw/centos:latest
docker run -it --name docker03 --volumes-from docker01 zsw/centos:latest
修改一个容器里面的 volume 其它都变动,
Docker 的卷标 (volumes) 是 独立的文件系统。它们并非必须连接到特定的容器上。
1. 查看所有卷标
docker volume ls
2. 查看批量的卷标
$ docker volume ls | grep mysql
local vagrant_mysql
3. 查看具体的 volume 对应的真实地址
$ docker volume inspect vagrant_mysql
[
{
"Name": "vagrant_mysql",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/vagrant_mysql/_data"
}
]
docker-compose 单机部署项目!:docker-compose up -d wordpress.yml
docker stack 部署,集群部署!:docker stack deploy wordpress.yml
docker-compose.yml用于描述docker容器之间的依赖关系,可以一键对多个服务进行启停操作
docker-compose进行部署项目:
1、创建要部署项目的存放目录,如在root下创建个test目录:mkdir /root/test/
2、将网盘文件 docker-compose.yml 上传到/root/test/目录下
3、构建新镜像:docker-compose build
docker-compose的工作流程就是:当你改变本地代码之后,先执行docker-compose build构建新的镜像,
然后执行docker-compose up -d取代运行中的容器
4、运行新镜像:容器初始化,在/root/test/目录下执行: docker-compose up -d
5、查看运行起来的容器:docker ps
有时间了照着此文档操作一遍---------参考地址:https://blog.51cto.com/u_12528551/5900320
https://blog.csdn.net/s619782146/article/details/125906199
网盘下载配置文件:conf.zip
上传至 Linux 目录:/mydata/services/web/nginx
解压缩配置文件 unzip conf.zip
) 网盘下载项目文件:fecshop.zip 并上传至 Linux 目录:/mydata/app/
2) 解压缩项目文件 unzip fecshop.zip
设置权限
docker-compose exec php bash
cd /www/web/fecshop
chmod +x init
./init
exit
重启:
docker-compose restart
docker-compose start #启动
docker-compose stop #停止
启动:docker-compose up -d wordpress.yml
停止:docker-compose down/CTRL+C
docker-compose ps
docker compose管理多个容器
1.Dockerfile 应用打包为镜像
2.Docker-compose yaml 文件(有3层)(定义整个服务,需要的环境,web\redis)完整的服务!
第一层 version
第二层 service
第三层其它配置
version: "3.9" #版本
services: #服务
服务 1:web #服务配置
images : 使用镜像
build:
depends_on(依赖关系-启动顺序,和其他容器链接 使用这里个化重点
-db
-redis
network
服务 2:redis
服务 3:
#其它配置
volumes: - 映射宿主主机文件路径:容器主机文件路径
networks:
configs:
ports: - 映射宿主主机端口:容器端口
links: 容器别名
restart: no是默认的重启策略,在任何情况下都不会重启容器。 指定为always时,容器总是重新启动。 如果退出代码指示出现故障错误,则 on-failure将重新启动容器
标签:容器,compose,run,--,命令,镜像,docker From: https://www.cnblogs.com/fanf/p/17385013.html