官方网站:hub.docker.com
Docker 是一个开源的应用容器引擎,但是说白了就是一个Linux上的虚拟机
概念:快速的部署我们的应用程序,比如war包,tomcat
镜像:你安装的操作系统就是镜像,还没有安装的操作系统的包
容器:操作系统被开机启动后就叫容器
Docker的中央仓库:hub.docker.com
配置Docker中国区官方镜像
使用vi修改 /etc/docker/daemon.json 文件并添加上”registry-mirrors”: [“https://registry.docker-cn.com“],如下:
vi /etc/docker/daemon.json
{
“registry-mirrors”: [“https://registry.docker-cn.com“] //框代表可以配多个
}
加载完重载一下 systemctl daemon-reload
yum -y install docker 安装
service docker start 启动
service docker restart 重启
chkconfig docker on 开机启动
docker images 查看下载的镜像
docker search 镜像名 搜索镜像
docker rmi 镜像ID 删除镜像(删除前确定该镜像下没有容器)
docker pull 镜像名(docker.io/可以省略) 在服务器上将这个镜像下载
docker run centos 创建一个容器(如果容器里无任务程序,将自动关机)
docker run -it centos /bin/bash 创建一个容器并进入
docker run --name mycentos -it centos 创建一个容器,给它赋予一个名字:mycentos,并进入
docker ps -a 显示所有正在运行或者停止的容器 每个容器都存在一个唯一id
docker inspect 容器ID或容器名字 | grep IP 查看容器的ip地址(首先要检查容器是否启动,不启动是查看不到ip的)
docker start 容器ID|容器名字 启动容器(使用start启动后,容器是不会自动关闭的)
docker stop 容器ID|容器名字 关闭一个容器
docker exec -it 容器ID|容器名字 /bin/bash 进入容器(要先确认容器是在线状态)
docker rm 容器ID|容器名字 删除一个容器
docker rm -f 容器ID|容器名字 强制删除一个容器
culr http://ip地址 在linux访问网址
docker run -it -v /a:/a centos 创建一个容器并且将主机/a目录共享给容器的/a目录,centos是指定镜像
然后到容器里面查看a目录下的文件,会报下面这个错
ls: cannot open directory .: Permission denied // 没有权限访问
--name:给运行的容器指定一个名称
-t:伪中断,不让操作系统退出
-i:输入流,进入操作系统
-d:表示启动容器直接进入后台模式 daemon 一般如果容器中没有任何程序进程 一般直接退出(-d启动的容器使用exit退出时,容器不会关闭)
-p:端口映射
docker exec -it -d 56fb29cfcf01 /bin/bash // 进入容器后发现没有任何程序进程,直接退出,在后台运行
如果用yum安装的,也可以拿yum remove卸载,比如:rz
先查看rz的名字:yum search rz
会找到一个lrzsz,这个就是他的名字
然后:yum remove -y lrzsz就可以卸载了
卸载Linux上的nginx
1.nginx -s stop
2.还原nginx的配置
docker安装nginx
1.进入中央仓库搜索nginx
2.进入第一个nginx
docker search nginx // 搜索
docker pull nginx // 下载
端口映射:docker run --name mynginx -v /mynginxs:/usr/share/nginx/html:rw -d -p 8008:80 nginx
// 创建一个名字是mynginx在后台运行并且指定容器的html文件路径与主机的/mynginx路径共享,rw就是赋予nginx对于共享文件的读的写的权限
并且将Linux的8080端口和docker容器的端口共享
仅主机模式:docker run --net host --name mynginx -v /mynginxs:/usr/share/nginx/html:rw -d nginx
docker容器和Linux共享一个网络,包括ip和端口,但是不共享目录
这样访问html里面的文件是,直接以80端口(默认80端口)访问就行了
find / -name 名字: // 全局搜索nginx的目录
docker cp 容器名|容器ID:/etc/nginx/conf.d/default.conf /
// 将指定容器的路径拷贝到主机的/目录下
当有80端口存在时,就表示nginx已启动
安装mysql,应该安装mysql-server
安装redis,应该安装redis ,redis端口:6379
安装mariadb,应该安装mariadb
1.docker search mariadb
2.docker pull mariadb
3.docker run --net host -v /opt/docker_mariadb_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ps123456 -e MYSQL_ROOT_HOST=% --name mymariadb -d mariadb
4.docker start mymariadb
5.systemctl enable mariadb // 设置开机启动,可以写可以不写
docker run --net host -v /opt/docker_mariadb_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ps123456 -e MYSQL_ROOT_HOST=% --name mymariadb -d --restart
unless-stopped docker.io/mariadb:latest
docker run --net host --name myredis -v /opt/redis_data:/data redis-server --appendonly yes
docker run -it -v /文件名:/容器中文件名 镜像名 //将宿主机的文件映射到docker容器中
find / -name 文件名 //搜索目录(从根目录下一层层搜索)
docker cp 容器名:/etc/nginx/conf.d/default.conf /(根目录) //拷贝文件
netstat -aon | grep 端口号 // 查看端口是否被占用
netstat -nlp| grep 端口号 // 查看端口的进程编号
kill -9 进程编号 // 强制结束当前进程
docker commit 镜像名 自定义名:版本号 // 自定义镜像
docker save 镜像名 -o 文件名(如果文件不存在则自动创建文件) //以文件形式保存自定义镜像
docker load -i 镜像名 // 重新加载镜像文件
使用dockerfile生成镜像:
新建文件 : Dockerfile
文件内容 :
FROM 镜像名(tomcat)
COPY ./(代表当前文件) /架包.war /usr/local/镜像名(tomcat)/webapps
执行命令:docker build -t tomcat:版本号
启动mariadb实例
docker run --net host --name mariadb -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:5.5.60
启动redis实例
docker run --net host --name redis -d redis:4
启动Tomcat实例
docker run --net host --name tomcat -itd tomcat
启动nginx实例(两种方式)
1、docker run --name mynginx -v /mynginx:/usr/share/nginx/html:rw -d -p 8888:80 nginx
2、docker run --net host --name mynginx -v /mynginx:/usr/share/nginx/html:rw -d nginx (相当于直接启动了一个nginx)
使用maven远程连接docker
vi /usr/lib/systemd/system/docker.service
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
systemctl daemon-reload
service docker restart
09-06
09-06
09-06
09-06
09-06
09-06