docker官网地址  https://www.docker.com/

docker启动命令,docker重启命令,docker关闭命令

启动        systemctl start docker
守护进程重启   sudo systemctl daemon-reload
重启docker服务   systemctl restart  docker
重启docker服务  sudo service docker restart
关闭docker   service docker stop   
关闭docker  systemctl stop docker


docker run -p 8088:8080 tomcat

docker run -it --rm tomcat bash

docker run -it tomcat bash

docker run -it -p 8888:8080 tomcat bash                 #注意,交互式进入容器  需指定接口映射,并在容器内部启动服务
数据卷
docker run -d -p 8081:8080 --name tomcat-v  -v /home/webapps:/usr/local/tomcat/webapps tomcat

Dockfile

[root@localhost local]# cd /usr/local/docker/
[root@localhost docker]# mkdir tomcat
[root@localhost docker]# cd tomcat/
[root@localhost tomcat]# vim Dockerfile


[root@localhost tomcat]# docker build -t myshop .

 

 

 

 

 

[root@docker ~]# docker run -d --name nginx nginx:latest
#后台启动并运行一个名为nginx的容器,运行前它会自动去docker镜像站点下载最新的镜像文件

[root@docker ~]# docker run -d -P 80:80 nginx:latest
#后台启动并运名为nginx的容器,然后将容器的80端口映射到物理机的80端口

[root@docker ~]# docker run -d -v /docker/data:/docker/data -P 80:80 nginx:latest
#后台启动并运名为nginx的容器,然后将容器的80端口映射到物理机的80端口,并且将物理机的/docker/data目录映射到容器的/docker/data

[root@docker ~]# docker run -it  nginx:latest /bin/bash
#以交互式模式运行容器,然后在容器内执行/bin/bash命令

docker run centos /bin/bash                                                                  #启动一个容器并后台运行
docker exec -it 36afde543eb5 /bin/bash                                               #docker 进入一个运行的容器

###################################################################################################

Docker常用命令汇总,和常用操作举例

Docker命令

docker 常用命令如下

管理命令:
  container   管理容器
  image       管理镜像
  network     管理网络
  node        管理Swarm节点
  plugin      管理插件
  secret      管理Docker secrets
  service     管理服务
  stack       管理Docker stacks
  swarm       管理Swarm集群
  system      查看系统信息
  volume      管理卷
  
  如:docker container ls 显示所有容器
  
普通命令:
    
  attach     进入一个运行的容器
  build      从一个DockerFile构建镜像
  commit     从容器创建一个镜像
  cp          从容器和主机文件系统之间拷贝文件 
  create      创建一个容器
  diff        检查容器文件系统上的更改
  events      从服务器获取实时事件
  exec        在正在运行的容器中运行命令
  export      将容器的文件系统导出为tar存档
  history     显示镜像的历史记录
  images      查看镜像列表
  import      从归档文件中创建镜像
  info        显示系统范围的信息
  inspect     返回Docker对象的低级信息
  kill        kill运行中的容器
  load        从存档或者STDIN加载镜像
  login       登陆docker镜像仓库
  logout      退出docker镜像仓库
  logs        获取一个容器的日志
  pause       暂停一个或多个容器中的所有进程
  port        查看端口映射或容器的特定映射列表
  ps          查看容器列表
  pull        从镜像仓库拉取镜像
  push        将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
  rename      重命名容器
  restart     重启容器
  rm          删除容器
  rmi         删除镜像
  run         创建一个新的容器并运行一个命令
  save        将指定镜像保存成 tar 归档文件
  search      从Docker Hub搜索镜像
  start       启动容器
  stats       实时显示容器资源使用情况的统计信息
  stop       停止容器
  tag         标记本地镜像,将其归入某一仓库
  top         展示一个容器中运行的进程
  unpause     恢复容器中所有的进程
  update      更新容器配置
  version    显示Docker的版本信息
  wait        阻塞直到容器停止,然后打印退出代码
  
  如:docker images 显示所有镜像

下面将分别介绍一些常用操作

docker 拉取并运行一个镜像

1、下载镜像

$ docker pull centos 

2、查看已经下载的镜像

$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              49f7960eb7e4        6 weeks ago         200MB
    hello-world         latest              f2a91732366c        8 months ago        1.85kB

3、运行一个镜像并生成容器

//运行一个centos镜像,并执行/bin/bash命令
$ docker run centos /bin/bash

输入命令docker ps或者docker container ls查看运行中的容器,发现列表为空,原因是容器在执行完成命令后会自动退出,下面介绍让让容器停留在后台的方法

$ docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    
$ docker container ls
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

使用命令docker ps -a或者docker container ls -a 查看所用容器,并显示了容器的状态

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
5525373371f3        centos              "/bin/bash"         7 minutes ago       Exited (0) 7 minutes ago                        nifty_rosalind

docker 让镜像运行停留在后台

1、启动一个容器并后台运行

docker run命令 通过增加-i -t参数可以让容器并进入容器

docker run -i -t centos /bin/bash

按 Ctrl + P + Q 退出容器,再用 docker ps 进行查看

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
61b041e4e063        centos              "/bin/bash"         3 minutes ago       Up 3 minutes                            nervous_saha

状态显示仍在运行中

docker 进入一个运行的容器

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
36afde543eb5        mysql:5.7           "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:3306->3306/tcp   mymysql

$ docker exec -it 36afde543eb5 /bin/bash

-i 保持STDIN打开 -t 分配一个虚拟TTY窗口

docker 提交一个镜像到镜像仓库

1、首先到https://hub.docker.com/注册一个账号,保存下用户名密码 2.控制台登陆dockerhub账户

$ docker login
    输入刚注册的用户名密码

2、查看镜像

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              f06a5773f01e        2 days ago          83.4MB

3、选择需要上传的镜像,重命名为指定的格式

$ docker  tag redis username/myredis:v1
username:为自己注册的用户名

myredis:为自己为镜像取的名字

v1:为任意设置的版本号

4、完成上述操作后,即可提交镜像到自己的仓库

docker push username/myredis:v1

docker 映射文件从宿主机到容器,端口号映射

//将宿主机的81端口映射到容器的80端口
//将宿主机的/develop/data卷,映射到容器的/data卷

$ docker run -i -t -p 81:80 -v /develop/data:/data  centos /bin/bash

-p:映射端口号 -v:磁盘目录映射

docker 更改端口号映射

运行中的容器无法映射新的端口号,也无法更改端口号映射,但可以通过两种方法解决

1、iptable转发端口

//查看容器ip
$ docker inspect 36afde543eb5 | grep IPAddress
"IPAddress": "172.17.0.2"

//将主机的8081端口映射到宿主机的8080端口
$ iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.2:8080

2、先提交容器为镜像,再运行这个容器,同时指定新的端口映射

//提交容器为镜像
$ docker commit 9995ffa15f46  mycentos:0.1
//停止旧的容器
$ docker stop 9995ffa15f46
//重新从旧的镜像启动容器
$ docker run -i -t  -p 8081:8080  mycentos:0.1

从DockerFile创建镜像

$ docker build -t myimage:v1 .

-t :指定镜像名称和标签,格式为'name:tag' .: 最后一个点代表当前目录,也可以换成其它的路径

 

原文地址:https://www.cnblogs.com/cblogs/p/dockerCommand.html

 

 

##########################################################################################

外部访问docker容器(docker run -p/-P 指令)

https://www.jianshu.com/p/2b424c3bf0f7

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P(大写) 或 -p (小写) 参数来指定端口映射。
(1)当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
使用 docker ps 可以看到,本地主机的 49155 被映射到了容器的 5000 端口。此时访问本机的 49155 端口即可访问容器内 web 应用提供的界面。

$ sudo docker run -d -P training/webapp python app.py
$ sudo docker ps -l
CONTAINER ID  IMAGE                   COMMAND       CREATED        STATUS        PORTS                    NAMES
bc533791f3f5  training/webapp:latest  python app.py 5 seconds ago  Up 2 seconds  0.0.0.0:49155->5000/tcp  nostalgic_morse

同样的,可以通过 docker logs 命令来查看应用的信息。

$ sudo docker logs -f nostalgic_morse
* Running on http://0.0.0.0:5000/
10.0.2.2 - - [23/May/2014 20:16:31] "GET / HTTP/1.1" 200 -
10.0.2.2 - - [23/May/2014 20:16:31] "GET /favicon.ico HTTP/1.1" 404 -

(2)-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPortip:hostPort:containerPortip::containerPort

  • hostPort:containerPort(映射所有接口地址)
    将本地的 5000 端口映射到容器的 5000 端口,可以执行如下命令:
    $ sudo docker run -d -p 5000:5000 training/webapp python app.py 此时默认会绑定本地所有接口上的所有地址。

  • ip:hostPort:containerPort (映射指定地址的指定端口)
    指定映射使用一个特定地址,比如 localhost 地址 127.0.0.1
    $ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

  • ip::containerPort (映射指定地址的任意端口)
    绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口。
    sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
    还可以使用 udp 标记来指定 udp 端口
    $ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

查看映射端口配置
使用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址

$ docker port nostalgic_morse 5000
127.0.0.1:49155.

注意:

  • 容器有自己的内部网络和 ip 地址(使用 docker inspect 可以获取所有的变量,Docker 还可以有一个可变的网络配置。)
  • -p 标记可以多次使用来绑定多个端口
    例如

$ sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

原文链接:https://yeasy.gitbooks.io/docker_practice/content/network/port_mapping.html

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐