常用镜像及其使用

相关问题:

a、可在如下网址查找对应的镜像及其版本 https://hub.docker.com,docker pull 如果不加版本,会拉取最新的。个人不建议拉取高版本的镜像,建议拉取稳定版本。
b、执行docker exec -it 容器id /bin/bash命令报如下错:oci runtime error: exec failed: container_linux.go:265: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”。采用docker exec -it 容器id /bin/sh即可
c、需要持久化的数据要将对应的目录挂载出来。

docker安装

依次执行如下命令即可。

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.daocloud.io/docker/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.daocloud.io/docker/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo service docker start
sudo service docker status

docker阿里云镜像配置
1、修改/etc/docker/daemon.json文件配置,没有则新建;

{
	 "registry-mirrors": ["https://72idtxd8.mirror.aliyuncs.com"]
}

2、重启daemon;systemctl daemon-reload
3、重启docker服务:systemctl restart docker

常用docker命令

拉取镜像:docker pull IMAGE_NAME
推送镜像:docker push IMAGE_NAME ,将本地镜像推送到镜像仓库
压缩镜像成tar包:docker save IMAGE_NAME | gzip > FILENAME.tar.gz
加载镜像:docker load --input FILENAME.tar.gz
查看镜像:docker images,eg:docker images python,docker images python:2.7.16-slim-stretch
删除镜像:docker rmi IMAGE_NAME
查看所有容器:docker ps -a
查看正在运行的容器:docker ps
启动容器:docker start CONTAINER_ID
停止容器:docker stop CONTAINER_ID
进入容器:docker exec -it CONTAINER_ID bin/bash或docker exec -it CONTAINER_ID bin/sh
删除为的docker镜像:docker rmi $(docker images | grep “none” | awk ‘{print $3}’)

docker图形化界面

直接运行如下命令,然后访问ip:19000即可

docker run -d --name portainerUI -p 19000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

常用镜像及其使用

1、mysql

docker pull mysql:5.6.35
sudo docker run --name mysql5.6.35 -p 3306:3306 -v /home/data/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.35

说明:
1、–name指定容器名,-p将端口映射出来,-v将数据挂载出来,数据持久化到宿主机。其中/home/data/mysql/为宿主机中的目录,/var/lib/mysql为容器中的数据目录。ps:命令中参数通常都是宿主机在前、容器在后。后续不在解释。
2、该命令只执行一次即可,重启启动时,docker start 容器id即可。

2、zookeeper

docker pull zookeeper:3.5
docker run -d --name zookeeper -p 2181:2181 -t zookeeper:3.5

3、kafka

docker pull wurstmeister/kafka:2.11-2.0.0
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=localhost --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:2.11-2.0.0

ps:启动kafka时,需注意有可能因为zk导致失败,如失败,请删除原来的zk和kafka容器及镜像,按照上述方式执行。

4、redis

docker pull redis:5.0-rc-alpine3.8
docker run --name redis -p 6379:6379 -v /home/data/redis/:/data -d redis:5.0-rc-alpine3.8

5、nginx

日志文件位置:/var/log/nginx
配置文件位置: /etc/nginx
资源存放的位置: /usr/share/nginx/html

在home/data/nginx/etc/nginx/下创建nginx.conf,内容如下

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
	worker_connections  1024;
}
http {
	include       /etc/nginx/mime.types;
	default_type  application/octet-stream;
	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
	          '$status $body_bytes_sent "$http_referer" '
	          '"$http_user_agent" "$http_x_forwarded_for"';
	access_log  /var/log/nginx/access.log  main;
	sendfile        on;
	keepalive_timeout  65;
	server {
		listen       80;
		server_name  localhost;
		location / {
			root   /usr/share/nginx/html;
			index  index.html index.htm;
		}
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   /usr/share/nginx/html;
		}
	}
}

挂载nginx.conf文件需特别注意,文件有问题可能会导致启动失败。

docker pull nginx:1.14
docker run --name nginx -p 80:80 -v /home/data/nginx/var/log/nginx:/var/log/nginx -v /home/data/nginx/etc/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/data/nginx/usr/share/nginx/html:/usr/share/nginx/html -d nginx:1.14

反向代理:在http层增加

upstream myapp1 {
    ip_hash;    
    #ip_hash,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    server ip1:port1;
    server ip2:ip2;
    server ip3:ip3;
}

在server的location中增加

proxy_pass http://myapp1;

访问localhost:80/test会去随机访问http://ipN:portN/test

6、mongoDb

docker pull mongo
docker run --name mongo -p 27018:27017 -v /home/data/mongo/noAuth:/data/db -d mongo:latest
docker run --name mongo_auth -p 27017:27017 -v /home/data/mongo/auth:/data/db -d mongo:latest --auth
docker exec -it mongo_auth mongo admin
//注意以下操作顺序!!!
use admin
db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]});	
db.auth("root","root");
use testMongo;
db.createUser({user:"weizheng",pwd:"weizheng",roles:[{role:"readWrite",db:"testMongo"}]});

备注:高版本的mongo(本人当时用的是4.1.3),发现按此操作后,通过robo-3t连接一直鉴权失败,不确定是什么原因!后来mongo镜像采用的latest(实际版本为4.0.2)然后一切ok。

7、rabbitmq

docker pull rabbitmq:management
    docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 -v /home/data/rabbitmq:/var/rabbitmq/lib rabbitmq:management

docker in docker

将以下3个目录进行挂载即可。
/usr/bin/docker:/usr/bin/docker
/var/run/docker.sock:/var/run/docker.sock
/usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值