1. Docker Install
完整Docker安装过程参考链接。下面的安装以Ubuntu系统为例。
1.1 卸载原有安装
1 | sudo apt-get remove docker docker-engine docker.io containerd runc |
1.2 添加Docker源仓库
1 | sudo apt-get update |
1.3 安装Docker Engine
安装最新版本:
1 | sudo apt-get update |
安装指定版本:
1 | apt-cache madison docker-ce |
1.4 验证安装(Optional)
1 | sudo docker run hello-world # This command downloads a test image and runs it in a container |
1.5 卸载Docker
使用以下命令卸载安装:
1 | sudo apt-get purge docker-ce docker-ce-cli containerd.io |
如需彻底删除Docker产生的文件,执行以下命令:
1 | sudo rm -rf /var/lib/docker |
2. Docker配置
本节内容不影响Docker的正常使用,但恰当的配置可以改善Docker使用体验。
2.1 允许非root用户使用docker
因Docker使用Unix socket进行通讯,而在Linux系统中仅root用户可以访问Unix socket,所以通常使用Docker时需要添加sudo
命令。为了解决这个问题,需要为系统添加一个名为docker
的组,设置该组拥有和root
相同的权限,并令当前用户属于该组。
1 | sudo groupadd docker # create a group named `docker` |
若系统之前运行过Docker,修改后可能出现以下错误:
1 | WARNING: Error loading config file: /home/user/.docker/config.json - |
使用下述命令修复:
1 | sudo chown "$USER":"$USER" /home/"$USER"/.docker -R |
本部分内容完整版见链接。
3. Docker使用
3.1 获取Image
List all image
:
1 | docker images ls |
产出指定Image
:
1 | docker image rm {imageName} |
3.2 创建Container
Create container
from image
:
1 | docker run -d --name={containerName} {imageName} tail -f /dev/null |
Create container
with X11
from image
:
1 | xhost + |
显示当前所有运行中的container
:
1 | docker container ls |
显示当前已创建的所有container
:
1 | docker container ls -a |
删除指定container
:
1 | docker container rm {containerName} |
3.3 Container的运行与停止
Start or stop container
:
1 | sudo docker start/stop {containerName} |
Open a running container
in bash
:
1 | sudo docker exec -it {containerName} bash |
3.4 Container和Host间操作
Copy files between host
and container
:
1 | sudo docker cp ~/code/notepanda {containerId}:/code |
3.5 保存Container
Save container
as image
:
1 | sudo docker commit {containerId} {savedImageName} |
3.2 Update Image
Update image
with container
:
1 | sudo docker commit {containerId} {savedImageName} |
3.3 Pull and Push
Login
1 | sudo docker login |
Push localimage
to remote:
1 | sudo docker push {userName}/{imageName} |