一、前言
以下采用Ubuntu系统学习Docker容器化技术。
在Ubuntu中,系统为我们自动安装了一个叫apt
的软件管理器。我们可以输入apt install
来指定我们要安装什么软件,而Centos系统采用的yum进行安装的。所以此处采用apt-get命令安装。
二、安装Docker
不要忘了回到开头加上sudo,以管理员身份运行,sudo apt install docker.io
,输入密码,回车进行docker安装,输入y确认。或者直接输入:sudo apt-get install docker.io -y
查看安装是否成功sudo docker -v
或docker -v
查看版本,看到如下这样的输出,说明软件已经安装好了
三、Docker日常命令
1、查看Docker信息
sudo docker info
2、查看帮助文档
sudo docker --help
3、Docker服务的相关操作
这里主要介绍Linux版的Docker服务启动与关闭,如需Windows的请询问度娘,个人认为Windows版Docker还是很少装。本人也体验过Windows版从安装到使用都没用Linux版的好用。
注:systemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合
- systemctl start docker:Docker服务的启动
- systemctl stop docker:Docker服务的停止
- systemctl restart docker:Docker服务的重启
- systemctl status docker:查看Docker服务的状态
- systemctl enable docker:设置Docker开机启动
4、开放Docker的2375端口
- 首先编辑docker文件
sudo vim /lib/systemd/system/docker.service
- 然后找到ExecStart=/usr/bin/dockerd,在ExecStart=/usr/bin/dockerd后追加以下加粗部分
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock/
- 加载Docker守护线程
systemctl daemon-reload
- 重启Docker
systemctl restart docker
- 查看端口
netstat -tnlp |grep 2375
- 进行2375端口(或浏览器访问http://ip:2375/info)
curl 127.0.0.1:2375/info
- 注:如果系统没有安装curl命令。执行以下操作安装curl命令
sudo apt-get update
sudo apt install curl
如果上述第4步启动docker报错的话,
可以采用以下方案
注释:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
增加一行ExecStart=/usr/bin/dockerd
[root@web-dev1 system]# sudo vim /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service
[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 -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
然后修改daemon.json,追加hosts配置项
[root@web-dev1 system]# sudo vim /etc/docker/daemon.json
,增加以下配置
{
"registry-mirrors": ["https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com"],
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"log-driver": "json-file",
"log-opts": {"max-size": "10m","max-file": "10"},
"insecure-registries": ["1.1.1.1:2021"],
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}
保存以上配置后,重复执行上述第3、4、5、6步进行验证
5、Docker服务的常用操作
(1)、删除一个或多个容器
docker rm 容器ID…
(2)、查看容器的详细信息
docker inspect 44fc0f0582d9
(3)、显示所有容器
docker ps -a
(4)、显示正在运行的容器
docker ps
(5)、启动一个或多个已被停止的容器
docker start 容器名
(6)、停止一个运行中的容器
docker stop 容器名
(7)、重启容器
docker restart 容器名
(8)、进入Docker容器
####8214f935f4ea通过docker ps命令找到CONTAINER ID,推荐开发环境使用
第一种:attach命令
docker attach 8214f935f4ea(或者:sudo docker attach 4968e97f588d)
第二种:exec命令
sudo docker exec -it 4968e97f588d /bin/bash
第四种:进入一个已经在运行的容器,推荐生产环境使用
docker exec -it 8214f935f4ea /bin/bash
(9)、镜像操作
- 获取镜像
sudo docker pull ubuntu
- 查看所有镜像
sudo docker images
- 查询镜像(默认从Docker Hub获取)
sudo docker search ubuntu
- 删除镜像(根据镜像ID)
sudo docker rmi 0e2e63d6b600
- 创建镜像
sudo docker commit -a “Yongzheng” -m “Ubuntu:16” 4968e97f588d ubuntu:16.6
(10)、容器操作
容器查询
- 显示运行的容器
sudo docker ps
- 显示所有容器
sudo docker ps -a
容器启动
- 启动容器
sudo docker start 4968e97f588d
- 重新启动容器
sudo docker restart 4968e97f588d
- 终止容器
sudo docker stop 4968e97f588d
(11)、运行第一个容器
$sudo docker run --name 容器名 -i -t centos /bin/bash
新建容器基于centos基准镜像,将会从本地查找,找不到从互联网下载该镜像.
docker run 新建镜像命令
-i-t 为支持标准输入STDIN,分配伪tty终端
/bin/bash将会能够看到容器内的shell
eg、sudo docker run --name hello-world -i -t centos /bin/bash
6、扩展
docker search mysql 找 Docker Hub 上的 mysql 镜像
systemctl stop firewalld.service 关闭防火墙
docker inspect 容器id 查询容器信息
docker stop 容器id 停止容器id
docker rm 容器id 删除容器id
systemctl restart docker 重启docker容器
docker exec -it 容器ID /bin/bash 进入容器
docker rm $(sudo docker ps -a -q) 删除所有未运行的容器
docker search elasticsearch 搜索镜像文件
docker run 创建并启动一个容器,在run后面加上-d参数,则会创建一个守护式容器在后台运行。
docker ps -a 查看已经创建的容器
docker ps -s 查看已经启动的容器
docker start con_name 启动容器名为con_name的容器
docker stop con_name 停止容器名为con_name的容器
docker rm con_name 删除容器名为con_name的容器
docker rename old_name new_name 重命名一个容器
docker attach con_name 将终端附着到正在运行的容器名为con_name的容器的终端上面去,前提是创建该容器时指定了相应的sh
docker logs --tail=“10” 容器名称 查询容器日志信息