docker 常用命令

in docker with 0 comment

1.把容器保存为镜像

# docker commit -m "centos_with_httpd" -a "90root" 8e2547638bb3 centos_with_httpd:v1      #容器保存为镜像
# docker images         #查看镜像
REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos_with_httpd           v1                  aa7cc183e588        18 seconds ago      366.6 MB
#  docker run -itd -p 5123:80 centos_with_httpd:v1 bash       #将容器的80端口映射到宿主机的5123端口
        //-t - 分配一个(伪)tty (link is external)
        //-i - 交互模式 (so we can interact with it) 
# docker exec -it 23ecd12c7a10 bash     #进入容器

2.查看容器日志

docker logs -f <容器名orID>

3.查看正在运行的容器

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                      COMMAND             CREATED             STATUS              PORTS               NAMES
9895bbb0ebae        104.250.142.171:5000/centos_yxdown_mod:1   "bash"              52 minutes ago      Up 52 minutes                           romantic_brattain   
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                                      COMMAND                CREATED             STATUS                    PORTS               NAMES
9895bbb0ebae        104.250.142.171:5000/centos_yxdown_mod:1   "bash"                 52 minutes ago      Up 52 minutes                                 romantic_brattain   
2a578421a8c9        104.250.142.171:5000/centos_yxdown_mod:1   "--net=host bash"      52 minutes ago                                                    boring_einstein     
e1ac097f5000        104.250.142.171:5000/centos_yxdown_mod:1   "-v /home/:/home/ -v   55 minutes ago                                                    adoring_thompson    
b16fd10dcb85        registry                                   "/entrypoint.sh /etc   8 days ago          Exited (2) 8 days ago                         jolly_pare          
80ac5f25c6b7        centos                                     "/bin/bash"            8 days ago          Exited (137) 8 days ago                       high_wright         

4.删除所有容器

docker rm $(docker ps -a -q)

删除单个容器


docker rm <容器名orID>

5.停止、启动、杀死一个容器

docker stop <容器名orID>
docker start <容器名orID>
docker kill <容器名orID>

6.查看所有镜像

#docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos_yxdown_mod_1                   1                   b44a0c03f5cd        About an hour ago   554.4 MB
localhost:5000/centos_yxdown_mod      1                   b44a0c03f5cd        About an hour ago   554.4 MB
centos_with_nginx                     latest              3c38e3bc5adf        2 days ago          520.3 MB
localhost:5000/centos-6-x86_minimal   latest              b98100c04fab        2 days ago          343.8 MB
centos-6-x86_minimal                  latest              b98100c04fab        2 days ago          343.8 MB
registry                              2                   ad8da6d14f6d        4 weeks ago         33.28 MB

7.删除所有镜像

docker rmi $(docker images | grep none | awk '{print $3}' | sort -r)

8.运行一个新容器,同时为它命名、端口映射、文件夹映射。以centos:latest镜像为例

docker run --name new_dockername -p 80:80 -p 8000:8080 -d -v /var/files:/redmine/files -v /var/mysql:/var/lib/mysql centos:latest

9.一个容器连接到另一个容器

docker run -i -t --name test -d -link mysql:db   centos-server env

//容器连接到mysql容器,并将mysql容器重命名为db。这样,new_test容器就可以使用db的相关的环境变量了。"centos-server"为test容器的镜像;env为环境变量

10.拉取镜像

docker pull <镜像名:tag>

11.当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。

机器a

docker save busybox-1 > /home/save.tar

使用scp将save.tar拷到机器b上,然后:

docker load < /home/save.tar

12.构建自己的镜像

docker build -t <镜像名> <Dockerfile路径>

如Dockerfile在当前路径:

docker build -t xx/gitlab .

13.后台运行(-d)、并暴露端口(-p)

docker run -d -p 127.0.0.1:33301:22 centos6-ssh

14.从container中拷贝文件出来

docker cp 7bb0e258aefe:/etc/debian_version /tmp

//7bb0e258aefe是容器Id;
注意:只要7bb0e258aefe没有被删除,文件命名空间就还在,可以放心的把exit状态的container的文件拷贝出来

15.推送镜像到本地仓库

docker push localhost:5000/centos:1
Responses