您的位置:首页 - 文章 - 服务器 - 正文

Docker容器随笔

百科:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任
何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口;
使用go语言编写,在LCX(linux容器)基础上进行的封装
简单来说分三点:
1)就是可以快速部署启动应用
2)实现虚拟化,完整资源隔离
3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的
linux/Windows/unix环境下使用)

为什么要用?

1、提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就
可以直接启动运行
2、快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动
3、组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用
4、更好的资源隔离和共享

总结一句话:开箱即用,快速部署,可移植性强,环境隔离

一、Window 10 环境下安装Docker

简介:如何在Win10 环境下安装docker容器
Docker for Win10 安装包下载地址:
https://store.docker.com/editions/community/docker-ce-desktop-windows
国内镜像加速
https://registry.docker-cn.com #Docker中国区
http://hub-mirror.c.163.com #网易

安装前:电脑环境设置

下载好,进行安装

二、Linux系统安装Docker

安装环境:Centos 7
安装条件:docker官方要求至少3.8以上,建议3.10以上

查看内核版本:uname -a

Docker 版本:
docker EE 企业版本
docker CE 社区版本
关闭防火墙:

systemctl stop firewalld.service 

编辑

vi /etc/selinux/config

进入后,点 i 建 进入编辑模式 ,找到SELINUX值改为:

SELINUX=disabled
改完按esc 退出编辑

:wq 保存退出

安装wget插件
yum install -y wget

安装Docker Ce 社区版本:

查看当前docker现有的软件

yum list | grep docker

安装wget命令:

下载阿里云docker社区版 yum源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
[root@VM-0-16-centos yum.repos.d]# ls -lrt
total 20
-rw-r--r-- 1 root root 230 Oct 22 2020 CentOS-Epel.repo
-rw-r--r-- 1 root root 614 Oct 22 2020 CentOS-Base.repo
-rw-r--r-- 1 root root 1149 Nov 1 2020 epel-testing.repo
-rw-r--r-- 1 root root 1050 Nov 1 2020 epel.repo
-rw-r--r-- 1 root root 2081 Jul 15 15:59 docker-ce.repo

安装路径:

[root@VM-0-16-centos yum.repos.d]# pwd
/etc/yum.repos.d

安装

yum install -y docker-ce.x86_64
设置开机启动:systemctl enable docker
更新xfsprogs:yum -y update xfsprogs
启动docker:systemctl start docker
查看版本:docker version
查看详细信息:docker info
[root@VM-0-16-centos yum.repos.d]# docker info
Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Build with BuildKit (Docker Inc., v0.5.1-docker) scan: Docker Scan (Docker Inc., v0.8.0)
Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.10.7 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux Default Runtime: runc Init Binary: docker-init containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7 init version: de40ad0 Security Options: seccomp Profile: default Kernel Version: 3.10.0-862.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 1.796GiB Name: VM-0-16-centos ID: HMZA:ZZVF:NEKX:TNTI:FBH5:F6P5:CKBK:Z5ZH:5ALB:WP4H:IVYM:ZNPG Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false

查看本地镜像:docker images

查看本地镜像:docker images
搜索镜像:docker search centos
搜索镜像并过滤是官方的: docker search --filter "is-official=true" centos
搜索镜像并过滤大于多少颗星星的:docker search --filter stars=10 centos
下载centos7镜像:docker pull centos:7
修改本地镜像名字(小写):docker tag centos:7 mycentos:1
本地镜像的删除:docker rmi centos:7

配置镜像加速

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

{ "registry-mirrors": ["https://zydfr31e.mirror.aliyuncs.com"]
}

保存退出/重启

systemctl daemon-reload
systemctl restart docker
或
systemctl daemon-reload && systemctl restart docker

已交互模式启动容器

docker run -it 8652b9f0cb4c

exit命令用于退出目前的shell

exit

构建容器启动:docker run -itd --name=mycentos centos:7
-i :表示以交互模式运行容器(让容器的标准输入保持打开)
-d:表示后台运行容器,并返回容器ID
-t:为容器重新分配一个伪输入终端
{
"registry-mirrors": ["https://5xok66d4.mirror.aliyuncs.com"]
}
--name:为容器指定名称
查看本地所有的容器:docker ps -a
查看本地正在运行的容器:docker ps
停止容器:docker stop CONTAINER_ID / CONTAINER_NAME

[root@VM-0-16-centos yum.repos.d]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f5c4b04fc8a centos:7 "/bin/bash" About a minute ago Up About a minute crazy_cray
[root@VM-0-16-centos yum.repos.d]# docker stop 0f5c4b //关闭的ID 不一定全部写完整或者 容器名字

一次性停止所有容器:docker stop $(docker ps -a -q)
启动容器:docker start CONTAINER_ID / CONTAINER_NAME //ID 不一定全部写完整或者 容器名字
重启容器:docker restart CONTAINER_ID / CONTAINER_NAME //ID 不一定全部写完整或者 容器名字
删除容器:docker rm CONTAINER_ID / CONTAINER_NAME //删除前先停止容器
强制删除容器:docker rmi -f CONTAINER_ID / CONTAINER_NAME //强制删除可以不用停止
查看容器详细信息:docker inspect CONTAINER_ID / CONTAINER_NAME
进入容器:docker exec -it 0ad5d7b2c3a4 /bin/bash

列出已有的容器id

docker ps -a -q

批量全部启动

docker start $(docker ps -a -q)

批量全部停止

docker stop $(docker ps -a -q)

查看当前位置路径:pwd

查看当前目录总共文件:ls -lrt

创建文件:cat >123.txt

编写内容,ctrl+c 结束

查看文件:cat 123.txt

从宿主机复制到容器:docker cp 宿主机本地路径 容器名字/ID:容器路径

docker cp /root/123.txt mycentos:/home/

进入容器

 docker exec -it mycentos00 /bin/bash

从容器复制到宿主机:docker cp 容器名字/ID:容器路径 宿主机本地路径
docker cp mycentos:/home/456.txt /root
宿主机文件夹挂载到容器里:docker run -itd -v 宿主机路径:容器路径 镜像ID
docker run -itd -v /root/xdclass/:/home centos:7

自定义镜像

方法一:Commit构建自定义镜像

简介:对容器的修改以及保存
简介:对容器的修改以及保存
启动并进入容器:docker run -it centos:7 /bin/bash
在/home 路径下创建xdclass文件夹:mkdir /home/xdclass
安装ifconfig命令:yum -y install net-tools
重启容器,查看容器的xdclass文件夹还在不在:docker restart 67862569d4f7
删除容器,再重新启动一个容器进入查看有没有xdclass文件夹:docker rm 67862569d4f7 && docker
run -it centos:7 /bin/bash
构建镜像:
docker commit 4eb9d14ebb18 mycentos:7
docker commit -a "XD" -m "mkdir /home/xdclass" 4eb9d14ebb18 mcentos:7
-a:标注作者
-m:说明注释
查看详细信息:docker inspect 180176be1b4c
启动容器:docker run -itd 180176be1b4c /bin/bash
进入容器查看:docker exec -it 2a4d38eca64f /bin/bash

方法二:Dockerfile构建镜像实战

Dockerfile

# this is a dockerfile
FROM centos:7
MAINTAINER XD 123456@qq.com
RUN echo "正在构建镜像!!!"
WORKDIR /home/xdclass
COPY 123.txt /home/xdclass
RUN yum install -y net-tools

构建:docker build -t mycentos:v2 .
查看:docker images
进入验证:验证成功

本文原创,作者:西决,其版权均为品创网络所有。如需转载,请注明出处:https://www.sxpcwlkj.com/docker/

发表评论