0%

Docker详解(一):安装和常见操作

1. Docker Install

完整Docker安装过程参考链接。下面的安装以Ubuntu系统为例。

1.1 卸载原有安装

1
sudo apt-get remove docker docker-engine docker.io containerd runc

1.2 添加Docker源仓库

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=arm64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

1.3 安装Docker Engine

安装最新版本:

1
2
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

安装指定版本:

1
2
3
apt-cache madison docker-ce
# select from the all available versions
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

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
2
3
4
sudo groupadd docker # create a group named `docker`
sudo usermod -aG docker $USER # add current user to the group `docker`
newgrp docker # force re-evaluate the group membership
docker run hello-world # verify docker can be runned without sudo

若系统之前运行过Docker,修改后可能出现以下错误:

1
2
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

使用下述命令修复:

1
2
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.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
2
xhost +
sudo docker run -d -v /etc/localtime:/etc/localtime:ro -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --name {containerName} {imageName}

显示当前所有运行中的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}
------ 本文结束 ------