记录下Docker的基本操作

docker也学习了一段时间了,把常用的一些操作贴出方便以后查询。
从docker官网获取基本镜像,如CentOS、Nginx、MySQL等。官方所有提供的镜像都可以pull到本地(当然也可以自己制作镜像和仓库了)

root@ubuntu:~# docker pull centos:6
Pulling repository centos
a30bc9f3097e: Download complete 
511136ea3c5a: Download complete 
5b12ef8fd570: Download complete 
root@ubuntu:~# ulling metadata 
root@ubuntu:~# 
root@ubuntu:~# 
root@ubuntu:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              6                   a30bc9f3097e        3 weeks ago         202.6 MB
root@ubuntu:~# docker pull mysql:5.5
Pulling repository mysql
667bb345d412: Download complete 
667bb345d412: Pulling image (5.5) from mysql 
30d39e59ffe2: Download complete 
c90d655b99b2: Download complete 
b5e97c78b45c: Download complete 
cb0fa0867097: Download complete 
b36b6ddfcf01: Download complete 
8014d760fc97: Download complete 
299311e22152: Download complete 
59b6bd91022f: Download complete 
08934feb6acc: Download complete 
ea9a30b9d271: Download complete 
d9ce8453583f: Download complete 
ebc778162aba: Download complete 
fe4aea8454e3: Download complete 
2a14c4d2bda4: Download complete 
4474366d0a80: Download complete 
root@ubuntu:~# ulling metadata 
root@ubuntu:~# 
root@ubuntu:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              6                   a30bc9f3097e        3 weeks ago         202.6 MB
mysql               5.5                 667bb345d412        3 weeks ago         214.5 MB  

删除镜像。docker rmi 如果要删除容器则是 docker rm

#定位一个镜像和容器的方法有很多,一般可以用其ID号定位(用ID定位时所有ID相同的镜像都会被删除)
root@ubuntu:~# docker rmi 2485b0f89951
#删除多个镜像
root@ubuntu:~# docker rmi 61e8f94e1d65 d2d79aebd368 561ed4952ef0 3535cfc9f3ea 4b5657a3d162

创建容器,docker run。该命令还有很多重要的参数需要慢慢积累,比如创建一个用echo打印”hello world”任务的容器

root@ubuntu:~# docker run a30bc9f3097e /bin/echo "hello world"
hello world
root@ubuntu:~#
#当然了定位一个镜像的方法有很多种,可以用镜像名和镜像的标签定位
root@ubuntu:~# docker run centos:6 /bin/echo "hello world"
hello world
root@ubuntu:~#

每次使用 docker run 命令都会创建一个新的容器,即使使用的镜像和任务都相同。

root@ubuntu:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
5640a8ef8e8b        centos:6            /bin/echo 'hello wor   44 seconds ago      Exited (0) 43 seconds ago                       MyName              
8290df21ea68        centos:6            /bin/echo 'hello wor   30 minutes ago      Exited (0) 9 minutes ago                        angry_ardinghelli   
488140e90700        centos:6            /bin/echo 'hello wor   32 minutes ago      Exited (0) 32 minutes ago                       sleepy_shockley     
root@ubuntu:~#

如果要为新建容器使用 –name 参数

root@ubuntu:~# docker run --name "MyName" a30bc9f3097e /bin/echo "hello world"
hello world
root@ubuntu:~#

如果需要在容器停止后立即删除容器使用 –rm 参数,如果需要容器与用户交互使用 -i -t 参数,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。退出该交互模式后容器终止。

root@ubuntu:~# docker run -it --rm a30bc9f3097e /bin/bash
bash-4.1#

如果需要容器已守护态运行使用 -d 参数,进入正在运行的容器使用 docker attach 命令,退出时使用 Ctrl+P+Q键,不然该容器会停止。使用ssh进入容器就不存在这个问题了。

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
d1fe3e063eaa        centos:6            /bin/bash           About a minute ago   Up About a minute                       berserk_bohr        
root@ubuntu:~# docker attach d1fe3e063eaa
 
bash-4.1# 
bash-4.1# root@ubuntu:~# 
root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d1fe3e063eaa        centos:6            /bin/bash           5 minutes ago       Up 5 minutes                            berserk_bohr        
root@ubuntu:~#

容器创建或停止后可以用 docker ps 查看当前运行的容器,使用dicker ps -a 查看所有容器

root@ubuntu:~# docker ps 
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
f440014aebbc        0beee7f478c8        /entrypoint.sh mysql   12 minutes ago      Up 12 minutes       3306/tcp            mysql               
root@ubuntu:~#
root@ubuntu:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
8290df21ea68        centos:6            /bin/echo 'hello wor   11 minutes ago      Exited (0) 4 minutes ago                        angry_ardinghelli   
f440014aebbc        0beee7f478c8        /entrypoint.sh mysql   12 minutes ago      Up 12 minutes               3306/tcp            mysql               
488140e90700        centos:6            /bin/echo 'hello wor   13 minutes ago      Exited (0) 13 minutes ago                       sleepy_shockley     
root@ubuntu:~#

容器的停止、启动或重启用 docker stop、docker start、docker restart。容器的删除用 docker rm,删除一个正在运行的容器需要加上 -f 参数。

root@ubuntu:~# docker stop mysql
mysql
root@ubuntu:~# docker rm mysql
mysql
root@ubuntu:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
8290df21ea68        centos:6            /bin/echo 'hello wor   12 minutes ago      Exited (0) 5 minutes ago                        angry_ardinghelli   
488140e90700        centos:6            /bin/echo 'hello wor   13 minutes ago      Exited (0) 13 minutes ago                       sleepy_shockley     
root@ubuntu:~#

查看容器的输出信息用 docker logs,比如容器angry_ardinghelli任务就是输出一个“hello world”后终止,要查看容器的输出信息需要使用 docker logs命令。

root@ubuntu:~# docker logs angry_ardinghelli
hello world
hello world
hello world
root@ubuntu:~# docker start angry_ardinghelli
angry_ardinghelli
root@ubuntu:~# docker start angry_ardinghelli
angry_ardinghelli
root@ubuntu:~# docker logs angry_ardinghelli
hello world
hello world
hello world
hello world
hello world
root@ubuntu:~#

推荐一个不错的入门学习资料 http://dockerpool.com/static/books/docker_practice/index.html
文章出处:http://www.xiaomastack.com/2015/03/11/docker-base/

发表评论:

你的电子邮件地址将不会被公开.

4 + 6 =