安装docker
Debian/Ubuntu 用户
开启 Enable Docker repository
如果已安装Docker,先卸载它
sudo apt-get remove docker docker-engine docker.io
这条命令没验证过,后面有专门的卸载章节
1.首先更新包列表并安装必要的依赖库,以此实现通过HTTPS来添加新的repository
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
2.通过curl命令来导入GPG密钥 - ubuntu version:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- debian version:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
3.将Docker APT repository添加到你的系统
对于 amd64 架构的计算机,添加软件仓库:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
可以使用清华镜像
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
如果你是树莓派或其它ARM架构计算机,请运行:
echo "deb [arch=armhf] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
安装Docker CE
现在Docker repository已开启,你可以开始安装你想要的Docker版本了
1.使用下面命令安装最新的docker版本,如果你想安装指定版本,跳过这一步到下一步
sudo apt update
sudo apt install docker-ce
2.如果要安装指定版本,首先列出Docker repository里那些可用的版本
apt list -a docker-ce
输出如下
iot@flyway:~$ sudo apt list -a docker-ce
Listing... Done
docker-ce/bionic 5:19.03.1~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:19.03.0~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.8~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.7~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.6~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.5~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.4~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.3~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.2~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.1~3-0~ubuntu-bionic amd64
docker-ce/bionic 5:18.09.0~3-0~ubuntu-bionic amd64
docker-ce/bionic 18.06.3~ce~3-0~ubuntu amd64
docker-ce/bionic 18.06.2~ce~3-0~ubuntu amd64
docker-ce/bionic 18.06.1~ce~3-0~ubuntu amd64
docker-ce/bionic 18.06.0~ce~3-0~ubuntu amd64
docker-ce/bionic 18.03.1~ce~3-0~ubuntu amd64
Docker版本显示在第二列,如果你要安装版本18.09.0
,可以使用下面命令:
sudo apt install docker-ce=5:18.09.0~3-0~ubuntu-bionic
Docker服务安装完成后会自动启动,通过下面命令验证
sudo systemctl status docker
输出大概如下
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-08-06 00:02:51 MDT; 7s ago
Docs: https://docs.docker.com
Main PID: 17333 (dockerd)
Tasks: 19
CGroup: /system.slice/docker.service
├─17333 /usr/bin/dockerd -H unix://
└─17517 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8080 -container-ip 1
輸入
docker --version
查看是否安裝成功
iot@flyway:~$ docker --version
Docker version 19.03.1, build 74b1e89
卸载docker:
在删除Docker之前,请先删除所有的containers, images, volumes, and networks
sudo apt purge docker-ce
sudo apt autoremove
安装docker-compose
1.使用curl
命令将Docker compose二进制下载到/usr/local/bin
:
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.下载完成之后,给compose binary添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
3.通过下面命令确认docker-compose安装成功
iot@flyway:~$ docker-compose version
docker-compose version 1.24.1, build 4667896
docker-py version: 3.7.3
CPython version: 2.7.15+
OpenSSL version: OpenSSL 1.1.1 11 Sep 2018
简易安装
安装环境: Ubuntu 18.04.1
直接使用命令
apt install docker docker-compose
使用docker-compose创建WordPress应用
本节,我们将在Ubuntu 18.04上创建一个多容器的WordPress应用
首先给这个项目创建目录my_app
,并进入该目录
mkdir my_app
cd my_app
在该项目目录下创建文件docker-compose.yml
nano docker-compose.yml
添加以下内容
version: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
现在,我们逐行来分析这些代码
第一行,我们指定了compose文件版本。
接下来,我们定义了两个服务,db
和wordpress
, 每个服务运行一个image,并在docker-compose运行时创建一个独立的容器
db
服务:
- 使用mysql:5.7, 如果系统上没有这个image,它会从Docker Hub public repository里去拉取
- 使用
always
重启策略(policy) - 创建卷(volume)
db_data
来实现持久数据库 Creates a named volume db_data to make the database persistent. - 为
mysql:5.7
定义环境变量
wordpress
服务:
- 使用wordpress image, 如果系统上没有这个image,它会从Docker Hub public repository里去拉下来
- Mounts the wp_data directory on the host to /var/lib/mysql inside the container.
- 将容器上的exposed端口80转发到host主机8080端口
- 为image
wordpress
定义环境变量 depends_on
说明书定义了两个服务之间的依赖,就这个例子来说,db会在wordpress之前启动.
在项目目录下,执行下面命令启动WordPress应用
docker-compose up
输出如下
iot@flyway:~/my_app$ sudo docker-compose up
Creating network "myapp_default" with the default driver
Creating volume "myapp_db_data" with default driver
Creating volume "myapp_wp_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
0a4690c5d889: Pull complete
......
2406ac6e266f: Pull complete
Digest: sha256:540488d8f0e04c1077d17934d1c1511fe417e2221dff508ce4621f5efe6131db
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
f5d23c7fed46: Pull complete
.............
0d7f34f2c87d: Pull complete
Digest: sha256:acf0e97b2cb3f780fb7944036e1c57bca4da3c2b9b608b818f6bb6c5409be459
Status: Downloaded newer image for wordpress:latest
Creating myapp_db_1 ...
Creating myapp_db_1 ... done
Creating myapp_wordpress_1 ...
Creating myapp_wordpress_1 ... done
Attaching to myapp_db_1, myapp_wordpress_1
....
wordpress_1 | [Tue Aug 06 03:30:47.087261 2019] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.3.8 configured -- resuming normal operations
wordpress_1 | [Tue Aug 06 03:30:47.087722 2019] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose 会把两个image都拉到本地, 启动两个容器并在项目目录下创建wp_data
目录.
在你的浏览器访问http://127.0.0.1:8080/,就可以看到wordpress的安装界面.
至此,wordpress应用已启动并运行起来了,你可以继续去完成主题和插件等
CTRL+C
命令可以停止compose
你可以通过添加flag -d
, 使用detached mode来启动compose
docker-compose up -d
iot@flyway:~/my_app$ sudo docker-compose up -d
Starting myapp_db_1 ...
Starting myapp_db_1 ... done
Starting myapp_wordpress_1 ...
Starting myapp_wordpress_1 ... done
如果要查看运行服务,使用-p
选项
docker-compose ps
iot@flyway:~/my_app$ sudo docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------
myapp_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
myapp_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
当compose运行在detached mode时,使用下面命令终止服务
docker-compose stop
如果你想完全移除容器,使用down
选项
docker-compose down
添加--volumes
可以同时移除数据卷(data volumes)
卸载Docker Compose
sudo rm /usr/local/bin/docker-compose (手册)
sudo rm /usr/bin/docker-compose
常见问题
ERROR: yaml.scanner.ScannerError: mapping values are not allowed here in "./docker-compose.yml", line 611, column 26
- docker问题:ERROR: yaml.scanner.ScannerError: mapping values are not allowed here in "./docker-compose.yml"
- https://stackoverflow.com/questions/39077526/docker-compose-file-has-yaml-scanner-scannererror
no acceptable C compiler found in $PATH when installing python
https://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python
Debian base:
apt-get install build-essential
如何判断版本
iot@flyway:/$ cat /proc/version
Linux version 4.15.0-29-generic (buildd@lgw01-amd64-057) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018
参考文档
- https://linuxize.com/post/how-to-install-and-use-docker-on-ubuntu-18-04/
- https://linuxize.com/post/how-to-install-and-use-docker-compose-on-ubuntu-18-04/
- https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/