1.更新源和依赖包

yum install -y epel-release
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2

2.安装docker

86_64

curl -sSL https://get.docker.com/ | sh

arm

◎.修改源

 nano /etc/apt/sources.list

deb https://mirrors.ustc.edu.cn/debian buster main contrib non-free

deb https://mirrors.ustc.edu.cn/debian buster-updates main contrib non-free

deb https://mirrors.ustc.edu.cn/debian buster-backports main contrib non-free

deb https://mirrors.ustc.edu.cn/debian-security/ buster/updates main contribnon-free

Ctrl+O保存,Ctrl+X退出。

◎.更新

apt-get update

◎.使用docker安装脚本

curl -fsSL https://get.docker.com -o get-docker.sh

sh get-docker.sh --mirror Aliyun

◎.修改docker源(很多时候没有就忽略)
找到daemon.json文件,更改源地址。

文件在/etc/docker/。

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

3.启动 停止 重启 docker

service docker {start|stop|restart}

4.设置docker开机自动启动

systemctl enable docker

5.查看docker版本

docker version

6.查看docker系统的信息

docker info

7.查找docker镜像命令

docker search 关键字

8.启动运行镜像( 前者是外围访问端口:后者是容器内部端口)

docker run -p 8081:8080 镜像名字

9.查看运行中的容器

docker ps
docker ps | less -S
docker ps –qa(查看所有容器)

10.进入容器

docker exec -i -t 容器ID或名字 /bin/bash

11.容器的{停止|启动|重启}

docker  {stop|start|restart} -i  容器ID 

12.暂停某一容器的所有进程

docker pause

13.恢复某一容器的所有进程

docker unpause

14.显示一个运行的容器里面的进程信息

docker top Name/ID  

15.显示最后一次启动的容器

docker ps -l 

16.用一行列出所有正在运行的container(容器多的时候非常清晰)

docker ps | less -S

17.根据现有容器创建镜像

docker commit 容器ID  用户名/库名:标签

18.在运行容器时候直接给容器中安装新的程序

docker run image_name apt-get install -y app_name  
Note: 在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响 应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

19.直接运行容器

(--privileged 指定容器是否是特权容器。这里开启特权模式(注意需要和/usr/sbin/init对应)      --cap-add SYS_ADMIN 添加系统的权限。不然,系统很多功能都用不了的。)

docker run -itd -p 1001:22 cent0s:7 /bin/bash
docker run --cap-add SYS_ADMIN --privileged --name=lnmp -itd -p 1001:22  centos:7 /usr/sbin/init
docker run --cap-add SYS_ADMIN --privileged --name=lnmp -itd -p 1002:22 -p 800:80 alpine

20.删除容器

docker rm 容器id
docker rm $(docker stop $(docker ps -qa))(删除所有容器)

21.查看容器日志

docker logs <id/container_name>

22.实时查看日志输出

docker logs -f <id/container_name> (类似 tail -f) (带上时间戳-t)

修改本地镜像名称:

docker tag 镜像ID 用户名称/镜像源名(repository name):新的标签名(tag)

23.分享镜像:

    1.登录docker Hub
    docker login
    
    2.分享镜像
docker push 用户名/库名:标签
docker push<hub-user>/<repo-name>:<tag>
    3.登出docker Hub
    docker logout

要发布到私有Registry中的镜像,在镜像命名中需要带上Registry的域名(如果非80端口,同时需要带上端口号)比如:


docker push dockerhub.yourdomain.com:443/hello.demo.kdemo:v1.0

24.查看本地镜像

docker images

25.下载镜像

docker pull  镜像名字

26.显示一个镜像的历史

docker history image_name

27.删除镜像

docker rmi 镜像id

28.查看容器/镜像的信息

docker inspect

29.从容器里面拷贝文件/目录到本地一个路径

docker cp Name:/container_path to_path  
docker cp ID:/container_path to_path

30.将指定镜像保存成 tar 归档文件

docker save
docker save -o ubuntu14.04.tar ubuntu:14.04
将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
-o, --output=      Write to an file, instead of STDOUT 输出到的文件

31.从 tar 镜像归档中载入镜像,docker save 的逆操作

docker load
docker load -i ubuntu14.04.tar
从 tar 镜像归档中载入镜像, docker save 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。
上面命令的意思是将 ubuntu14.04.tar 文件载入镜像中。
参数:  -i, --input=       Read from a tar archive file, instead of STDIN 加载的tar文件

将指定的容器保存成 tar 归档文件

docker export
docker export -o ubuntu14.04.tar 94c6b3c3f04a
将指定的容器保存成 tar 归档文件, docker import 的逆操作。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。
上面命令的意思是将 ID 为 94c6b3c3f04a 容器保存为 ubuntu14.04.tar 文件。
参数:  -o, --output=      Write to a file, instead of STDOUT

从归档文件创建一个镜像,export 的逆操作

docker import
cat ./ubuntu14.04.tar | sudo docker import - ubuntu:14.04
从归档文件(支持远程文件,.tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz)创建一个镜像, export 的逆操作,可为导入镜像打上标签。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。
上面命令的意思是使用 ./ubuntu14.04.tar 文件创建 ubuntu:14.04 的镜像,默认会从远端拉取文件。

轻松使用Docker

1.docker exec是如此的有用,以至于我们通常是将其封装为一个脚本,放到全局可调用的地方,比如,可以写成一个indocker.sh:

cat indocker.sh 
docker exec -t -i $1 /bin/bash
查看需要附着的容器id
docker ps | less -S
CONTAINER ID        IMAGE                                                 
9cf7b563f689        hello.demo.kdemo:v160525.202747

./indocker.sh 9cf7b563f689

2.把docker用户加入超级用户组

sudo groupadd docker
#添加docker用户组
sudo gpasswd -a myusername docker 
#把自己加到docker用户组中
sudo service docker restart

3.清理垃圾

删除所有停止容器docker rm $(docker ps -a -q)
删除的时候没有停止的容器无法删除,可以起到清理垃圾容器的作用

4.简单使用docker inspect

docker inspect输出结果的解析利器:jq 要对docker inspect的输出结果进行过滤,一般情况下,

用grep命令,你需要这样操作:

    docker inspect 'id' | grep IPAddress | cut -d '"' -f 4

用jq命令,只需要:

    docker inspect 'id' | jq -r '.[0].NetworkSetting.IPAddres'

5.查看镜像有哪些环境变量

docker run centos env

输出结果为

    [root@hk ~]# docker run centos env
    Unable to find image 'centos:latest' locally
    Trying to pull repository docker.io/library/centos ... 
    latest: Pulling from docker.io/library/centos
    a02a4930cb5d: Pull complete 
    Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426
    Status: Downloaded newer image for docker.io/centos:latest
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    HOSTNAME=4059ccd19648
    HOME=/root

调用env查看环境变量,对于后面要讲到的“链接”(-link)很有用,在连接两个容器时候需要用到这些环境变量 

6.把docker用户加入超级用户组

sudo groupadd docker
添加docker用户组
sudo gpasswd -a myusername docker 
把自己加到docker用户组中
sudo service docker restart

安装docker-engine

(
1、直接使用root安装(更新系统)
yum update
2.配置docker镜像源
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
3.安装docker
yum install docker-engine
)

安装 Docker-CE

(
1.升级yum
-yum update
2.安装必要的一些系统工具
-yum install -y yum-utils device-mapper-persistent-data lvm2
3.添加软件源信息
-yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新并安装 Docker-CE
-yum makecache fast
-yum -y install docker-ce
5.开启Docker服务
-service docker start
)