Docker简介
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。
Docker由以下几个部分组成:
- Docker Client 客户端
- Docker Daemon 守护进程
- Docker Image 镜像
- Docker Container容器
Docker安装
官方Debian存储库中提供的Docker安装包不是最新版本,要从官方Docker存储库安装,需要添加一个新的包源,从Docker添加GPG密钥以确保下载有效,然后安装该包。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 更新包列表
sudo apt update
sudo apt upgrade
# 安装通过HTTPS添加新存储库所需的依赖项
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
# 导入存储库的GPG密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
# 将Docker存储库添加到APT源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
# 更新包数据库
sudo apt update
# 确保从Docker repo而不是默认的Debian repo安装
apt-cache policy docker-ce
# 安装Docker
sudo apt install docker-ce
# 查看运行状态
sudo systemctl status docker
|
现在Docker不仅可以提供Docker服务(守护程序),还可以提供docker命令行实用程序或Docker客户端。
默认情况下,docker命令只能由root用户或docker组中的用户运行,该用户在Docker的安装过程中自动创建。如果要在运行docker命令时避免键入sudo,需将用户名添加到docker组中。
1
2
3
4
5
6
7
8
9
10
|
# 将当前用户添加到docker组中
sudo usermod -aG docker ${USER}
# 或者使用下面的命令
sudo gpasswd -a ${USER} docker
# 更新用户组
newgrp docker
# 确认用户已添加到docker组
id -nG
# 查看版本
docker -v
|
安装QQ和Wechat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# 下载镜像
docker pull bestwu/qq
docker pull bestwu/wechat
# 允许所有用户访问X11服务
xhost +
# 启动QQ
docker run -d --name qq --device /dev/snd \
-v $HOME/TencentFiles:/TencentFiles \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e XMODIFIERS=@im=ibus \
-e QT_IM_MODULE=ibus \
-e GTK_IM_MODULE=ibus \
-e DISPLAY=unix$DISPLAY \
-e AUDIO_GID=`getent group audio | cut -d: -f3` \
-e VIDEO_GID=`getent group video | cut -d: -f3` \
-e GID=`id -g` \
-e UID=`id -u` \
bestwu/qq:latest
# 启动wechat
docker run -d --name wechat --device /dev/snd \
-v $HOME/WeChatFiles:/WeChatFiles \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-e XMODIFIERS=@im=ibus \
-e QT_IM_MODULE=ibus \
-e GTK_IM_MODULE=ibus \
-e AUDIO_GID=`getent group audio | cut -d: -f3` \
-e GID=`id -g` \
-e UID=`id -u` \
bestwu/wechat
# 停止容器
docker stop qq
# 删除容器
docker rm qq
# 如果容器没有退出需要强行删除
docker rm -f qq
# 再次启动
docker start qq
|
Docker常用命令
- docker 查看所有可用的子命令
- docker [subcommand] –help 查看子命令帮助信息
- docker info 查看Docker相关信息
- docker run hello-world 运行hello-world镜像
- docker search ubuntu 搜索ubuntu镜像
- docker pull ubuntu 下载ubuntu镜像到本机
- docker images 查看已下载镜像
- docker ps 查看活动的容器
- docker ps -a 查看所有容器
- docker ps -l 查看最新的容器
- docker start ID 启动已停止的容器(ID)
- docker stop NAME 停止正在运行的容器(NAME)
- docker rm NAME 删除容器
Docker中国源
国内的镜像源有:
创建或修改vim /etc/docker/daemon.json
文件:
1
2
3
4
5
6
7
8
|
{
"registry-mirrors" : [
"http://ovfftd6p.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
]
}
|
然后重启守护进程:
1
2
|
sudo systemctl daemon-reload
sudo systemctl restart docker
|