Docker初学者的常用命令

十年热恋 提交于 2020-01-04 03:18:32

一些Docker常用的命令整理

常用可选参数说明:

* -i 表示以交互模式运行容器。
* -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
* --name 为创建的容器命名。
* -v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 
* -d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。 
* -p 表示端口映射,即宿主机端口:容器中端口。
* --network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。

创建容器

docker run [option] 镜像名 [向启动容器中传入的命令]

交互式容器

docker run -it --name=ubuntu1 镜像名 /bin/bash

守护式容器

docker run -dit --name=ubuntu1 镜像名 /bin/bash

进入到容器内部

docker exec -it ubuntu2 /bin/bash

将容器制作成镜像

docker commit 容器名 镜像名

镜像打包备份

docker save -o 保存的文件名 镜像名

镜像解压

docker load -i 文件路径/备份文件

Redis

https://hub.docker.com/_/redis?tab=description

启动一个Redis实例

docker run --name some-redis -d redis

从持久性存储开始

docker run --name some-redis -d redis redis-server --appendonly yes

如果启用了持久性,则数据存储在中VOLUME /data,可以与--volumes-from some-volume-container或一起使用-v /docker/host/dir:/data(请参阅docs.docker卷)。

有关Redis Persistence的更多信息,请参见http://redis.io/topics/persistence。

通过连接 redis-cli

docker run -it --network some-network --rm redis redis-cli -h some-redis

配置redis.conf

创建自己的Dockerfile,将上下文中的redis.conf添加到/ data /中,如下所示。

FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

或者,您可以使用docker run选项沿相同的行指定内容。

$ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf

/myredis/conf/包含redis.conf文件的本地目录在哪里。使用此方法意味着您不需要为redis容器创建Dockerfile。


Registry

启动仓库容器

docker run -d -p 5000:5000 registry

检查容器效果

curl 127.0.0.1:5000/v2/_catalog

配置容器权限 daemon.json

{"registry-mirrors": ["https://uhgch4dt.mirror.aliyuncs.com"], 
"insecure-registries": ["ip地址:5000"]}
重启docker

Nginx

https://hub.docker.com/_/nginx

托管一些简单的静态内容

docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

或者,Dockerfile可以使用简单的方法来生成包含必要内容的新图像(这比上面的绑定安装要干净得多):

FROM nginx
COPY static-html-directory /usr/share/nginx/html

将该文件放置在与目录相同的目录中(“ static-html-directory”),运行docker build -t some-content-nginx .,然后启动容器:

$ docker run --name some-nginx -d some-content-nginx

暴露外部端口

docker run --name some-nginx -d -p 8080:80 some-content-nginx

复杂的配置

$ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx

有关nginx配置文件的语法的信息,请参见官方文档(特别是《入门指南》)。


ElasticSearch

https://hub.docker.com/_/elasticsearch?tab=description

在开发模式下运行

创建用户定义的网络(用于连接到连接到同一网络的其他服务(例如,Kibana)):

$ docker network create somenetwork

运行Elasticsearch:

$ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
在生产模式下运行

请参阅使用Docker安装Elasticsearch


Mysql

https://hub.docker.com/_/mysql?tab=description

启动一个MySQL实例:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

例如主从

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v /home/python/mysql_slave/data:/var/lib/mysql -v /home/python/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d mysql:5.7.22

此处some-mysql是您要分配给容器的名称,my-secret-pw是要为MySQL根用户设置的密码,并且tag是指定所需MySQL版本的标记。有关相关标签,请参见上面的列表。

从MySQL命令行客户端连接到MySQL

以下命令启动另一个mysql容器实例,并mysql针对原始mysql容器运行命令行客户端,从而允许您针对数据库实例执行SQL语句:

docker run -it --network some-network --rm mysql mysql -hsome-mysql -uexample-user -p

some-mysql原始mysql容器的名称在哪里(连接到some-networkDocker网络)。

该映像也可用作非Docker或远程实例的客户端:

docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

。。。


PostgreSQL

https://hub.docker.com/_/postgres?tab=description

启动一个postgres实例

$ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

默认postgres用户和数据库在入口点中使用创建initdb


MongoDB

https://hub.docker.com/_/mongo?tab=description

启动mongo服务器实例

docker run --name some-mongo -d mongo:tag

…其中some-mongo是要分配给容器的名称,并且tag是指定所需MongoDB版本的标记。

从另一个Docker容器连接到MongoDB

镜像中的MongoDB服务器在标准MongoDB端口上侦听27017,因此通过Docker网络进行连接与连接到remote相同mongod。以下示例启动另一个MongoDB容器实例,并mongo针对上述示例中的原始MongoDB容器运行命令行客户端,从而允许您对数据库实例执行MongoDB语句:

docker run -it --network some-network --rm mongo mongo --host some-mongo test

。。。


RabbitMQ

https://hub.docker.com/_/rabbitmq

它基于所谓的“节点名称”存储数据,该节点名称默认为主机名,我们应该为每个守护程序指定-h/ --hostname显式指定,这样我们就不会获得随机的主机名,并且可以跟踪我们的数据:

$ docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3

。。。


Fastdfs

开启track容器

将 tracker 运行目录映射到宿主机的 /var/fdfs/tracker目录中

docker run -itd --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker

开启storage容器

  • TRACKER_SERVER=Tracker的ip地址:22122(Tracker的ip地址不要使用127.0.0.1)
  • 我们将 storage 运行目录映射到宿主机的 /var/fdfs/storage目录中
docker run -itd --name storage --network=host -e TRACKER_SERVER=xxx.xxx.x.x:22122 -v /var/fdfs/storage:/var/fdfs /fastdfs storage

就先整理一些常用的,以后再加。。。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!