docker容器学习-------内容本人在linux服务器上操作过,现整理完整的流程记录一下学习过程
 1、安装最新版的yum:
 (1)检查系统自带的yum包
 rpm -qa |grep yum(2)删除rpm包
 rpm -qa|grep yum|xargs rpm -e --nodeps(3)去http://mirrors.163.com/centos/7/os/x86_64/Packages/下载如下rpm文件
 yum-3.4.3-163.el7.centos.noarch.rpm
 yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
 yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
 python-inotify-0.9.4-4.el7.noarch.rpm(4)用rpm命令安装
 rpm -ivh --force --nodeps yum-3.4.3-163.el7.centos.noarch.rpm
 rpm -ivh --force --nodeps yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
 rpm -ivh --force --nodeps yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
 rpm -ivh --force --nodeps python-inotify-0.9.4-4.el7.noarch.rpm(5)修改来源文件
 cd /etc/yum.repos.d备份CentOS-Base.repo文件为CentOS-Base.repo_bak
 mv CentOS-Base.repo CentOS-Base.repo_bak下载对应版本repo文件,我下载的是Centos-7.repo,修改Centos-7.repo名称为CentOS-Base.repo
 wget http://mirrors.aliyun.com/repo
 mv Centos-7.repo CentOS-Base.repo(5)清除系统默认配置的yum源
 yum clean all(7)运行makecache生成缓存
 yum makecache(8)更新yum文件
 yum update2、docker容器安装:
 (1)查看是否安装了docker
 yum list installed | grep docker(2)安装docker
 yum -y install docker(3)docker启动/停止/重启/查看状态
 systemtcl start docker
 systemtcl stop docker
 systemtcl restart docker
 systemtcl status docker3、docker离线安装
 (1)下载安装包
 wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.3-ce.tgz(2)解压
 tar -zxvf docker-18.06.3-ce.tgz(3)将解压的docker文件夹下的文件复制到/usr/bin/路径下
 cp docker/* /usr/bin/(4)在/etc/systemd/system/目录下新增docker.service文件,这样可以将docker注册为service服务,具体内容如下
 #####################################################
 [Unit]
 Description=Docker Application Container Engine
 Documentation=https://docs.docker.com
 After=network-online.target firewalld.service
 Wants=network-online.target
   
 [Service]
 Type=notify
 # the default is not to use systemd for cgroups because the delegate issues still
 # exists and systemd currently does not support the cgroup feature set required
 # for containers run by docker
 ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
 ExecReload=/bin/kill -s HUP $MAINPID
 # Having non-zero Limit*s causes performance problems due to accounting overhead
 # in the kernel. We recommend using cgroups to do container-local accounting.
 LimitNOFILE=infinity
 LimitNPROC=infinity
 LimitCORE=infinity
 # Uncomment TasksMax if your systemd version supports it.
 # Only systemd 226 and above support this version.
 #TasksMax=infinity
 TimeoutStartSec=0
 # set delegate yes so that systemd does not reset the cgroups of docker containers
 Delegate=yes
 # kill only the docker process, not all processes in the cgroup
 KillMode=process
 # restart the docker process if it exits prematurely
 Restart=on-failure
 StartLimitBurst=3
 StartLimitInterval=60s
   
 [Install]
 WantedBy=multi-user.target
 #####################################################上面文件内容中的--insecure-registry=127.0.0.1改成私服的ip
(5)给docker.service文件添加执行权限
 chmod +x docker.service(6)重新加载配置文件(每次修改docker.service文件时都需要重新加载)
 systemctl daemon-reload  (7)修改或新增 /etc/docker/daemon.json,文件内容如下:
 {
   "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
 }(8)启动,查看状态
 systemctl start docker
 systemctl status docker(9)设置开机启动
 systemctl enable docker.service4、测试jar包在docker中运行
 (1)查看docker客户端和服务段是否都开启
 docker version(2)拉取hello-world镜像测试
 docker pull hello-world(3)查看是否存在hello-world镜像
 docker images(4)运行hello-world
 docker run hello-world  --cmd窗口运行
 docker run -d hello-world  --后台运行(5)查看容器日志
 docker logs [OPTIONS] CONTAINERID
   Options:
         --details        显示更多的信息
     -f, --follow         跟踪实时日志
         --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
         --tail string    从日志末尾显示多少行日志, 默认是all
     -t, --timestamps     显示时间戳
         --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)例如:docker logs --since 30m 0eef327f000a
(6)查看containerId
 docker ps -a5、项目打包成镜像在docker中运行
 (1)项目正常打成jar包,创建Dockerfile文件,内容如下
 FROM java:8
 ADD DockerDemo-0.0.1-SNAPSHOT.jar app.jar
 EXPOSE 8084
 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]参数详解:
 FROM:表示基础镜像,即运行环境;
 ADD:拷贝文件并且重命名;
 EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员告诉容器布署人员容器应该映射哪个端口给外界;
 ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT;(2)服务器上创建docker文件夹,将jar包和Dockerfile移至该文件夹,运行命令:
 docker build -t docker-demo .   (docker-demo为镜像名称,想取啥名就取啥名)(3)查看是否构建成一个image
 docker images(4)运行镜像
 docker run -p 8084:8084 -d docker-demo
 -p表示端口映射,冒号左边为docker容器外的端口号,右边为容器内的端口号
 -d表示后台运行 (5)查看运行的镜像
 docker  ps -a(6)查看容器日志
 docker logs [OPTIONS] CONTAINERID
   Options:
         --details        显示更多的信息
     -f, --follow         跟踪实时日志
         --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
         --tail string    从日志末尾显示多少行日志, 默认是all
     -t, --timestamps     显示时间戳
         --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)例如:docker logs --since 30m 0eef327f000a
 其他命令:
 删除容器,需要停止容器
 docker ps -a 命令查询containerid根据containerid停止容器
 docker stop containerid(也可只输入containerid的前几位)删除容器
 docker rm containerid(也可只输入containerid的前几位)删除镜像(前提是该镜像的容器都已停止或者删除)
 docker images查看imageid
 docker rmi imageid(需要全部ID名)