docker部署与问题总结
环境Vmware
这个地方只是做下安装vmware备注:
- 版本 15.5.6 build-16341506
- linux 版本centos7.8
- shell连接工具:finalShell
刚安装时,突然发现shell工具连接不到虚拟机里,解决方案:使虚拟机使用NAT方式,然后在 centos7 /etc/sysconfig/network-scripts\ifcfg-ens33
ONBOOT="yes"
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLn="no"
BOOTPROTO="dhcpOXY_METHOD="none"
BROWSER_ONLY="no"
#这里使用的是dhcp 自动获取ip地址的方式,我也使用static 但是我测试还有点问题,等以后我研究清楚了我再更#新下问题
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="c3233521-76e5-49d4-a65a-e7ab436cfd01"
DEVICE="ens33"
ONBOOT="yes"
此时应该可以链接到外网,然后我们使用命令 ip addr 查看当前虚拟机ens33的 ip地址,
然后在宿主机里面的网络设置里面的 vmnet8里面 设置与虚拟机当前ip地址同一频段即可。现在再从shell工具即可链接了。
docker环境搭建
- 安装docker : yum install docker
- 查看docker版本: docker -v
- 启动docker:systemctl start docker
- 停止docker:systemctl stop docker
- 重启docker:systemctl restart docker
- 查看docker状态:systemctl status docker
- 开机启动:systemctl enable docker
- 其他命令:docker info / docker --help
docker镜像创建及操作
- 搜索镜像: docker search 镜像名称
ustc镜像 加速拉取docker镜像的下载速度。
修改文件:vi /etc/docker/daemon.json 然后重启docker服务
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
- 拉取镜像: docker pull 镜像名称
- 查看安装的镜像: docker images
- 删除镜像: docker rmi $IMAGE_ID:删除指定镜像/ docker rmi
docker images -q
:删除所有镜像
docker 容器创建及操作
-
命令参数简介:
创建容器常用的参数说明:
创建容器命令:docker run
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
-rm: 执行docker run命令带–rm命令选项,等价于在容器退出后,执行docker rm -v。也就是每次关闭,docker会自动清除容器。 -
交互性容器:docker run -it --name=mycentos centos:7 /bin/bash
查看运行状态:docker ps
-a查看所有容器,-l查看最后启动的容器,docker ps -f status=exited查看关闭的容器
此时使用exit 便退出了容器,也同时关闭了容器,所以平时不怎么使用交互性容器。 -
守护式容器(后台运行)
docker run -di -p8076 8076 --name=mycentos centos:7
注意:-p放在最后可能会出现异常,所以我放在了-di后面,这样可以正常运行。
登录容器: docker exec -it 容器名称或id /bin/bash -
容器重新启动:docker start/restart 容器名称
-
容器关闭: docker stop 容器名称
-
删除容器: docker rm $CONTAINER_ID/NAME/ 删除所有docker rm
docker ps -a -q
容器备份 恢复与迁移
- 容器生成镜像: docker commit 容器名称 生成的镜像名称
- 备份 docker save -o mynginx.tar mynginx
-o是输出的文件名称 - 恢复 docker load -i mynginx.tar
其他
-
nginx 容器 nginx配置文件在:/etc/nginx/nginx.conf
可能容器内无法使用vim命令所以需要安装vim 工具:
apt-get update 完成之后 apt-get install vim
除了使用vim编辑配置文件外,还可以挂载宿主机覆盖容器的配置文件:docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
–name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定
-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
-d 表示启动的是哪个镜像
-
安装jdk8
yum install java-1.8.0-openjdk.x86_64 -
容器内部拷贝文件: docker cp 本地文件地址 容器id:容器拷贝的地址
-
mysql
- 默认拉取是mysql8
docker run -di --name pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-e是环境变量备注: - ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;这里的password是你正在使用的密码 - ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';#更新一下用户的密码这里的password为你修改的新密码。 - FLUSH PRIVILEGES; #刷新权限,使自己的修改生效。 - use mysql; - alter user 'root'@'%' identified by '密码' password expire never; - alter user 'root'@'%' identified with mysql_native_password by '新密码'; - flush privileges; 完成
-
防火墙
查看状态:firewall-cmd --state
停止:systemctl stop firewalld.service
禁止:systemctl disable firewalld.service -
查看端口
如果没有安装netstat:yum install net-tools
查看端口号:netstat -tunlp | grep 端口号