本文将介绍在ubuntu19.10上安装docker的全过程。
docker的安装
-
安装docker
1
sudo apt-get install docker.io
-
测试是否安装成功
1
sudo docker #会打印docker的所有命令
-
更换docker源为国内源
新建如右文件:
sudo vim /etc/docker/daemon.json
,填入如下信息:1 2 3
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
接着,重启docker服务:
1 2
systemctl daemon-reload systemctl restart docker.service
额外的内容-支持的国内源有:
1 2 3 4
网易: http://hub-mirror.c.163.com 中科大: https://docker.mirrors.ustc.edu.cn 阿里云: https://pee6w651.mirror.aliyuncs.com Docker官方中国区: https://registry.docker-cn.com
创建容器
第一个docker容器
docker允许在容器内运行应用程序,使用docker run
命令在容器内运行一个应用程序。
1
2
jerry@ubuntu:~$ sudo docker run ubuntu:12.04 /bin/echo "Hello world"
Hello world
参数解析:
- docker : docker执行程序;
- run : docker命令,用以运行一个容器;
- ubuntu:12.04 : 指定要运行的镜像,docker首先从本地查找镜像,如果不存在,docker就会从镜像仓库Docker Hub下载公共镜像;
- /bin/echo “Hello world” : 在启动的容器里执行的命令;
以上命令可以解释为:docker以 ubuntu12.04 镜像创建了一个新容器,然后在该容器里执行 /bin/echo "Hello world"
;
值得注意的是:执行命令结束后该容器也会退出(Exited状态),再次启动该容器会重新执行一次关联命令,可通过logs查看打印。
方便起见,后面内容使用root账户操作。
交互式的容器
1
2
3
root@ubuntu:~# docker run -it ubuntu:12.04 /bin/bash
root@798449ab3710:/#
root@798449ab3710:/#
参数解析:
- -t : 在新容器内指定一个伪终端或终端;
- -i : 允许你对容器内的标准输入 (STDIN) 进行交互;
- /bin/bash : 在启动的容器里新开一个控制台;
注意第二行root@798449ab3710:/#
,此时我们已进入一个 ubuntu12.04 系统的容器;
退出交互容器使用:exit
后台容器
1
2
root@ubuntu:~# docker run -d ubuntu:12.04 /bin/sh -c "while true; do echo hello world; sleep 5; done"
55911c51cc4820d013c0de2877f84c4a70684822192b94a0ee6c06034cbc882f
参数解析:
- -d : 后台运行;
- /bin/sh -c “while true; do echo hello world; sleep 5; done” : 在启动的容器里每5s打印一次“hello world”;
操作容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker ps #列出正在运行的容器
docker ps -a #列出所有容器(主要用来查看容器id和name)
docker run --name mynginx -d nginx:latest #运行一个容器并命名
docker start/stop/restart [容器id/name ...] #启动/停止/重启容器
docker kill [容器id/name ...] #杀掉容器
docker rm [容器id/name ...] #删除容器
docker container prune #清理所有停止状态的容器
docker logs CONTAINER #列出指定容器日志
docker port CONTAINER #列出指定容器端口映射
docker attach CONTAINER #连接到正在运行的后台容器(建议-itd的)
docker exec -it CONTAINER /bin/bash #在正在运行的容器中执行命令(容器系统中再开一个进程)
docker top CONTAINER #查看指定容器中正在运行的进程
操作仓库
1
2
docker images #列出本地仓库
docker rmi [镜像{name:tag}/id ...] #删除容器
docker导出导入
一种是使用 save 和 load 命令(操作对象是镜像):
1
2
docker save ubuntu:load > ubuntu.tar
docker load < ubuntu.tar
另一种是使用 export 和 import 命令(操作对象是容器):
1
2
docker export 98ca36 > ubuntu.tar
cat ubuntu.tar | sudo docker import - ubuntu:import
需要注意两种方法不可混用。