智一面初中级Linux运维工程师在线评测:http://www.gtalent.cn/exam/interview/eUrdXoILlsGnh6At
Docker 常用命令总结
内容整理自黑马程序员b站公开课程资料,感谢传智教育让初级开发少走弯路
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 添加环境变量)
文件拷贝
本地 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是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像
构建步骤:
编写Dockerfile文件
docker build
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 执行流程:
docker从基础镜像运行一个容器
执行一条指令并对容器作出修改
执行类似docker commit的操作提交一个新的镜像层
docker再基于刚提交的镜像运行一个新容器
执行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 推送到阿里云镜像
【王老师说运维】:运维之linux基础入门实战