
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