真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

centos7中如何安裝使用Docker

這篇文章給大家分享的是有關(guān)centos7中如何安裝使用Docker的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

10年積累的網(wǎng)站設(shè)計、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有東風(fēng)免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

安裝(以centos7為例)

安裝
yum install -y docker
啟動
service docker start
驗證安裝
docker version

由于網(wǎng)絡(luò)問題,可能拉取鏡像的時候很慢,可以通過設(shè)置代理等操作加快,或者自建鏡像倉庫等
貼一下我之前有用到倉庫中心:
Docker倉庫
https://hub.docker.com/explore/
國內(nèi):需要登錄
https://cr.console.aliyun.com/#/imageList
https://c.163.com/hub#/m/home/

指令

1.docker pull [options] name[:TAG] 拉取鏡像:不加標(biāo)簽?zāi)J(rèn)獲取latest

2.docker run [options] image[:TAG][COMMAND]
運行鏡像:指令的選項較多,介紹自己平常使用較多的
-d:后臺運行
-p:指定端口端口映射
-P:啟動全部端口映射,需要通過docker ps查看端口映射情況
-v:文件映射
-e:變量賦值
-m:限制容器的內(nèi)存上限
--name:容器命名
--restart=always:容器重啟

3.docker ps:查看運行的容器
-a:查看全部,包括已經(jīng)停止

4.docker exec -it containid bash:進(jìn)入容器內(nèi)部

5.docker stats containid:查看容器的運行情況

6.docker build -t image:tag -f buildfile .:構(gòu)建鏡像
構(gòu)建鏡像:有時候我們需要為存在的鏡像加入新的插件來重新構(gòu)建特有的鏡像,通過編寫Dockerfile來構(gòu)建

貼一個自己構(gòu)建php的鏡像(基于基礎(chǔ)php加入redis,mq等插件)
docker build -t php:5.6-fpm-ext -f ./docker/php/phpDockerfile .

phpDockerfile:

FROM hub.c.163.com/library/php:5.6-fpm
RUN apt-get update && apt-get install -y  libfreetype6-dev  libjpeg62-turbo-dev  libmcrypt-dev  libpng12-dev 
RUN docker-php-ext-install -j$(nproc) iconv mcrypt 
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ 
RUN docker-php-ext-install -j$(nproc) gd
RUN docker-php-ext-install MySQLi
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install zip
RUN curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/2.2.7.tar.gz \
    && tar xfz /tmp/redis.tar.gz \
    && rm -r /tmp/redis.tar.gz \
    && mkdir -p /usr/src/php/ext \
    && mv phpredis-2.2.7 /usr/src/php/ext/redis \
    && docker-php-ext-install redis
COPY ./docker/php/rabbitmq-c-0.4.1.tar.gz  /tmp/rabbitmq-c-0.4.1.tar.gz
RUN tar zxvf /tmp/rabbitmq-c-0.4.1.tar.gz \
    && curl -L -o /tmp/amqp-1.2.0.tgz http://pecl.php.net/get/amqp-1.2.0.tgz \
    && tar zxvf /tmp/amqp-1.2.0.tgz \
    && rm -r /tmp/rabbitmq-c-0.4.1.tar.gz \
    && rm -r /tmp/amqp-1.2.0.tgz \
    && mkdir -p /usr/src/php/ext \
    && mv rabbitmq-c-0.4.1 /usr/src/php/ext/rabbitmq \
    && mv amqp-1.2.0 /usr/src/php/ext/amqp \
    && cd /usr/src/php/ext/rabbitmq \
    && ./configure --prefix=/usr/local/rabbitmq-c-0.4.1 \
    && make && make install \
    && cd /usr/src/php/ext/amqp \
    && docker-php-ext-configure amqp --with-php-config=/usr/local/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c-0.4.1/ \
    && docker-php-ext-install amqp

問題事項

防火墻問題: 在一個容器內(nèi)容調(diào)用寧外一個容器的url出現(xiàn)curl:no route to host問題。 經(jīng)排查:我的centos7防火墻使用了firewalld,firewall的底層是使用iptables進(jìn)行數(shù)據(jù)過濾,建立在iptables之上,這可能會與 Docker 產(chǎn)生沖突。 解決:在firewalld中加入容器需要端口 firewall-cmd --zone=public --add-port=80/tcp --permanent:加入80端口 firewall-cmd --reload:重啟防火墻

權(quán)限問題: 有時候會出現(xiàn)無法寫文件等問題。 解決:(最粗暴的方案) 給文件加入chmod 777 -R * docker加入docker run --privileged=true

JAVA內(nèi)存問題: 使用springboot的時候出現(xiàn)內(nèi)存吃緊,由于沒設(shè)置jvm的內(nèi)存大小默認(rèn)直接使用機器內(nèi)存的1/4作為上限,導(dǎo)致內(nèi)存吃緊,通過加入docker run -m 只是限制容器的內(nèi)存上限,到達(dá)上限之后容器會被停掉,但是不會對jvm的內(nèi)存有影響,所以要解決應(yīng)該在啟動容器的時候加入 java -Xmx256m -Xms64m -Xmn32m。當(dāng)然也可以通過其他方案設(shè)置jvm,看個人喜好。

代碼和鏡像打包問題: docker使用的時候,代碼是否需要和鏡像一起構(gòu)建變成新的鏡像,這種方案可能很美好,構(gòu)建完,哪里有需要拉取,運行就好。但是在實際運用過程,業(yè)務(wù)的代碼是要經(jīng)常變更的,所以我們選取的方案是通過-v映射代碼,鏡像以運行環(huán)境為準(zhǔn),不做代碼打入,這樣變更代碼,只需替換文件,無須重構(gòu)建鏡像。

數(shù)據(jù)庫問題: 在我們的開發(fā)和測試docker也做了mysql數(shù)據(jù)庫,不過看了網(wǎng)絡(luò)的一些介紹,說不建議把數(shù)據(jù)庫使用docker,可能會出現(xiàn)問題。由于我們生產(chǎn)環(huán)境使用了阿里云的數(shù)據(jù)庫,所以暫時沒有發(fā)現(xiàn)相關(guān)的坑。

應(yīng)用問題: docker的容器創(chuàng)建,關(guān)閉等通過什么方式?docker compose,還是shell? 考慮到要給其他客戶安裝加上網(wǎng)絡(luò)問題,我直接使用shell腳本編寫,沒有使用compose。最后貼一些我的非專業(yè)運維的shell腳本。

相關(guān)擴展

1.docker的網(wǎng)絡(luò)介紹,docker有3種網(wǎng)絡(luò)類型:

Bridge(默認(rèn))  Host  None
Bridge:做一個網(wǎng)橋端口映射,容器有獨立ip,端口,
Host:容器內(nèi)網(wǎng)絡(luò)和主機網(wǎng)絡(luò)一樣

2.docker compose 管理多個容器,通過編寫docker-compose.yaml來定義需要容器

安裝:curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
授權(quán):chmod +x /usr/local/bin/docker-compose
查看:docker-compose --version

貼一個docker-compose.yaml

version: '2'
services:
  java:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - "./tmp:/tmp"
      - "./logs:/opt/logs"
    depends_on:
      - mysql

    entrypoint: [ "sh", "-c", "./wait-for-it.sh -h mysql -p 3306 -s -- java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -Dspring.datasource.url=jdbc:mysql://mysql:3306/mq -jar app.jar" ]

  mysql:
    image: daocloud.io/mysql:5.6
    environment:
      MYSQL_DATABASE: mq
      MYSQL_USER: mq
      MYSQL_PASSWORD: 123456
      MYSQL_ROOT_PASSWORD: 123456

3.docker可視化UI控制臺 通過可視化的頁面來控制容器啟停,運行狀態(tài)等。比較流行的有dockerui,Shipyard等,看個人需要。

結(jié)尾

最后啟動容器的shell腳本:

echo "start docker"
service docker start

function start_image {
  if [ $(docker ps  -a | grep -c $1) -ge 1 ]
  then
    echo "container has exits $1 start"
    docker start $1
  else
    echo "$1 run image create container"
    docker run -d  -v /etc/localtime:/etc/localtime:ro --privileged=true --name $1 $2
  fi
}


if [ $(docker images hub.c.163.com/library/mysql:5.6 | grep -c hub.c.163.com/library/mysql) -ge 1 ]
then 
  start_image cloud-mysql-dev \
    "-p 8000:3306 
    -v ${PWD}/data/mysql:/var/lib/mysql 
    -v ${PWD}/docker/mysql:/etc/mysql/conf.d  
    -e MYSQL_ROOT_PASSWORD=123cloud 
    hub.c.163.com/library/mysql:5.6" 
fi


if [ $(docker images hub.c.163.com/library/redis:3 | grep -c hub.c.163.com/library/redis) -ge 1 ]
then 
  start_image cloud-redis-dev \
    "-p 8001:6379 
    -v ${PWD}/data/redis:/data 
    -v ${PWD}/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf 
    hub.c.163.com/library/redis:3
    redis-server /usr/local/etc/redis/redis.conf  
    --appendonly yes "
fi

感謝各位的閱讀!關(guān)于“centos7中如何安裝使用Docker”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


當(dāng)前文章:centos7中如何安裝使用Docker
文章轉(zhuǎn)載:http://weahome.cn/article/ihojss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部