01.01 centos7安裝docker


centos7安裝docker

1.把yum包更新到最新(生產環境謹慎)

yum update

2.安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

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

3. 設置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Loaded plugins: fastestmirror

adding repo from: https://download.docker.com/linux/centos/docker-ce.repo

grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo

repo saved to /etc/yum.repos.d/docker-ce.repo


4,可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

yum list docker-ce --showduplicates | sort -r

5.安裝Docker,命令:yum install docker-ce-版本號,我選的是18.03.1.ce-1.el7.centos,如下

yum install docker-ce-18.03.1.ce-1.el7.centos


6. 啟動Docker,命令:

systemctl start docker

然後加入開機啟動,如下:

systemctl start docker

systemctl enable docker


7,驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)

docker version

Client:

Version: 18.03.1-ce

API version: 1.37

Go version: go1.9.5

Git commit: 9ee9f40

Built: Thu Apr 26 07:20:16 2018

OS/Arch: linux/amd64

Experimental: false

Orchestrator: swarm


Server:

Engine:

Version: 18.03.1-ce

API version: 1.37 (minimum version 1.12)

Go version: go1.9.5

Git commit: 9ee9f40

Built: Thu Apr 26 07:23:58 2018

OS/Arch: linux/amd64

Experimental: false


8.docker常用命令

(1)啟動docker

systemctl start docker.service

(2)停止docker

systemctl stop docker


(3)查看當前docker狀態

systemctl status docker

(4) 拉取鏡像

從 docker hub 拉取

https://hub.docker.com/

下面的例子將從Docker Hub 倉庫下載一個 Tomcat 7 版本的服務器鏡像。

docker pull tomcat:7

這是docker默認的公用倉庫,不過缺點是國內下載會比較慢。

(5)鏡像加速 :從 ustc 拉取(建議使用)

vi /etc/docker/daemon.json

請在該配置文件中加入(沒有該文件的話,請先建一個):

{

"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]

}

"registry-mirrors":["https://j8i75uxu.mirror.aliyuncs.com"] 阿里雲


最後,需要重啟 docker 服務

systemctl restart docker

docker search tomcat

(6)刪除鏡像

docker rmi hello-world

docker rmi -f hello-world 強制

docker rmi -f$(docker image -q)

(7)啟動交互式容器

docker run -it --name centos (centos 為鏡像名稱)

docker run -it --name 0f3e07c01...(鏡像ID) -

(8)啟動後臺守護容器

docker run -d --name 0f3e07c01...(鏡像ID)

docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 2;done"

docker logs -t -f 容器id


(9)退出容器 exit

(10)其他

docker inspect 容器id

docker exec -it 容器id /bin/bash

docker exec -it 容器id ls -l /tmp

docker ps 查看運行中的容器

docker start/stop/kill 容器名稱 或id

docker cp 容器id:/tmp/yum.log /root

docker run -it -p 8888:8080 centos

進入交互 docker exec -it 容器id /bin/bash

(11)容器數據卷

命令添加 dockerfile

1.docker run -it -v /myData:/myDockerdata centos

2.dockerfile

from centos

VOLUME ["/myData1","/myData2"]

CMD echo “finished,------success1”

CMD /bin/bash

dockerfile 創建容器


docker build -f /mydocker/Dockerfile -t tanchao/centos .

docker run -it --name dc01 zzyy/centos


volumes-from容器間傳遞共享

docker run -it --name dc02 --volumes-from dc01 tanchao/centos


dockerfile 樣例

保留字

RUN RUN groupadd -r -g 999 redis && useradd -r -g redis -u 999 redis

EXPOSE 端口

CMD / ENTRYPOINT


centos

FROM scratch

ADD centos-7-x86_64-docker.tar.xz /

LABEL org.label-schema.schema-version="1.0" \\

org.label-schema.name="CentOS Base Image" \\

org.label-schema.vendor="CentOS" \\

org.label-schema.license="GPLv2" \\

org.label-schema.build-date="20191001"

CMD ["/bin/bash"]


FROM scratch

ADD centos-7-docker.tar.xz /

LABEL org.label-schema.schema-version = "1.0" \\

org.label-schema.name="CentOS Base Image" \\

org.label-schema.vendor="CentOS" \\

org.label-schema.license="GPLv2" \\

org.label-schema.build-date="20180531"

CMD ["/bin/bash"]


redis

FROM debian:buster-slim


# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added

RUN groupadd -r -g 999 redis && useradd -r -g redis -u 999 redis

# grab gosu for easy step-down from root

# https://github.com/tianon/gosu/releases

ENV GOSU_VERSION 1.11

RUN set -eux; \\

# save list of currently installed packages for later so we can clean up

savedAptMark="$(apt-mark showmanual)"; \\

apt-get update; \\

apt-get install -y --no-install-recommends \\

ca-certificates \\

dirmngr \\

gnupg \\

wget \\

; \\

rm -rf /var/lib/apt/lists/*; \\

\\

dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \\

wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \\

wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \\

\\

# verify the signature

export GNUPGHOME="$(mktemp -d)"; \\

gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \\

gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \\

gpgconf --kill all; \\

rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \\

\\

# clean up fetch dependencies

apt-mark auto '.*' > /dev/null; \\

[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \\

apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \\

\\

chmod +x /usr/local/bin/gosu; \\

# verify that the binary works

gosu --version; \\

gosu nobody true

ENV REDIS_VERSION 4.0.14

ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-4.0.14.tar.gz

ENV REDIS_DOWNLOAD_SHA 1e1e18420a86cfb285933123b04a82e1ebda20bfb0a289472745a087587e93a7

RUN set -eux; \\

\\

savedAptMark="$(apt-mark showmanual)"; \\

apt-get update; \\

apt-get install -y --no-install-recommends \\

ca-certificates \\

wget \\

\\

gcc \\

libc6-dev \\

make \\

; \\

rm -rf /var/lib/apt/lists/*; \\

\\

wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \\

echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c -; \\

mkdir -p /usr/src/redis; \\

tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \\

rm redis.tar.gz; \\

\\

# disable Redis protected mode [1] as it is unnecessary in context of Docker

# (ports are not automatically exposed when running inside Docker, but rather explicitly by specifying -p / -P)

# [1]: https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da

grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h; \\

sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\\1 0!' /usr/src/redis/src/server.h; \\

grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h; \\

# for future reference, we modify this directly in the source instead of just supplying a default configuration flag because apparently "if you specify any argument to redis-server, [it assumes] you are going to specify everything"

# see also https://github.com/docker-library/redis/issues/4#issuecomment-50780840

# (more exactly, this makes sure the default behavior of "save on SIGTERM" stays functional by default)

\\

make -C /usr/src/redis -j "$(nproc)"; \\

make -C /usr/src/redis install; \\

\\

# TODO https://github.com/antirez/redis/pull/3494 (deduplicate "redis-server" copies)

serverMd5="$(md5sum /usr/local/bin/redis-server | cut -d' ' -f1)"; export serverMd5; \\

find /usr/local/bin/redis* -maxdepth 0 \\

-type f -not -name redis-server \\

-exec sh -eux -c ' \\

md5="$(md5sum "$1" | cut -d" " -f1)"; \\

test "$md5" = "$serverMd5"; \\

' -- '{}' ';' \\

-exec ln -svfT 'redis-server' '{}' ';' \\

; \\

\\

rm -r /usr/src/redis; \\

\\

apt-mark auto '.*' > /dev/null; \\

[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \\

apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \\

\\

redis-cli --version; \\

redis-server --version

RUN mkdir /data && chown redis:redis /data

VOLUME /data

WORKDIR /data

COPY docker-entrypoint.sh /usr/local/bin/

ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 6379

CMD ["redis-server"]

編寫

FROM centos

ENV MYPATH /usr/local

WORKDIR $MYPAHT

RUN yum -y install vim

RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH

CMD echo "success ---------ok"

CMD /bin/bash



提交鏡像

1.docker commit -a ='zhuozhe' -m="shuoming" 容器id at xxx/tomcat:1.2

2.push

阿里雲

https://cr.console.aliyun.com/cn-hangzhou/instances/repositories

公網地址 registry.cn-hangzhou.aliyuncs.com/tanchao/mydocker

專有網絡registry-vpc.cn-hangzhou.aliyuncs.com/tanchao/mydocker

經典網絡registry-internal.cn-hangzhou.aliyuncs.com/tanchao/mydocker


分享到:


相關文章: