Docke r 离线安装及基础操作使用教程

Docke r 离线安装

此方式适用于没有互联网的机器安装 D ocker,绿色配置安装。

该方法官方文档上面已经有说明了,参照:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries

下载离线包

我们选择的是 6 4 位的二进制包,浏览地址:https://download.docker.com/linux/static/stable/

选择下载最新安装包:https://download.docker.com/linux/static/stable/x86_64/docker-19.03.3.tgz

本机直接下载

cd /home
wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.3.tgz

解压安装包

将下载到的文件移植到需要安装的机器上,进行解压。

tar -xzvf docker-19.03.3.tgz

复制文件

将 d ocke r 二进制文件复制到系统运行目录下

sudo cp docker/* /usr/bin/

注册服务

创建服务文件,将 d ocke r 注册为系统服务。

新建文件:/etc/systemd/system/docker.service

内容如下

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

# the default is not to use systemd for cgroups because the delegate issues still

# exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

# Having non-zero Limit*s causes performance problems due to accounting overhead

# in the kernel. We recommend using cgroups to do container-local accounting.

LimitNOFILE=infinity

LimitNPROC=infinity

LimitCORE=infinity

# Uncomment TasksMax if your systemd version supports it.

# Only systemd 226 and above support this version.

#TasksMax=infinity

TimeoutStartSec=0

# set delegate yes so that systemd does not reset the cgroups of docker containers

Delegate=yes

# kill only the docker process, not all processes in the cgroup

KillMode=process

# restart the docker process if it exits prematurely

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

 

[Install]

WantedBy=multi-user.target

赋予执行权限

chmod +x /etc/systemd/system/docker.service

重载 u ni t 配置文件

systemctl daemon-reload

启动 d ocke r 服务

systemctl start docker 

设置开启自启

systemctl enable docker.service 

查看 d ocke r 版本

docker -v 

获取 D ocke r 镜像

此方式目前只找到通过互联网机器获取镜像,并将其镜像导出供内网机器使用。

CD N 源镜像

由于 d ocke r 源镜像访问较慢,我们替换为其他源 C DN,使得拉取 d ocke r 镜像更快速。

编辑 d ocke r 配置,如果文件不存在,请先创建:/etc/docker/daemon.json

{
  "registry-mirrors":["https://reg-mirror.qiniu.com/"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"10m", "max-file":"3"}
}

保存后重启 d ocker

sudo systemctl daemon-reload
sudo systemctl restart docker

更多源镜像配置方式,可参照:https://www.cnblogs.com/wushuaishuai/p/9984228.html

获取 d ocker 基础镜像(Image)

通过搜索,查找有哪些镜像

docker search debian

拉取镜像

推荐 a lpin e 或者 d ebia n 作为基础操作系统镜像

下表是官方镜像的大小比较:

REPOSITORY          TAG           IMAGE ID          VIRTUAL SIZE
alpine              latest        4e38e38c8ce0      4.799 MB
debian              latest        4d6ce913b130      84.98 MB
ubuntu              latest        b39b81afc8ca      188.3 MB
centos              latest        8efe422e6104      210 MB

测试拉取 a lpin e 镜像

$ docker run alpine echo '123'
123

我们这里将 d ebia n 和alpin e 一并拉取

docker pull debian
docker pull alpine

保存镜像(制作离线包)

将镜像打包,离线存储,给其他内网机器使用

sudo docker save -o debian_image.docker debian

其他机器导入镜像

sudo docker load -i debian_image.docker

更多参考 d ocke r 官方文档:https://docs.docker.com/engine/reference/commandline/save/

容器使用

简单介绍下容器的使用,这里依照上文,采用 d ebia n 镜像作为基础,进行实例容器。

如果你是直接运行载入镜像,docke r 会把镜像记载完毕后,正常退出。

如:docker run debian

$ docker run debian
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS                  NAMES
8e5176a1cbf8        debian              "bash"              3 seconds ago       Exited (0) 3 seconds ago                          peaceful_poitras

查看容器进程方法为:docker ps 默认只会显示目前在运行的 d ocke r 进程,如果需要显示所有,需要增加 -a 参数。

可以看到上面刚刚初始化的容器,在 3 秒前创建完毕,且在 3 秒前正常退出。意味着这个容器的生命周期已经结束。

如果想进入容器,做更多的配置那就需要附加额外启动参数,以交互模式启动容器。

如:docker run -it debian 

$ docker run -it debian
root@4b0655852c0b:/$ 

创建完毕后,会直接连接进终端,且退出后,这个容器的生命周期也就结束了。

也可以通过后台进程的创建方式运行,即如下:

$ docker run -d -it debian
9b0d9b593b27621aa6c4758b4a2a5690e14c4e7d412af5547266ce975d6f904a

同样,刚刚创建的这个容器也可以通过进程查看到。

$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9b0d9b593b27        debian              "bash"              25 seconds ago      Up 24 seconds                           nifty_kirch

如果再次想连接到这个容器中,只需要对这个容器执行 b as h 命令即可。(9b0d9b593b27  是上面创建的容器 I D,也可以通过 d ocker ps  查看到)

$ docker exec -it 9b0d9b593b27 /bin/bash
root@9b0d9b593b27:/$

此时,再退出这个终端,容器不会断掉,因为此前我们通过的是后台驻留的方式创建的。也是存在一个伪终端链接,只不过没有人操作,所以也就不会因为其他终端连接断掉而断掉。

同时我们如果在容器内所做的改动,也依然会保存。不会因为连接关闭,而丢失。

对于持久化存储,还是推荐官方提供的:Data Volume,参考官方或者 https://blog.csdn.net/yalishadaa/article/details/78565447

针对容器的一些操作:

命名重启

vm1 是容器的名称也可以是 I D,名称在初始化时可以指定 --name vm1,如: 

docker run -d -it --name vm1 debian

重命名容器

如果已经创建容器,可将容器名称 v m 1 重命名为 v m2

docker rename vm1 vm2

关闭容器

docker stop vm1

启动容器

docker start vm1

重启容器

docker restart vm1

结束容器

docker kill vm1

更多常用操作命令,参见:https://www.runoob.com/docker/docker-command-manual.html

映射端口

如果你有 n gin x 或者 s s h 端口需要暴露给外部使用,可以通过此方式进行映射。

docker run -d -it -p 0.0.0.0:2222:22 -p 8080:80 -p 4443:443 --name vm1 debian

解释上面命令:

-d 以后台方式创建运行

-it 以伪终端方式

-p 映射端口,分别映射了外部的 2 22 2 到内部的 2 2 端口(SSH),外部的 8 08 0 到内部的 8 0(HTTP),外部的 4 44 3 映射到内部的 4 43(HTTPS)

--name 命名容器为 v m1

这里外部的 2 22 2 端口,指定了主机名 0.0.0.0,意味着所有机器都可以访问,也可以指定为 1 27.0.0.1

可视化管理面板

Portaine r 是一个轻量级的 D ocke r 管理面板,和 R anche r 这种重量级选手没法比,Portaine r 倾向于单机的管理(后来发现能够添加多个单机节点切换着管理),当然,在 D ocke r 搞出 S war m 之后 P ortaine r 也借此实现了集群管理。

官方 d em o 体验:

http://demo.portainer.io/

用户名:admin

密码:tryportainer

安装

查看当前有哪些 P ortaine r 镜像

docker search portainer

下载镜像

docker pull portainer/portainer

运行

这里创建 p ortainer/portaine r 的容器,起名为 p ortainer-test,由于 9 00 0 端口占用,并将 8 80 0 端口映射到容器内的 9 00 0 端口。

docker run -d -p 8800:9000 \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    --name portainer-test \
    portainer/portainer

通过浏览器访问 8 80 0 端口,首次需要配置管理员密码。

这里选择 l oca l 单机版

可以简单看到我们的 d ocke r 宿主机

当前 l oca l 宿主机中有之前创建的 n gin x 容器以及这个 p ortaine r 容器在运行中,可以对其进行一些操作,简化了 d ocke r 命令。

中文文档

推荐阅读的中文文档

https://yeasy.gitbooks.io/docker_practice/content/container/run.html

Comments