docker search nginx 搜索命令
docker images 查看本地有哪些镜像
docker rmi nginx 删除镜像
docker save nginx > /tmp/nginx.tar.gz 导出镜像
docker load < /tmp/docker/nginx.tar.gz 导入镜像
ctrl +p +q 容器后台运行,在容器里面镜像操作
docker ps 显示正在运行的容器
docker ps -a 显示所有的容器,包括已经关闭的容器
docker rm -f 2f34bb412230 删除正在运行的容器/--把正在运行的容器关掉
docker exec -it mynginx sh 进入容器,但是的先保证容器是开启状态
docker logs mynginx -----查看日志 -f 相当于tailf
docker run -it alpine sh 指定alpine镜像进入容器,名字自动分配
docker run -it --name mynginx nginx 运行一个容器,指定nginx
docker run -it --rm --name mynginx nginx 跟上这的差别就是自动会关闭
docker inspect b0184efd2186 查看容器的详细信息
docker exec -it mynginx sh 进入容器,但是的先保证容器是开启状态
docker logs mynginx -----查看日志 -f 相当于tailf
例子1:
docker run -it --rm --name myceshi centos bash 以centos镜像为基础run一个容器
例子2:
docker run -p 82:80 -it --rm --name myceshi docker.io/centos_nginx bash 指定端口
进入正在运行的容器的例子:
docker run -it centos(镜像名字) bash #执行该命令后就会进入到该容器中
docker commit -m 'add ningx images' 容器的名字 叫什么名字
docker commit -m 'add centos images' zen_volhard(名字) xiaoqiang/nginx(改成的名字) ---制作镜像
备份容器中的数据库
docker exec -it zentao-server-prod /opt/zbox/run/mysql/mysqldump -uroot -p123456 -B zentaoep >./zentaoep.sql
恢复容器中的数据库
docker exec -it zentao-server-prod /opt/zbox/run/mysql/mysql -uroot -p123456 zentaoep <./zentaoep.sqls
制作镜像
docker run --name mycentos -it centos 指定centos run一个容器,在容器里下载一个nginx
docker ps -a 查看id
docker commit -m 'my nginx' 16720d7a7f9b centos/mynginx:v1 打包镜像
docker images 查看
docker run -p 82:80 -it --rm --name myceshi docker.io/centos_nginx bash
docker run -d -p 82:80 centos/mynginx:v2 nginx(命令)
端口映射
docker run -d -P nginx ------> -P自动分配的意思
docker run -d -p 81:80 nginx ------> -p(小p)---指定映射的端口
数据卷-可以实现文件互享
方法一:docker run -it --name volumes-test1 -v /data centos 默认挂载到本地
cd /var/lib/docker/volumes/b9f823f8476f3f538c8345c6644401693aee0d8f9a4af4256d05e13f68243733/_data
挂载到宿主机的这个目录
1. 你是怎么知道呢?
docker inspect 293156021e6a --------->查看详细信息
docker inspect 4f8fd974238d|grep volumes
方法二:docker run -it -v /opt:/opt centos ------->指定挂载到宿主机的/opt目录下
默认宿主机本地目录会把容器里面目录覆盖掉
数据卷容器
容器之互连
#首先,创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:
docker run -ti -v /dbdata --name dbdata docker.io/centos
#接着我们可以在其他容器中使用–volumes-form来挂载dbdata容器中的数据卷,例如创建db1和db2两个容器,并从dbdata容器挂载数据卷
docker run -ti --volumes-from dbdata(指定你要挂载到的容器的名字,会自动识别该容器的volumes) --name db1 docker.io/centos
docker run -ti --volumes-from dbdata(指定你要挂载到的容器的名字,会自动识别该容器的volumes) --name db2 docker.io/centos
总结:在其中的一个容器的/dbdata 目录中创建文件,另外两个也可以看到
Dockerfile 构建

[root@localhost opt]# tree Dockerfile/
Dockerfile/
└── nginx
├── Dockerfile
└── index.html
[root@localhost opt]# cat Dockerfile/nginx/Dockerfile
#This is docker file
#VERSION 1
#Author: Luqiang Jiang
#基础的镜像
FROM docker.io/centos
#Maintainer
MAINTAINER jiangxiaoqiang.com #维护者信息
#Commands
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm #在容器里干点什么
RUN yum install -y nginx # #在容器里干点什么
RUN echo 'daemon off;' >>/etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx"]
#把这个文件放到哪里
ADD index.html /usr/share/nginx/html/
#WORKDIR 目录 #例如编译安装的时候,你需要进入一个目录,像cd
做完之后启动镜像
docker build -t <build完之后显示的名称> .
docker run -p 82:80 -it --rm --name dockerfile dockerfile bash
docker exec -it 34552cf197a1 /bin/bash

容器互联
docker run --name web1 -d -p 80:80 centos/mynginx:v2 nginx
docker run --name web2 --link web1 -d -p 8080:80 centos/mynginx:v3 nginx
进入docker exec -it web2 sh web2容器
172.17.0.2 web1 e80dfbbf0562
172.17.0.3 f6f81c1359a8
sh-4.2# ping -c 1 web1
PING web1 (172.17.0.2) 56(84) bytes of data.
64 bytes from web1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.099 ms
跨主机互联
vim /usr/lib/systemd/system/docker.service
1、 192.168.58.0/24
2、192.168.158.1/24
systemctl daemon-reload
systemctl start docker
systemctl status docker
route add -net 192.168.158.0/24 gw eth0