docker容器实用命令一览及rancher及镜像操作全家桶

1、安装



1.1 安装前准备

关闭防火墙并禁止开机自启

systemctl stop firewalld.service

systemctl disable firewalld

关闭selinux,若不关闭会影响容器查看映射的宿主机文件的权限

setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux



1.2. 安装docker

#安装前对/var/lib/docker 目录做好单独分区挂载或软连接到空间较大的磁盘路径

mkdir /home/var/lib/docker

ln -s /home/var/lib/docker /var/lib/docker

yum -y install docker



查看版本

docker -v



设置docker开机自启

systemctl enable docker



启动docker服务

systemctl start docker



应用配置

systemctl daemon-reload



重启docker

systemctl restart docker



1.3. 安装rancher

docker run -d --restart=always -p 8080:8080 rancher/server

注:如果一直报错,那么可能是网络原因,多试几次,如果还是不行,那就使用国内镜像下载地址,使用方式如下:

1)编辑/etc/docker/daemon.json文件

{ "registry-mirrors": ["https://registry.docker-cn.com"] }

2)重启docker

systemctl restart docker

docker run -d --restart=always -p 8080:8080 rancher/server

#查看rancher docker ps netstat -tpnl | grep 8080



1.4. 访问

访问地址:http://xxxx:8080



2、使用

参考文档:Environments in Rancher



2.1、权限

启用访问控制-本地身份认证

创建的第一个账号默认是管理员账号,可以管理任何“环境”



2.2、环境

所有主机和Rahcner资源, 比如容器, 基础设施服务等, 都在环境中被创建, 并且属于一个环境



2.3、docker常用指令



2.3.1、查看版本信息

docker version

docker -v



2.3.2、查看镜像

docker image ls

docker images



2.3.3、删除镜像,目标镜像id(删除前,务必确保对应的容器是关闭删除状态)

docker rmi imageId



2.3.4、查看悬虚镜像(无标签的镜像-重复打包同一个镜像产生的)

docker image ls --filter dangling=true



2.3.5、移除悬虚镜像

docker image prune



2.3.6、查看容器

docker container ls

docker ps -a



只显示标签为latest的镜像

docker image ls --filter=reference="*:latest"



只显示镜像的大小属性

docker image ls --format "{{.Size}}"



只显示镜像大小、名称、标签

docker image ls --format "{{.Repository}}: {{.Tag}}: {{.Size}}"



2.3.7、查看实际运行时应用程序大小

docker exec -it 镜像名 /bin/ls -lh



2.3.8、查看日志



实时查看docker容器日志

docker logs -f -t --tail 行数 容器名



实时查看docker容器名为s12的最后10行日志

docker logs -f -t --tail 10 s12



查看容器参数配置

docker inspect s12



2.3.9、启动容器并开启交互,并切换到容器shell环境

docker container run -it ubuntu:latest /bin/bash



2.3.10、进入容器

docker exec -it ubuntu:latest /bin/bash

docker exec -it 容器id /bin/bash



2.3.11、退出容器shell环境:



退出后容器继续运行

Ctrl+PQ 组合键



退出后容器关闭

exit



2.3.12、映射宿主机端口启动容器

#docker run -d 后台执行 -p 主机暴露端口:容器端口 --name container名称(自定义) 镜像名称:标签版本号

docker run -d -p 8081:8080 --name tomcat7 tomcat7.0.100:v1.0.0

#-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

docker run -d -p 8081:8080 -v /home/web:/docker_home/local/tomcat7/webapps --name tomcat7 tomcat7.0.100:v1.0.0



2.3.13、关闭容器

docker container stop ubuntu



杀死或删除容器,目标容器名称或容器id

docker container rm ubuntu



2.3.14、使用Dockerfile创建镜像

docker build -t qinxue/nginx-t .



指定Dockerfile文件:dockerfile-alpine-jdk8

docker build -f dockerFile-alpine-jdk8 -t skyblue/alpine-jdk8:1.0.0 .



2.3.15、拉取镜像,格式:docker image pull :

#若无tag,则默认会拉取latest标签(这里都是从官方仓库拉取的)

docker image pull ubuntu:latest

docker image pull alpine:latest

docker image pull mongo:3.3.11



从docker hub拉取镜像

docker image pull dockerHub账号/该账号下仓库名:标签

例如,docker image pull lut/redis:v3.2



2.3.16、根据容器ID创建新的镜像,同一个镜像修改后重启容器可以使用这种方式,就不用删除原来的容器

docker commit 容器id mytomcat:v1.0.1



2.3.17、登录到私有harbor

​
#配置daemon.json

[root@localhost 2.11.1]# vi /etc/docker/daemon.json {

"registry-mirrors": [ "https://20v9zh9c.mirror.aliyuncs.com", "https://dockerhub.azk8s.cn", "https://registry.docker-cn.com" ], "insecure-registries": [ "https://xxxxx" ] }

docker login ip:port -u xxxx -p xxxx
docker login xxxxx:7655 -u xxx -p xxx

​

2.4、镜像使用操作



#推送镜像

#先在本地标记镜像

docker tag f829bd956198 xxxxxxxxxxxxxx/test_lab/api
docker tag api:Release.1.1.1.1 xxxxxxxxxx/test_lab/api:Release.1.1.1.1

#推送到仓库
docker push xxxxxxxxxx/test_lab/api:Release.1.1.1.1
docker import -m "use alpine-minirootfs-3.13.4-x86_64.tar.gz" alpine-minirootfs-3.13.4-x86_64.tar.gz alpine-3.13.4-base-image:1.0



#从镜像导出包:

docker save -o api-v1.1.1.1.Release.tar.gz xxxxxxxxxx/test_lab/api:1.1.1.1.Release
#或
docker export xxxxxxxxxx/test_lab/api:1.1.1.1.Release -o xxxxxxxxxx/test_lab/api:1.1.1.1.Release.tar.gz



#从包导入镜像:

docker stop xxx
docker rmi xxx
docker import xxxxxxxxxx/test_lab/api:1.1.1.1.Release.tar.gz xxxxxxxxxx/test_lab/api:1.1.1.1.Release



#镜像迁移:

#1、镜像导出:docker save autotomcat -o autotomcat.tar

#2、镜像还原:

docker rmi autotomcat

docker load -i autotomcat.tar

#离线包导出:

#1.找一台安装了docker的服务器登录
docker login xxxxxx -u xxx -p xxx
#2.输入账号密码登录
#3.拉镜像 docker pull 镜像名称   #下载镜像,如果镜像名称是docker开头的  请改为harbor
docker pull xxxxxxxxxx/test_lab/api:1.1.1.1.Release
#4.打包镜像 docker save -o  文件名  镜像名称  #导出镜像 注意文件名不要包含:符号
docker save -o api-v1.1.1.1.Release.tar.gz xxxxxxxxxx/test_lab/api:1.1.1.1.Release
#或者  
docker export xxxxxxxxxx/test_lab/api:1.1.1.1.Release -o api-v1.1.1.1.Release.tar.gz
#5.把文件从服务器下载下来即可即可 



3、基础镜像构建

#Dockerfile:

FROM scratch
ADD alpine-minirootfs-3.13.4-x86_64.tar.gz /
CMD ["/bin/sh"]

#执行构建:

docker build -t alpine-3.13.4:v1.0.0 .



4、jdk8镜像构建

dockfile文件内容:

#dockerFile-alpine-jdk8:

FROM alpine:3.13.4
MAINTAINER cloudWind
MAINTAINER cloudWind "wel@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /lt_docker/jdk
#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
ADD jdk-8u281-linux-x64.tar.gz /lt_docker/jdk/
## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
COPY glibc-2.32-r0.apk /lt_docker/jdk/
COPY glibc-bin-2.32-r0.apk /lt_docker/jdk/
COPY glibc-i18n-2.32-r0.apk /lt_docker/jdk/
#5.更新Alpine的软件源为阿里云,因为从默认官源拉取实在太慢了
RUN echo http://mirrors.aliyun.com/alpine/v3.10/main > /etc/apk/repositories && \
    echo http://mirrors.aliyun.com/alpine/v3.10/community >> /etc/apk/repositories && \
​
RUN apk update && apk upgrade
​
#6.运行指定的命令
## Alpine linux为了精简本身并没有安装太多的常用软件,apk类似于ubuntu的apt-get,
## 用来安装一些常用软V件,其语法如下:apk add bash wget curl git make vim docker
## wget是linux下的ftp/http传输工具,没安装会报错“/bin/sh:   wget: not found”,网上例子少安装wget
## ca-certificates证书服务,是安装glibc前置依赖,这里glibc-2.32-r0.apk先安装后,再处理下软连接的问题,否则后面执行的时候会报错
## 如:/usr/glibc-compat/sbin/ldconfig: /usr/glibc-compat/lib/ld-linux-x86-64.so.2 is not a symbolic link
RUN apk --no-cache add ca-certificates wget \
    && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
    && apk add glibc-2.32-r0.apk \
    && mv /usr/glibc-compat/lib/ld-linux-x86-64.so.2 /usr/glibc-compat/lib/ld-linux-x86-64.so \
    && ln -s /usr/glibc-compat/lib/ld-linux-x86-64.so /usr/glibc-compat/lib/ld-linux-x86-64.so.2 \
    && apk add glibc-bin-2.32-r0.apk glibc-i18n-2.32-r0.apk \
    && rm -rf /var/cache/apk/* glibc-2.32-r0.apk glibc-bin-2.32-r0.apk glibc-i18n-2.32-r0.apk
#7.配置环境变量
ENV JAVA_HOME=/lt_docker/jdk/jdk1.8.0_281
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
CMD ["java","-version"]
#删除setuid、setgid权限
RUN find / -perm /6000 -type f -exec chmod a-s {} \;|| true

#执行构建:

docker build -f dockerFile-alpine-jdk8 -t alpine-jdk8:v1.0.0 .



5、tomcat镜像构建

#Dockerfile:

#指定本地创建的基础镜像
FROM alpine-jdk1.8_281:v1.1.0
#创建目录
RUN mkdir -p /usr/local
#把当前目录下的jdk文件夹添加到镜像
ADD apache-tomcat-7.0.100 /usr/local/tomcat7
ENV CATALINA_HOME /usr/local/tomcat7
ENV PATH $PATH:$CATALINA_HOME/bin
#暴露8080端口
EXPOSE 8080
#启动时运行tomcat
CMD ["/usr/local/tomcat7/bin/catalina.sh","run"]
​

#执行构建:

docker build -t tomcat7.0.100:v1.0.0 .

#启动:

docker run -d -p 8081:8080 -v /home/web:/usr/local/tomcat7/webapps --name tomcat7 tomcat7.0.100:v1.0.0

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值