Docker 快速上手

Docker 常用命令总结

Docker 安装:

  • uname -r 检查 Linux的Kernel版本 必须 > 3.8 (docker 是基于Ubuntu 构建的所以与ubuntu 集成更友好,更新及时
  • 卸载之前的安装如果有:yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  • 安装驱动及工具:yum install -y yum-utils device-mapper-persistent-data lvm2
  • 安装docker yum源:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 查看镜像源中支持的docker 版本: yum list docker-ce --showduplicates
  • 安装dcoker最新版 :yum install docker-ce docker-ce-cli containerd.io
  • 安装指定版本:yum install -y --setopt=obsolets=0 docker-ce-18.06.3.ce-3.el7
  • 启动docker :sudo service docker start
  • 设置开机启动:systemctl enable docker
  • 将root 用户添加到用户组:usermod -aG docker root
  • 查看docker 版本: docker version
  • 启动docker: systemctl start docker
  • 停止docker: systemctl stop docker
  • 重启docker: systemctl restart docker
  • 查看docker 状态: systemctl status docker
  • 查看docker 概要信息: docker info
  • 查看docker 帮助文档: docker --help
  • docker查看 ip :docker inspect 容器名称
  • 关于容器 ip 的说明:容器之间在一个局域网内,linux宿主机器可以与容器进行通信;但是外部的物理机笔记本是不能与容器直接通信的,如果需要则需要通过宿主机器端口的代理

配置阿里云docker 镜像

  • 参考链接:https://www.cnblogs.com/liaojie970/p/8994389.html

  • 重启daemon 服务 systemctl researt deamon-reload

  • 重启docker 服务

镜像命令

  • 搜索镜像: docker search 镜像名称(例如:centos)
  • 拉取镜像 : docker pull 镜像名称 (默认拉去latest 可以指定版本例如:centos:7)
  • 查看镜像:docker images -a (显示所有) -q(显示镜像ID)
  • 删除单个镜像: docker rmi -f 镜像ID
  • 删除多个镜像:docker rmi -f 镜像名1:TAG 镜像名2:TAG
  • 删除全部镜像: docker rmi -f $(docker images -qa)

容器命令

  • 查看正在运行的容器 : docker ps
  • 查看所有容器: docker ps -a
  • 查看最后一次运行的容器: docker ps -l
  • 查看停止的容器:docker ps -f status=exited
  • 启动交互式容器: docker run -it --name=centos 镜像名称:标签/bin/bash (启动容器后启动bash,docker后台必须运行一个进程)
  • 退出容器: exit
  • 守护方式创建容器: docker run -di --name=容器名称 镜像名称:标签
  • 例如: docker run -di --name=mycentos centos:latest
  • 登陆守护方式容器: docker exec -it 容器名称(或者容器id) /bin/bash
  • 启动容器: docker start 容器id
  • 停止容器:docker stop 容器id
  • 重启容器:docker restart 容器id
  • 强制停止容器:docker kill 容器id
  • 创建容器举例:docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7(-p 宿主机与容器端口映射 -e 添加环境变量)
  • 应用实例:https://www.cnblogs.com/werr370/p/16072984.html DB2下载----

文件拷贝

  • 本地 to 容器: docker cp 需要拷贝的文件或者目录容器名称:容器目录(docker cp /tmp/anaconda.log mycentos2:/tmp)
  • 容器 to 本地 : docker cp 容器名称:容器目录需要拷贝的文件或者目录(docker cp mycentos2:/tmp /export/)

目录挂载

  • 将宿主机的目录和容器内的目录进行映射,这样就可以通过修改宿主
    机的某个目录的文件从而去影响容器 -v
  • docker run -di --privileged=true -v /root/data01/:/data01 --name=centos7 centos:7
  • 查看容器 ip 地址: docker inspect mycentos

Docker 迁移与备份

  • 容器保存为镜像: docker commit mycentos mycentos_image
  • 基于新创建的镜像创建容器: docker run -di --name=mynginx -p 81:80 mynginx_image
  • 镜像备份: docker save -o mynginx.tar mynginx_image (将镜像保存为tar文件 )
  • 镜像恢复 :docker load -i mynginx.tar

DockerFile

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像

构建步骤:

  1. 编写Dockerfile文件
  2. docker build
  3. docker run
    dockerfile文件示例:
    FROM centos:7
    ENV container docker
    RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in ; do [ $i ==
    systemd-tmpfiles-setup.service ] || rm -f $i; done);
    rm -f /lib/systemd/system/multi-user.target.wants/
    ;
    rm -f /etc/systemd/system/.wants/;
    rm -f /lib/systemd/system/local-fs.target.wants/;
    rm -f /lib/systemd/system/sockets.target.wants/udev;
    rm -f /lib/systemd/system/sockets.target.wants/initctl;
    rm -f /lib/systemd/system/basic.target.wants/
    ;
    rm -f /lib/systemd/system/anaconda.target.wants/*;
    VOLUME [ “/sys/fs/cgroup” ]
    CMD [“/usr/sbin/init”]
    在这里插入图片描述

dockerfile 执行流程:

  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器作出修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新容器
  5. 执行dockerfile中的下一条指令直到所有指令都执行完成

编写dockerfile

mkdir -p /export/docker/jdk8
cd /export/docker/jdk8/
vi Dockerfile
#依赖镜像名称和id
FROM centos:latest
#指定镜像创建者信息
MAINTAINER seisys
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_221
ENV JAR_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

构建镜像

docker build -t=‘jdk1.8’ . (注意后面的空格和点,不要省略,点表示当前目录)

docker 私有仓库:registry

docker pull registry:2
docker run -di -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
##Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了

访问 http://hostname或者IP:5000/v2/_catalog

将镜像推送到私有仓库

  • 标记推送的镜像:docker tag nginx:latest localhost:5000/nginx:latest
  • 推送到私有仓库:docker push localhost:5000/nginx:latest
  • 下载私有仓库:docker pull localhost:5000/nginx:latest

将Docker 推送到阿里云镜像

  • 参考链接:
  • https://www.jianshu.com/p/72dda052c820?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

运行容器不能联网问题:ARNING: IPv4 forwarding is disabled. Networking will not work.
解决方案:
echo “net.ipv4.ip_forward=1” >> /usr/lib/sysctl.d/00-system.conf
systemctl restart network && systemctl restart docker

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值