最小安装centos7之后无法联网,无法查看ip的解决方法:
cd /etc/sysconfig/network-scripts/
查看目录下的文件,修改ifcfg-ens33
文件,ONBOOT=yes
修改之后执行:service network restart
安装net-tools包:yum install net-tools
更新yum包:sudo yum update
安装需要的软件包,yum-tuil提供yum-config-manager功能,另外两个是devicemapper驱动依赖的:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源为阿里云:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
防火墙相关:
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
docker安装:
安装docker:sudo yum install docker-ce
查看版本:docker -v
设置镜像地址:
vi /etc/docker/daemon.json
添加:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
docker常用命令:
使用命令的时候如果提示如下错误信息:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/search?term=mysql": dial unix /var/run/docker.sock: connect: permission denied
则需要将当前用户添加到docker组中
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
systemctl start docker
systemctl status docker
systemctl stop docker
systemctl restart docker
systemctl enable docker 开机启动
docker info
docker --help
镜像常用命令:
查看镜像:docker images
搜索镜像:docker search 镜像名
拉取镜像:docker pull 搜索到的镜像名 (:tag)
删除镜像:docker rmi 镜像id(镜像名称)
删除所有镜像:docker rmi `docker images -q`
容器常用命令:
启动容器:docker start 容器名称(容器id)
停止容器:docker stop 容器名称(容器id)
查看正在运行的容器:docker ps
查看所有容器:docker ps -a
查看最后一次运行的容器:docker ps -l
查看停止的容器:docker ps -f status=exited
删除容器:可以使用"docker rm (-f) 容器id"来删除一个终止状态的容器;若要删除一个运行中的容器,需要加-f参数
查看日志:docker logs --details 容器名称
创建与启动容器:
1、交互式方式创建容器:
docker run -it --name=mycentos (镜像名称:标签) /bin/bash
创建centos容器,并进入centos命令行 退出exit 此时容器也停止了
以交互式方式创建容器的时候,退出命令行时,容器也响应的停止了
2、以守护式的方式来创建容器:
docker run -di -v 宿主机路径:/容器路径 --name=容器名称 -p 宿主机端口:容器端口 镜像名称:标签
登陆守护式容器的方式:docker exec -it 容器名称 (或者容器id)/bin/bash
文件拷贝:
将文件拷贝到容器内部:
docker cp 需要拷贝的文件或目录 容器名称:容器目录
将文件从容器内部拷贝出来:
docker cp 容器名称:容器目录/文件 宿主机目录
查看容器运行的各种数据:
docker inspect 容器名称
仅查看容器ip:
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos3
常用软件安装
MySql部署:
docker run -di --name=mysql5.7 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
-p:端口映射,将宿主机的33306端口映射到mysql容器的3306端口
-e:指定mysql root用户的密码
连接mysql:ip为宿主机的ip,端口为指定宿主机映射端口33306
Tomcat部署:
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat
将war包放到宿主机的/usr/local/webapps目录下 访问宿主机: ip:9000/war包名称
Nginx部署:
docker run -di --name=mynginx -p 80:80 nginx
将打包的dist部署到nginx,将dist包拷贝到宿主机
进入nginx容器:docker exec -it mynginx /bin/bash
查看nginx.conf cd /etc/nginx
, cat nginx.conf
在最下面可以看到:include /etc/nginx/conf.d/*.conf;
进入:/etc/nginx/conf.d
查看default.conf:cat default.conf
可以发现:root /usr/share/nginx/html;
将dist重命名为html:mv dist html
然后拷贝到:/usr/share/nginx/
下,执行:docker cp html mynginx:/usr/share/nginx/
访问宿主机ip,即可看到页面
Redis部署:
docker run -di --name=myredis -p 6379:6379 redis
其他:
容器保存为镜像:docker commit 容器名称 镜像名称
镜像备份:docker save -o 文件名.tar 镜像名
保存的文件为当前目录
根据文件回复镜像:docker load -i 文件名.tar
Dockerfile
创建一个目录:mkdir -p /usr/local/dockerjdk8
将jdk包考进来
创建文件:vi Dockerfile
#基础镜像
FROM centos
MAINTAINER liaoxiang
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java
#安装中文字符集
RUN yum -y install kde-l10n-Chinese && \
yum -y reinstall glibc-common && \
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && \
echo "export LC_ALL=zh_CN.utf8" >> /etc/profile
#设置上海时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo 'Asia/Shanghai' >/etc/timezone
#配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
#安装openssh
RUN yum install passwd -y && \
echo "root:123456"|chpasswd && \
yum install openssh-server -y && \
yum clean all && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key
ENV LC_ALL "zh_CN.utf8"
#暴露ssh端口
EXPOSE 22
#启动ssh服务
CMD ["/usr/sbin/sshd", "-D"]
docker build -t='centos_jdk' .
空格. 表示使用当前文件夹下的Dockerfile 构建完成通过docker images可以查看
私有仓库:
docker run -di --name=registry -p 5000:5000 registry
,安装成功可以通过浏览器查看:http://192.168.248.135:5000/v2/_catalog
让docker信任私有仓库地址:vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registry": ["192.168.248.135:5000"]
}
将镜像上传到私有仓库:
docker tag centos_jdk 192.168.248.135:5000/centos_jdk
docker push 192.168.248.135:5000/centos_jdk
通过http://192.168.248.135:5000/v2/_catalog查看可以看到上传的镜像
在其他宿主机上使用私有仓库的镜像:
修改 vi /etc/docker/daemon.json
添加:"insecure-registry": ["192.168.248.135:5000"]
重启docker
拉取镜像:docker pull 192.168.248.135:5000/centos_jdk
使用Maven插件将项目打包成镜像(关闭宿主机防火墙)
修改宿主机的docker配置,让其可以远程访问:vi /lib/systemd/system/docker.service
在其中ExecStart=后添加配置-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry
将项目打包成镜像:
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<!--配置-->
<configuration>
<imageName>私有仓库地址/${project.artifactId}:${project.version}</imageName>
<baseImage>centos_jdk8</baseImage>
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.248.135:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
在项目目录执行:mvn clean package docker:build -DpushImage
不上传到私有仓库:mvn clean package docker:build
执行之前要先:mvn install