常用命令
登录
往docker hub上上传东西的话必须先登录,docker login
镜像打包
docker tag 426789501106 tomz1115/202199:tagname
镜像上传
docker push tomz1115/202199:tagname
查看
docker container ls
查看路径
pwd
查看镜像
docker image ls
查看持续跟踪的日志
docker container logs
退出
Ctrl C,exit
重启docker
systemctl restart docker
常用操作
新建数据库
新建端口号为25306的数据库
docker container create --name mysql -e MYSQL_ROOT_PASSWORD=root -p 25306:3306 mysql
查看
docker container ls
跑起来
docker container run 2
打开防火墙
firewall-cmd --zone=public --add-port=25306/tcp --permanent
重新加载
firewall-cmd --reload
创建容器(标准化创建容器方式)
镜像的id是一定的,容器的id是随机生成的
docker container run -it -v /docker/mysql:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=fps -e MYSQL_USER=scott -e MYSQL_PASSWORD=tiger -p 13306:3306 -d mysql:5.7
外部挂载到里部,里部挂载到外部
左侧数组机,右边容器
不允许整个目录挂载,所以是空的
这是内部挂载到外部,右边弄到左边,就算删除的时候,外部的文件也是不删除的,当再次创建的时候外部有文件,内部没文件,这时候就是往里面挂载了,哪边有数据哪边往另一边挂,这个时候外部覆盖掉里部,这时候容器的数据又回来了,新的容器里面装着之前的数据,这就是容器化的另外一个优势
这时候说明var/lib下的文件允许挂载
进入容器
docker container exec -it ca bash
停止容器
docker container stop ca
开始容器
docker container start ca
删除容器非运行
docker container rm ca
强制删除容器
docker container rm -f ca
容器也是Linux系统结构,现在我们的是window系统上面安装centos7.6系统,容器安装了docker软件有mysql容器,centos7.6系统是容器的数组机
把容器打成镜像
把容器做成镜像,把镜像给别人,别人在转成容器直接用
打包
docker container commit 50e my:v5.7.1
查看镜像
docker image ls
运行镜像
docker container run -it -p 33306:3306 -d my:v5.7.1
删除镜像
docker rmi ssss
主机centos的文件和容器里面的互相拷贝
必须要用主机完整版id,会用挂载这种就用的很少了,如果容器里面的好多文件不让挂载,可以用这种把容器里面的拷出来
查看log日志
一些参数
调试的话先ping web看网通不通
查看持续跟踪的日志
docker container logs
Ctrl C退出
自启动容器
重启docker
systemctl restart docker
容器总是启动
docker container update --restart “always” cd3
docker启动容器就启动,重要的再设置,启动速度和centos的内存相关联,比如数据库啥的可以设成自启动,可以在创建的时候或者run的时候就设置成为自启动
创建wordpress学习
下载
docker pull wordpress
启动
docker container run -it -p 11080:80 -d wordpress
冒号前面是被映射的端口,后面是可以开放的端口,wordpress允许80端口
如果出错,打开防火墙
开始
在网址中打开192.168.137:11080
新建MySQL容器
新建个MySQL容器新建一个数据库名字和网址让输入的名字保持一致
docker container run -it -v /docker/mysql:/var/lib/mysql -eMYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=fps -e MYSQL_USER=scott -e MYSQL_PASSWORD=tiger -p 23306:3306 -d mysql:5.7
如果用第二种方式link分为外网(centos的系统)内网访问,内网更安全,
内部MySQL和wordpress交互了就
查找内网ip
[root@localhost ~]# docker container run --link unruffled_varahamihira -e WORDPRESS_DB_HOST=unruffled_varahamihira:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=root -e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_TABLE_PREFIX=wp_ -p 11080:80 -d wordpress
这个name是数据库随机生成的名字 还有就是root前不能有空格否则认为两条语句
网络学习
第三种链接方法,把link扔了,这个更安全,如果不需要外网访问连映射都不用写,23306不用谢,这时候只有wordpress才能访问这个MySQL
查看
docker network ls
某一个容器
docker network inspect a8
创建一个网络
docker network create myssss
将容器连接到网络
docker network connect 13e (wangluo) 63ee(容器)
这个容器就放到了两个网络里面了
将容器断开网络
docker network disconnect 13e (wangluo) 63ee(容器)
compose学习
下载网址 https://docs.docker.com/compose/install/
使用
新建一个yml文档,
填写service服务
看是否能通过
docker-compose -f /docker_compose/mysql5.7_com.yml config
查看帮助
docker-compose -f /docker_compose/mysql5.7_com.yml up --help
创建
docker-compose -f /docker_compose/mysql5.7_com.yml up -d
创建的时候自定义名字
docker-compose -f /docker_compose/mysql5.7_com.yml -p com up -d
两个不要一起用有bug
暂停的时候要有名字用名字stop
docker-compose -f /docker_compose/mysql5.7_com.yml -p test stop
conpose自己的删除
docker-compose -f /docker_compose/mysql5.7_com.yml rm
自命名的话也要加自己的名字
如果删不了就container删除
conpose先暂停再删除
docker-compose -f /docker_compose/mysql5.7_com.yml rm -s
conpose启动
docker-compose -f /docker_compose/mysql5.7_com.yml start
conpose全部删除包括网络
docker-compose -f /docker_compose/mysql5.7_com.yml down
conpose更新
docker-compose -f /docker_compose/mysql5.7_com.yml up -d
更新的话就是直接把更改的覆盖掉
如果两个默认的在同一个文件夹,那么会覆盖
如果默认和自命名在同一个文件夹,那么会有两个network,两个container创建成功,只有第一个启动了
如果默认的在两个文件夹,那么会建两个network,两个container创建成功,只有第一个启动了
如果自定义的在两个文件夹,那么新建两个network,两个container创建成功,只有第一个启动了
填写service服务mysql+WordPress
version: "3.9" # optional since v1.27.0 services: dev_mysql: image: mysql:5.7 ports: - "23306:3306" - "33060:33060" volumes: - /docker/mysql/data:/var/lib/mysql - /docker/mysql/conf:/etc/mysql/conf.d - /etc/localtime:/etc/localtime:ro environment: - MYSQL_DATABASE=wordpress - MYSQL_ROOT_PASSWORD=root - TZ="Asia/Shanghai" dev_wordpress: image: wordpress ports: - 18080:80 environment: WORDPRESS_DB_HOST: dev_mysql WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: root WORDPRESS_DB_NAME: wordpress volumes: - /docker/wordpress/data:/var/www/html
在一个网络内两个yml可以连通,两个不同的网络内两个yml如何连通?创建一个网络,让他俩加入
version: "3.9" # optional since v1.27.0 networks: compose_net: external: true services: dev_wordpress: networks: - compose_net image: wordpress restart: always ports: - 18080:80 environment: WORDPRESS_DB_HOST: dev_mysql WORDPRESS_DB_USER: root WORDPRESS_DB_PASSWORD: root WORDPRESS_DB_NAME: wordpress volumes: - /docker/wordpress/data:/var/www/html
引用一个外部的compose的话用下面这个
dockerfile学习
docker私服搭建
为了保证自己数据的安全不把数据放在共有的上面去,有些为了解决下载网速的问题,所以搭建了一个私服,很多公司都是走的私服,有些甚至不让连外网,用私服还可以严格的控制版本,dockerhub共有最多上传五个
学习官方的私服
docker image pull registry
version: "3.9" # optional since v1.27.0\ services: registry: image: registry ports: - "58888:5000" environment: - MODE="standalone" - TZ="Asia/Shanghai"
{
“insecure-registries”:[“192.168.137.2:58888”]
}
第一条命令里面要修改文件
docker image push 192.168.137.2:58888/registry:v1
第三方的私服
上面不显示版本不好用,用第三方的私服,
dockerfile构建镜像
指令都大写,指令自上而下执行,由基础镜像组成,hub上任何一个镜像都可以作为基础镜像,越纯净越安全,越好
上面是文件的版本,下面是镜像的版本
# Version:0.0.1 # dockerFile 注释 FROM ubuntu:14.04 as Ubuntu # 指定一个已存在镜像(基础镜像) MAINTAINER tomz1115 # 设置作者 RUN apt-get update # 运行当前命令 RUN apt-get install -y nginx # 支持exec格式,例 RUN ["apt-get","install","-y","nginx"] EXPOSE 80 # 开放端口 FROM nginx #COPY dist/ /usr/share/nginx/html/
docker image build -f /docker_compose/nginx -t ‘tomz1115/nignx:v1’ .
Cockpit
安装
centos上
yum install cockpit
启动
systemctl start cockpit
systemctl enable cockpit.socket
打开
设置防火墙
firewall-cmd --add-service=cockpit --permanent
success
firewall-cmd --reload
success
虚拟机改ip