docker 入门
目录
docker的安装和配置镜像大家从网上搜索即可,本文不在叙述.
镜像操作
镜像拉取
docker pull 镜像名[:标签]
如果没有写标签会拉取最新镜像
如拉取Ubuntu16.04
docker pull ubuntu:16.04
执行完就可以看到系统开始下载镜像
可以使用docker pull --help
查看更详细的使用方法和参数
列出本地镜像
docker image ls 或者 docker images
例如:
MacBook-Pro:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 113a43faa138 2 weeks ago 81.2MB
nginx latest cd5239a0906a 2 weeks ago 109MB
mysql latest a8a59477268d 7 weeks ago 445MB
hello-world latest e38bc07ac18e 2 months ago 1.85kB
MacBook-Pro:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 113a43faa138 2 weeks ago 81.2MB
nginx latest cd5239a0906a 2 weeks ago 109MB
mysql latest a8a59477268d 7 weeks ago 445MB
hello-world latest e38bc07ac18e 2 months ago 1.85kB
镜像删除
docker image rm 镜像1 镜像2...
其中镜像可以是镜像名,摘要,或镜像ID
使用镜像ID可以使用ID前缀,只要能够区分其他的ID即可
如上述镜像列表中的ID,第一个字母都不一样,即可使用docker image rm a 来删除mysql镜像
例如:
MacBook-Pro:~$ docker image rm a
Untagged: mysql:latest
Untagged: mysql@sha256:d60c13a2bfdbbeb9cf1c84fd3cb0a1577b2bbaeec11e44bf345f4da90586e9e1
Deleted: sha256:a8a59477268d92f434d86a73b5ea6de9bf7b05d536359413e79da1feb31f87aa
Deleted: sha256:f358e08cb953f45d72ae325ac86ad9b801d03e5adb8bee4422f85c3535f66e22
Deleted: sha256:58d319c3d623abe5925cccfff62d39f498d7a3f57d308016d59a7e95c170c7e4
Deleted: sha256:18c75ab9c315610c138a716f5383b1a7c05c5ec6f1037d9eaf3efa336002cbc5
Deleted: sha256:3c795791e99f84a81b8fef5bbfa9c59730bcf8d41f8c7bae2865e7bd55d144cf
Deleted: sha256:7afb5d8f97996db5d66a514ce726bfee8aa97636e8d9186733cec5e7fa167205
Deleted: sha256:d589bed588b460c6e6b2bfa40ab45881bf69f82b410512a7cf83ba1063f80e6e
Deleted: sha256:01d21a0d989513581e03a77e1a5c62659526338c405591557dcbc7e72668274d
Deleted: sha256:3981315864dc8a7e7ea59fa2bb695a7f8935c4037f4b69aafd12668dc6187cd1
Deleted: sha256:457c18e00cb3e4587dad7e87dd0dd3f032931174769e81ea8edd3801aa362fbc
Deleted: sha256:608379aac1e9f90f6d031c39103c7c89d603f742d67024fd6251fbc091f8f5cb
Deleted: sha256:1e80702bf4bc653ba7bb97198430a24ed775dfb6839f97440197430fc3a1fcad
这时在看类表中,已经没有mysql了
MacBook-Pro:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 113a43faa138 2 weeks ago 81.2MB
nginx latest cd5239a0906a 2 weeks ago 109MB
hello-world latest e38bc07ac18e 2 months ago 1.85kB
容器操作
运行容器
docker run 镜像 命令
如果运行了本地没有的镜像则docker会先把镜像下载到本地然后运行
可以通过docker run --help查看其它用法
例如:
docker run ubuntu /bin/echo "aaa"
输出:
aaa
这种操作感觉和在本地操作一样,没什么新鲜的,下面我们运行一个容器并且可以在控制台操作它
docker run -i -t ubuntu /bin/bash
其中-i为交互模式, -t是分配伪终端, 也可以写在一起-it
如果想后台运行还可以使用 -d
如果想退出后自动删除容器 --rm
例如
MacBook-Pro:~$ docker run -i -t ubuntu /bin/bash
root@eb1117aac5da:/#
root@eb1117aac5da:/# ps
PID TTY TIME CMD
1 pts/0 00:00:00 bash
10 pts/0 00:00:00 ps
这样我们就进入容器内部的伪终端了,我们就可以随意玩耍了
查看正在运行的容器
docker container ls
MacBook-Pro:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
817fccd2538a nginx "nginx -g 'daemon of…" 24 hours ago Up 24 hours 0.0.0.0:80->80/tcp webserver
如果想查看全部(包含退出的)容器还可以加 -a参数
docker container ls -a
MacBook-Pro:~ fengbinshi$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb1117aac5da ubuntu "/bin/bash" 4 minutes ago Exited (0) 13 seconds ago zen_dijkstra
e90252aebddc ubuntu "/bin/echo aaaa" 13 minutes ago Exited (0) 13 minutes ago gifted_torvalds
817fccd2538a nginx "nginx -g 'daemon of…" 24 hours ago Up 24 hours 0.0.0.0:80->80/tcp webserver
可以看到刚才运行过的两个容器
容器的启动,停止,重启
启动:
docker container start 容器1 容器2....
可以启动已经退出的容器
停止:
docker container stop 容器1 容器2....
可以停止正在运行的容器
重启:
docker container restart 容器1 容器2....
可以重启正在运行的容器
进入容器
docker attach 容器
docker exec 参数 容器 命令 命令参数
如果使用attach后在控制台执行exit会导致容器停止
exec用法和run相似,不过run是创建运行容器而exec是进入正在运行的容器
下面的例子我们会进入后台运行的ubuntu
MacBook-Pro:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb1117aac5da ubuntu "/bin/bash" 14 minutes ago Up About a minute zen_dijkstra
817fccd2538a nginx "nginx -g 'daemon of…" 24 hours ago Up 24 hours 0.0.0.0:80->80/tcp webserver
MacBook-Pro:~$ docker attach eb1117aac5da
root@eb1117aac5da:/# exit
exit
MacBook-Pro:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
817fccd2538a nginx "nginx -g 'daemon of…" 25 hours ago Up 25 hours 0.0.0.0:80->80/tcp webserver
可以看到,使用attach进入容器后使用exit退出后,ubuntu容器就会停止
下面我们使用exec看一下
MacBook-Pro:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb1117aac5da ubuntu "/bin/bash" 27 minutes ago Up 2 minutes zen_dijkstra
817fccd2538a nginx "nginx -g 'daemon of…" 25 hours ago Up 25 hours 0.0.0.0:80->80/tcp webserver
MacBook-Pro:~$ docker exec -it eb1117aac5da bash
root@eb1117aac5da:/# exit
exit
MacBook-Pro:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eb1117aac5da ubuntu "/bin/bash" 27 minutes ago Up 3 minutes zen_dijkstra
817fccd2538a nginx "nginx -g 'daemon of…" 25 hours ago Up 25 hours 0.0.0.0:80->80/tcp webserver
可以看出,ubuntu没有退出
删除容器
docker container rm 容器 #删除指定容器
docker container prune #删除所有已经停止的容器