Docker环境安装及基础命令使用

 2020-4-3      docker  环境安装  国内源 

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

安装Docker

为yum配置加速

centos默认国外源,安装过程不是很理想

#下载阿里yum源2 
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
yum clean all  #清理缓存
yum makecache  #生成仓库缓存 

安装:

1、安装必要依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加阿里镜像稳定版仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker-ce

yum install -y docker-ce docker-ce-cli containerd.io

配置docker加速

创建或修改 daemon.json 文件

修改之后重启docker服务

vim  /etc/docker/daemon.json
{
  "registry-mirrors" : [
    "http://registry.docker-cn.com",
    "http://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "insecure-registries" : [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "debug" : true,
  "experimental" : true
}

开机启动

systemctl enable docker #开机启动docker

重启

systemctl daemon-reload #加载
systemctl restart docker  #重启docker

查看

systemctl status docker #查看docker状态
docker info  #查看详细信息
docker version #查看版本

使用Docker

查看已有镜像列表

docker images #查看有哪些镜像

查看

docker ps #查看目前工作的容器
docker ps -a #查看所有运行过的容器
docker ps -aq #查看所有容器id

搜索Nginx镜像

docker search nginx #就找第一个,下载最多的,官方镜像

下载镜像

docker pull nginx  #下载nginx镜像

启动镜像

docker run  -d -p 8000:80 --name mynginx -it  nginx
#-p 指定服务器8000端口,映射容器80 web端口
#-name 容器名为mynginx 
#-d 守护进程模式启动(因为容器必须有进程在运行,否则结束就挂,最后面加/bin/bash 好像是一样的作用)
#-it 为该docker创建一个伪终端,这样就可以进入到容器的交互模式(也就是直接进入到容器里面)
参数 说明
run 创建并运行一个容器
-d 放入后台
-p 端口映射
-v 挂载目录
-env 环境变量

启动后URL

http://localhost:8000/

进入容器

#进入
docker exec -it 容器ID /bin/bash

#退出
exit

关闭镜像

#停止Nginx容器
docker stop nginx #id或name

#停止所有容器
docker stop $(docker ps -aq)

#删除所有容器
docker rm $(docker ps -aq)

删除镜像

#删除所有未使用的镜像
docker image prune 

#删除指定id或name的镜像
docker rmi <image id>

# 删除所有镜像
docker rmi $(docker images -q)

安装redis

docker pull redis:latest
docker run -itd --name redis-test -p 6379:6379 redis
docker exec -it redis-test /bin/bash

容器保存为镜像

#docker commit 容器名 镜像名
docker commit mynginx mynginx_i

镜像输出为文件

docker save -o myNginxFileName.tar mynginx_i

恢复镜像

docker load -i myNginxFileName.tar

构建

docker build -t '镜像名称' .

源简写

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

卸载已安装的docker版本

yum -y remove docker*

#删除旧版本Docker文件
#不删除目录,就不会删除已安装的镜像及容器
sudo rm /var/lib/docker/ -rf

扩展

问题解决 添加阿里源时有时会报错,如果报错,使用如下命令使用官方源

#删除异常源
rm -f /etc/yum.repos.d/docker-ce.repo
#使用官方源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#清华大学源
#https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

加速源

名称 地址
网易 http://hub-mirror.c.163.com
阿里云(需登录) https://<your_code>.mirror.aliyuncs.com
中国科技大学 https://docker.mirrors.ustc.edu.cn
Docker中国区官方镜像 https://registry.docker-cn.com
DaoCloud 镜像站 http://f1361db2.m.daocloud.io
Azure 中国镜像 https://dockerhub.azk8s.cn
七牛云  https://reg-mirror.qiniu.com
腾讯云  https://mirror.ccs.tencentyun.com

安装 docker-compose

#如果没有pip,先安装pip
yum -y install epel-release
yum -y install python2-pip
#或yum -y install python3-pip

#升级
pip install --upgrade pip
#安装docker-compose
pip install docker-compose
#查看版本
docker-compose -version

第三方脚本:

#安装
curl -sSL https://get.docker.com/ | bash -x
#卸载 ubuntu 通过dpkg加grep 查看具体装的什么版本,然后卸载。centos通过rpm -qa,然后-e
apt-get purge lxc-docker

轻量级可视化管理工具Portainer

相关问题:

1、docker stop 与 docker kill 均可以将容器停掉,但二者究竟有什么区别呢?

docker stop,支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。

docker kill, 发送SIGKILL信号,应用程序直接退出。

2、为什么是docker-ce?

https://zhuanlan.zhihu.com/p/305572519

鸣谢:

https://baike.baidu.com/item/Docker/13344470 https://www.cnblogs.com/hellxz/p/11044012.html
https://www.jianshu.com/p/6eea18d6fb39 #镜像的备份