docker 安装

移除已安装的docker

1
$ sudo apt-get remove docker docker-engine docker.io

先安装必要的系统工具

1
2
3
4
5
6
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

安装证书(任选其一)

1
2
3
4
5
6
7
8

# docker官方
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# aliyun 替换为:http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg
# 腾讯云 替换为:http://mirrors.tencentyun.com/docker-ce/linux/ubuntu/gpg (内网)
# 腾讯云 替换为:http://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg (外网)

添加软件源信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14

$ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 镜像可以换成阿里云的
# https://download.docker.com/linux/ubuntu
# http://mirrors.aliyun.com/docker-ce/linux/ubuntu
# 腾讯云:内网 外网
# http://mirrors.tencentyun.com/docker-ce/linux/ubuntu
# http://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu

# stable 是稳定版 可以最后添加 edge (每月版) 和 testing (测试版)

安装docker-ce

1
2
3
4

$ sudo apt-get update
$ sudo apt-get install docker-ce

查看docker版本

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
$ docker version

Client: Docker Engine - Community
Version: 20.10.5
API version: 1.41
Go version: go1.13.15
Git commit: 55c4c88
Built: Tue Mar 2 20:18:05 2021
OS/Arch: linux/amd64
Context: default
Experimental: true

Server: Docker Engine - Community
Engine:
Version: 20.10.5
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 363e9a8
Built: Tue Mar 2 20:16:00 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.4
GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
runc:
Version: 1.0.0-rc93
GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
docker-init:
Version: 0.19.0
GitCommit: de40ad0

更换docker镜像源

1
2
3
4
5
6
7
8
$vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
$ sudo systemctl daemon-reload
$ sudo service docker restart

部分国内加速镜像列表

docker使用

命令总结

1
2
3
4
5
6
7
8
$ docker pull/push # 拉取/推送镜像
$ docker run # 运行容器
$ docker images # 本地镜像列表
$ docker ps -a # 正在运行的镜像 -a:所有
$ docker stop [id] # 停止id这个容器
$ docker rm [id] # 移除id容器
$ docker rmi [name] # 移除name镜像

拉取容器镜像

1
2
$ docker pull mysql:5.6
$ docker pull wordpress:latest

运行容器镜像

1
2
$ docker run --name wp-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6
$ docker run --name wp-wp --link wp-mysql -p 8080:80 -d wprdpress

–name : 容器命名

-e : 配置环境变量

-d : 让容器在后台运行

-p : 端口映射( 外部端口:内部端口 )

-i-t : 不清楚,一般都是两个一起加( -it )
-v : 挂载目录( 本地目录绝对路径:容器内目录 )
-w : 设置工作目录,执行命令时的当前目录
run 命令 后面还可以加上需要执行的命令及参数,如下

1
$ docker run --name my-node -d -it -v E:/develop/docker/:/home/node -p 8081:8888 -w /home/node node:6.11.3 /usr/local/bin/node ./hello.js

上面的命令就是启动node6.11.3镜像,并且命名为my-node,将(windows)宿主机E:/develop/docker/挂载到容器/home/node目录,并设置为工作目录,创建容器后执行/usr/local/bin/node命令运行/home/node/hello.js

进入容器操作

1
2
$ docker exec [OPTIONS] [容器id]] [执行命令] [参数]

Options:

-d :分离模式: 在后台运行

-t :分配一个伪终端

demo:

1
2
3
4
5
$ docker ps
CONTAINER ID IMAGE
197489c2c175 wordpress
$ docker exec -it 1974 /bin/bash #进入1974容器执行bash命令
root@197489c2c175:/var/www/html#

容器与宿主机互相复制文件

1
2
3
4
5
# 从docker容器复制到E盘根目录
$ docker cp 19748:/var/www/html/wp-includes/script-loader.php /etc/home/ubuntu/docker/

# 从E盘根目录复制script-loader.php到docker容器/var/www/html/wp-includes
$ docker cp /etc/home/ubuntu/docker/test.txt 19748:/var/www/html/wp-includes/