一、Docker入门

最小安装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/nginxcat 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值