docker 杂记

版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/guo_xl/article/details/88150581

1. docker 安装

step 1: 安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Step 2: 添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Step 3: 更新并安装 Docker-CE

sudo yum makecache fast
sudo yum -y install docker-ce

Step 4: 开启Docker服务

sudo service docker start

2. docker 运行的容器

jenkins

docker run \
 --name jenkins\
 -d \
 --rm \
 -u root \
 -p 8686:8080 \
 -v /data/jenkins/jenkins-data:/var/jenkins_home \
 -v /data/jenkins/run/docker.sock:/var/run/docker.sock \
 -v /data/jenkins/home:/home \
 jenkinsci/blueocean

注意:
–name 制定容器名
-u root 指定用户
-d 后台运行
-v volumn映射 host机器路径:container 路径
-p 端口映射 host机器端口:container 端口

Activemq

docker run --name activemq \
 -d\
 -v /data/activemq:/data/activemq \
 -v /data/activemq/conf:/opt/activemq/conf\
 -v /data/activemq/log:/var/log\
 -p 61616:61616\
 -p  8161:8161\
 webcenter/activemq 

Zookeeper

docker run \
--name zookeeper \
--hostname zookeeper \
--restart always -d \
-p 2181:2181 -p 2888:2888 -p 3888:3888 \
-v /data/zk/conf:/conf \
-v /data/zk/data:/data \
-v /data/zk/datalog:/datalog \
zookeeper

Mysql

docker run -p 3306:3306 \ 
--name mysql \
 -v $PWD/conf:/etc/mysql/conf.d \
 -v $PWD/logs:/logs \
 -v $PWD/data:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=devuser \
 -d mysql:latest
  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
  • -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

Redis

docker run  --name redis \
-p 6379:6379 \
-v /data/redis/data:/data \
--appendonly yes \
-d redis:3.2  

3. docker 如何知道容器里的参数

docker run 命令执行的时候,需要传入参数,有时候不知道参数是什么。
比如 activemq

docker run --name activemq 
 -d
 -v /data/activemq:/data/activemq 
 -v /data/activemq/conf:/opt/activemq/conf
 -v /data/activemq/log:/var/log
 -p 61616:61616
 -p  8161:8161
 webcenter/activemq 

如何知道 activemq里的volumn 是 /data/activemq,又如何知道它有哪些端口

可以先默认的docker run --name myactivemq webcenter/activemq 先执行一个后
执行

docker inspect myactivemq 

就可以从Config节点获取到,如下

"Config": {
            "Hostname": "3d8ee09e3acb",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "1883/tcp": {},
                "5672/tcp": {},
                "61613/tcp": {},
                "61614/tcp": {},
                "61616/tcp": {},
                "8161/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "ACTIVEMQ_CONFIG_DIR=/opt/activemq/conf.tmp",
                "ACTIVEMQ_DATA_DIR=/data/activemq"
            ],
            "Cmd": [
                "/app/run.sh"
            ],
            "ArgsEscaped": true,
            "Image": "webcenter/activemq",
            "Volumes": {
                "/data/activemq": {},
                "/opt/activemq/conf": {},
                "/var/log/activemq": {}
            },
            "WorkingDir": "/opt/activemq",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        }

4. docker 碰到的问题

  • 问题1
docker: Error response from daemon: driver failed programming external connectivity on endpoint jenkins (322630d9843d744f8efa4ce07632025c0105a5933a42e3413ea6d4538b41aeba):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8686 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that nam

解决:
systemctl restart docker

猜你喜欢

转载自blog.csdn.net/guo_xl/article/details/88150581